Fix a few issues with ace autocomplete and cursors

This commit is contained in:
James Allen 2014-07-01 16:36:30 +01:00
parent beae4f2424
commit b51af73516
5 changed files with 24 additions and 16 deletions

View file

@ -9,7 +9,7 @@ define [
last_updated: null
open_doc_id: null
opening: true
cursorPosition: null
cursorPosition: {}
gotoLine: null
}

View file

@ -29,19 +29,23 @@ define [
constructor: (@$scope, @editor) ->
@suggestionManager = new SuggestionManager()
insertMatch = Autocomplete::insertMatch
editor = @editor
Autocomplete::insertMatch = (data) ->
pos = editor.getCursorPosition()
range = new Range(pos.row, pos.column, pos.row, pos.column + 1)
nextChar = editor.session.getTextRange(range)
if !Autocomplete::_insertMatch?
# Only override this once since it's global but we may create multiple
# autocomplete handlers
Autocomplete::_insertMatch = Autocomplete::insertMatch
Autocomplete::insertMatch = (data) ->
pos = editor.getCursorPosition()
range = new Range(pos.row, pos.column, pos.row, pos.column + 1)
nextChar = editor.session.getTextRange(range)
# If we are in \begin{it|}, then we need to remove the trailing }
# since it will be adding in with the autocomplete of \begin{item}...
if this.completions.filterText.match(/^\\begin\{/) and nextChar == "}"
editor.session.remove(range)
console.log "INSERT MATCH", this
insertMatch.call editor.completer, data
# If we are in \begin{it|}, then we need to remove the trailing }
# since it will be adding in with the autocomplete of \begin{item}...
if this.completions.filterText.match(/^\\begin\{/) and nextChar == "}"
editor.session.remove(range)
Autocomplete::_insertMatch.call this, data
@$scope.$watch "autoComplete", (autocomplete) =>
console.log "autocomplete change", autocomplete

View file

@ -13,9 +13,9 @@ define [], () ->
@editor.on "changeSelection", () =>
cursor = @editor.getCursorPosition()
console.log "Updating cursor position", cursor
@$scope.$apply () =>
@$scope.cursorPosition = cursor
if @$scope.cursorPosition?
@$scope.cursorPosition = cursor
@$scope.$watch "gotoLine", (value) =>
console.log "Going to line", value

View file

@ -42,7 +42,9 @@ define [
else
@$originalApply(fn);
window.editor = editor = Ace.edit(element.find(".ace-editor-body")[0])
editor = Ace.edit(element.find(".ace-editor-body")[0])
window.editors ||= []
window.editors.push editor
autoCompleteManager = new AutoCompleteManager(scope, editor, element)
spellCheckManager = new SpellCheckManager(scope, editor, element)

View file

@ -47,6 +47,8 @@ define [
range = new Range(pos.row, pos.column, pos.row, pos.column + 1)
nextChar = editor.session.getTextRange(range)
console.log "CALLING OLD"
# If we are in \begin{it|}, then we need to remove the trailing }
# since it will be adding in with the autocomplete of \begin{item}...
if this.completions.filterText.match(/^\\begin\{/) and nextChar == "}"