atom-latextools icon indicating copy to clipboard operation
atom-latextools copied to clipboard

Uncaught TypeError: Cannot create property 'reversed' on string ''

Open ekoepplin opened this issue 6 years ago • 12 comments

[Enter steps to reproduce:]

I just wanted, as I did in the past, to put $ $ around some mathematical notation. Basically I can put $ $ and then add some content $A_1$ or I can A_1 and then put $A_1$ using, as usual, SHIFT 4. The second approach returns an error.

Atom: 1.23.1 x64 Electron: 1.6.15 OS: Mac OS X 10.12.5 Thrown From: latextools package 0.8.5

Stack Trace

Uncaught TypeError: Cannot create property 'reversed' on string ''

At /Applications/Atom.app/Contents/Resources/app/src/selection.js:94

TypeError: Cannot create property 'reversed' on string ''
    at Selection.setBufferRange (/Applications/Atom.app/Contents/Resources/app/src/selection.js:94:58)
    at mergeIntersectingSelections (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:2766:31)
    at TextEditor.mergeSelections (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:3191:53)
    at TextEditor.mergeIntersectingSelections (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:3165:42)
    at TextEditor.setSelectedBufferRanges (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:2761:16)
    at TextEditor.setSelectedBufferRange (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:2741:23)
    at SnippetManager.module.exports.SnippetManager.dollarSign (/packages/latextools/lib/snippet-manager.coffee:157:10)
    at /packages/latextools/lib/latextools.coffee:274:23)
    at CommandRegistry.handleCommandEvent (/Applications/Atom.app/Contents/Resources/app/src/command-registry.js:388:36)
    at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/Applications/Atom.app/Contents/Resources/app/node_modules/atom-keymap/lib/keymap-manager.js:621:22)
    at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/Applications/Atom.app/Contents/Resources/app/node_modules/atom-keymap/lib/keymap-manager.js:412:28)
    at WindowEventHandler.handleDocumentKeyEvent (/Applications/Atom.app/Contents/Resources/app/src/window-event-handler.js:108:40)

Commands

     -0:56.8.0 latextools:dollar-sign (input.hidden-input)
 19x -0:55.2.0 core:move-right (input.hidden-input)
  2x -0:51.7.0 core:backspace (input.hidden-input)
     -0:50.7.0 latextools:dollar-sign (input.hidden-input)
     -0:41.4.0 core:backspace (input.hidden-input)
  2x -0:40.8.0 core:move-right (input.hidden-input)
     -0:40 core:backspace (input.hidden-input)
     -0:35 latextools:dollar-sign (input.hidden-input)
     -0:29.6.0 core:cut (input.hidden-input)
     -0:28.8.0 core:paste (input.hidden-input)
     -0:27.5.0 core:backspace (input.hidden-input)
  9x -0:25.5.0 core:move-right (input.hidden-input)
  2x -0:23.6.0 core:move-left (input.hidden-input)
     -0:15.1.0 latextools:ref-cite-keypress (input.hidden-input)
  3x -0:11.3.0 core:backspace (input.hidden-input)
     -0:04.8.0 latextools:dollar-sign (input.hidden-input)

Non-Core Packages

advanced-open-file 0.16.7 
ask-stack 2.2.0 
atom-beautify 0.30.9 
atom-python-run 0.9.5 
auto-encoding 0.7.0 
auto-update-packages 1.0.1 
autocomplete-paths 2.12.1 
autocomplete-python 1.10.5 
browser-plus 0.0.98 
build 0.69.0 
build-rscript 0.6.2 
busy 0.7.0 
busy-signal 1.4.3 
data-atom 0.26.2 
Ensime 0.41.0 
gist 1.1.0 
git-projects 1.17.0 
git-time-machine 1.5.9 
highlight-selected 0.13.1 
Hydrogen 2.1.1 
hyperclick 0.1.5 
intentions 1.1.5 
keybinding-cheatsheet 0.1.1 
kite 0.58.0 
language-latex 1.1.1 
language-markdown 0.25.1 
language-mongodb 0.3.1 
language-pgsql 0.2.3 
language-r 0.4.2 
language-scala 1.1.9 
language-sql-mysql 0.3.1 
latex 0.49.0 
latex-autocomplete 1.1.1 
latextools 0.8.5 
linter 2.2.0 
linter-ui-default 1.6.10 
MagicPython 1.0.12 
markdown-pdf 2.1.0 
markdown-preview-plus 2.4.16 
markdown-writer 2.7.3 
minimap-highlight-selected 4.6.1 
open-html-in-browser 0.2.1 
open-recent 5.0.0 
pandoc 0.2.2 
pdf-view 0.61.0 
platformio-ide-terminal 2.7.0 
pretty-json 1.6.4 
project-manager 3.3.5 
python-debugger 0.2.0 
python-indent 1.1.4 
python-tools 0.6.9 
qolor 0.4.2 
quick-query 0.12.2 
r-exec 0.5.0 
sbt 0.13.0 
scala-format 0.1.8 
script 3.17.3 
sync-settings 0.8.3 
tasks 2.9.1 
todo-show 2.1.0 

