Explorar o código

Fix a few issues with ace autocomplete and cursors

James Allen %!s(int64=12) %!d(string=hai) anos
pai
achega
b51af73516

+ 1 - 1
services/web/public/coffee/app/ide/editor/EditorManager.coffee

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

+ 16 - 12
services/web/public/coffee/app/ide/editor/auto-complete/AutoCompleteManager.coffee

@@ -29,19 +29,23 @@ define [
 		constructor: (@$scope, @editor) ->
 		constructor: (@$scope, @editor) ->
 			@suggestionManager = new SuggestionManager()
 			@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)
-				
-				insertMatch.call editor.completer, data
+					console.log "INSERT MATCH", this
+
+					# 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) =>
 			@$scope.$watch "autoComplete", (autocomplete) =>
 				console.log "autocomplete change", autocomplete
 				console.log "autocomplete change", autocomplete

+ 2 - 2
services/web/public/coffee/app/ide/editor/cursor-position/CursorPositionManager.coffee

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

+ 3 - 1
services/web/public/coffee/app/ide/editor/directives/aceEditor.coffee

@@ -42,7 +42,9 @@ define [
 					else
 					else
 						@$originalApply(fn);
 						@$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)
 				autoCompleteManager   = new AutoCompleteManager(scope, editor, element)
 				spellCheckManager     = new SpellCheckManager(scope, editor, element)
 				spellCheckManager     = new SpellCheckManager(scope, editor, element)

+ 2 - 0
services/web/public/coffee/auto-complete/AutoCompleteManager.coffee

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