|
@@ -121,27 +121,33 @@ define [
|
|
|
onChange: (change) ->
|
|
onChange: (change) ->
|
|
|
cursorPosition = @editor.getCursorPosition()
|
|
cursorPosition = @editor.getCursorPosition()
|
|
|
end = change.end
|
|
end = change.end
|
|
|
|
|
+ range = new Range(end.row, 0, end.row, end.column)
|
|
|
|
|
+ lineUpToCursor = @editor.getSession().getTextRange(range)
|
|
|
|
|
+ commandFragment = getLastCommandFragment(lineUpToCursor)
|
|
|
|
|
+
|
|
|
|
|
+ # Check if user has backspaced/deleted a highlighted region of text
|
|
|
|
|
+ # and see if that contains a `\label{}`
|
|
|
|
|
+ if change.action == 'remove'
|
|
|
|
|
+ if _.any(change.lines, (line) -> line.match(/\\label\{[^\}\n\\]{0,80}\}/))
|
|
|
|
|
+ @labelsManager.scheduleLoadLabelsFromOpenDoc()
|
|
|
|
|
+ if commandFragment? and commandFragment.length > 2
|
|
|
|
|
+ if commandFragment.startsWith('\\label{')
|
|
|
|
|
+ @labelsManager.scheduleLoadLabelsFromOpenDoc()
|
|
|
|
|
+
|
|
|
# Check that this change was made by us, not a collaborator
|
|
# Check that this change was made by us, not a collaborator
|
|
|
# (Cursor is still one place behind)
|
|
# (Cursor is still one place behind)
|
|
|
# NOTE: this is also the case when a user backspaces over a highlighted region
|
|
# NOTE: this is also the case when a user backspaces over a highlighted region
|
|
|
- if end.row == cursorPosition.row and end.column == cursorPosition.column + 1
|
|
|
|
|
- if change.action == "insert"
|
|
|
|
|
- range = new Range(end.row, 0, end.row, end.column)
|
|
|
|
|
- lineUpToCursor = @editor.getSession().getTextRange(range)
|
|
|
|
|
- commandFragment = getLastCommandFragment(lineUpToCursor)
|
|
|
|
|
-
|
|
|
|
|
- if commandFragment? and commandFragment.length > 2
|
|
|
|
|
- if commandFragment.startsWith('\\label{')
|
|
|
|
|
- @labelsManager.scheduleLoadLabelsFromOpenDoc()
|
|
|
|
|
- setTimeout () =>
|
|
|
|
|
- @editor.execCommand("startAutocomplete")
|
|
|
|
|
- , 0
|
|
|
|
|
- else
|
|
|
|
|
- # Check if user has backspaced/deleted a highlighted region of text
|
|
|
|
|
- # and see if that contains a `\label{}`
|
|
|
|
|
- if change.action == 'remove'
|
|
|
|
|
- if _.any(change.lines, (line) -> line.match(/\\label{.*}/))
|
|
|
|
|
|
|
+ if (
|
|
|
|
|
+ change.action == "insert" and
|
|
|
|
|
+ end.row == cursorPosition.row and
|
|
|
|
|
+ end.column == cursorPosition.column + 1
|
|
|
|
|
+ )
|
|
|
|
|
+ if commandFragment? and commandFragment.length > 2
|
|
|
|
|
+ if commandFragment.startsWith('\\label{')
|
|
|
@labelsManager.scheduleLoadLabelsFromOpenDoc()
|
|
@labelsManager.scheduleLoadLabelsFromOpenDoc()
|
|
|
|
|
+ setTimeout () =>
|
|
|
|
|
+ @editor.execCommand("startAutocomplete")
|
|
|
|
|
+ , 0
|
|
|
|
|
|
|
|
monkeyPatchAutocomplete: () ->
|
|
monkeyPatchAutocomplete: () ->
|
|
|
Autocomplete = ace.require("ace/autocomplete").Autocomplete
|
|
Autocomplete = ace.require("ace/autocomplete").Autocomplete
|