ekoepplin avatar Dec 17 '17 11:12 ekoepplin

To me it also happens where doing CMD+L+E to start an environment.

nicola-gigante avatar Dec 19 '17 03:12 nicola-gigante

+1: Similar thing (quotes) started happening to me on OSX Sierra (10.12.6) using Atom 1.23.1 x86 with LatexTools 0.8.5.

Steps to reproduce:

  • Save document as tex file
  • Type text, select word(s), and type "
  • Error is triggered, linking to this issue.

Happy to provide more details if needed (eg package-list, console log, etc).

sheljohn avatar Dec 24 '17 03:12 sheljohn

Same here. Not sure how to fix that

gmendesb avatar Jan 24 '18 14:01 gmendesb

I can confirm that the bug is still there. I am using Atom 1.23.3 on High Sierra 10.13.3. It affects the dollars $, as well as single quote ', double quote ", two single quotes '' and the backtick `. It is getting frustrating now...any ideas on how to fix it?

contefranz avatar Feb 21 '18 07:02 contefranz

This bug is nearly a showstopper for the plugin and has been open for months. It's getting embarrassing on top of frustrating...

nicola-gigante avatar Feb 21 '18 07:02 nicola-gigante

It is the same for Atom 1.24.0, I've tried reinstalling, however the problem is still there.. and it's been there since late 2017... really frustrating..

af-ayala avatar Feb 21 '18 09:02 af-ayala

Still here in April, with Atom 1.25.0. Really frustrating!

findlayjy avatar Apr 02 '18 14:04 findlayjy

Still here in May, with Atom 1.26. Is this plugin maintained at all? If authors do not care about fixing embarrassing bugs they could just flag the package as unmaintained or deprecated so we can move on.

nicola-gigante avatar May 18 '18 09:05 nicola-gigante

I found a workaround.

  • Go to: settings (mac:cmd+, Windows-Linux:Ctrl+,) > Open Config Folder (in the left panel)
  • open: packages/latextools/lib/snippet-manager.coffee

case 1: for the $-matcher, find and comment the code:

    if text =  te.getSelect edText()
      text = text.replace(/\\/g, "\\\\")
      range = te.getSelectedBufferRange()
      te.setSelectedBufferRange(range, '')
      @snippetService.insertSnippet("\$#{text}\$")
      return

replace it by:

    range = te.getSelectedBufferRange()
    text = te.getTextInBufferRange(range)
    text = text.replace(/\\/g, "\\\\")
    if text
      @snippetService.insertSnippet("\$#{text}\$")
      return

case 2: for the ' and "-matcher, find and comment the code:

    if text =  te.getSelectedText()
      text = text.replace(/\\/g, "\\\\")
      range = te.getSelectedBufferRange()
      te.setSelectedBufferRange(range, '')
      # Use snippet to leave selection on (same as ST)
      @snippetService.insertSnippet("#{left}${1:#{text}}#{right}")
      return

replace it by:

    range = te.getSelectedBufferRange()
    text = te.getTextInBufferRange(range)
    text = text.replace(/\\/g, "\\\\")
    if text
      @snippetService.insertSnippet("#{left}${1:#{text}}#{right}")
      return

Caveats

any update of the latextools package will delete your editings

oaroldan avatar May 28 '18 14:05 oaroldan

What a hero! This is working for me, but I had issues with indenting to start with, so make sure it all matches up if you're having trouble.

Thank you, oaroldan! <3

findlayjy avatar May 28 '18 15:05 findlayjy

@findlayjy Nice to know that it helped you! Thanks for let me know about the indenting issue (I updated my post to include this)

oaroldan avatar May 28 '18 15:05 oaroldan

@oaroldan Thank you so much! It worked for me too! Shall we close the issue or leave it open hoping that someone fix this thing once and for all?

contefranz avatar May 29 '18 07:05 contefranz