diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index 24707137b7..854646edfd 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -68,12 +68,13 @@ define [ $scope.chat = {} - + window._ide = ide ide.project_id = $scope.project_id = window.project_id ide.$scope = $scope + ide.referencesSearchManager = new ReferencesSearchManager(ide, $scope) ide.connectionManager = new ConnectionManager(ide, $scope) ide.fileTreeManager = new FileTreeManager(ide, $scope) ide.editorManager = new EditorManager(ide, $scope) @@ -82,7 +83,6 @@ define [ ide.pdfManager = new PdfManager(ide, $scope) ide.permissionsManager = new PermissionsManager(ide, $scope) ide.binaryFilesManager = new BinaryFilesManager(ide, $scope) - ide.referencesSearchManager = new ReferencesSearchManager(ide, $scope) inited = false $scope.$on "project:joined", () -> diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.coffee index 561be166fd..4601928e42 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.coffee @@ -12,6 +12,14 @@ define [ else return null + referenceKeyToAutocompleteEntry = (key) -> + return { + caption: "\\cite{#{key}", + snippet: "\\cite{#{key}", + meta: "reference", + score: 10000 + } + class AutoCompleteManager constructor: (@$scope, @editor) -> @suggestionManager = new SuggestionManager() @@ -47,26 +55,30 @@ define [ getCompletions: (editor, session, pos, prefix, callback) -> if window._ENABLE_REFERENCES_AUTOCOMPLETE != true return callback(null, []) - if references.keys - range = new Range(pos.row, 0, pos.row, pos.column) - lineUpToCursor = editor.getSession().getTextRange(range) - commandFragment = getLastCommandFragment(lineUpToCursor) - if commandFragment and commandFragment.match(/^~?\\cite{\w*/) - result = references.keys.map (key) -> { - caption: "\\cite{#{key}", - snippet: "\\cite{#{key}", - meta: "reference", - score: 10000 - } - result.push { - caption: "\\cite{", - snippet: "\\cite{", - meta: "reference", - score: 11000 - } + + range = new Range(pos.row, 0, pos.row, pos.column) + lineUpToCursor = editor.getSession().getTextRange(range) + commandFragment = getLastCommandFragment(lineUpToCursor) + if commandFragment and commandFragment.match(/^~?\\cite{\w*/) + result = [] + result.push { + caption: "\\cite{", + snippet: "\\cite{", + meta: "reference", + score: 11000 + } + if references.keys and references.keys.length > 0 + references.keys.forEach (key) -> + result.push(referenceKeyToAutocompleteEntry(key)) callback null, result else - callback null, [] + # get keys from the backend + referencesSearch = window?._ide?.referencesSearchManager + if referencesSearch + referencesSearch.getReferenceKeys (keys) => + keys.forEach (key) -> + result.push(referenceKeyToAutocompleteEntry(key)) + callback null, result @editor.completers = [@suggestionManager, SnippetCompleter, ReferencesCompleter] @editor.completers = [SnippetCompleter, ReferencesCompleter] diff --git a/services/web/public/coffee/ide/references-search/ReferencesSearchManager.coffee b/services/web/public/coffee/ide/references-search/ReferencesSearchManager.coffee index c1920c7562..6b80dcbc4d 100644 --- a/services/web/public/coffee/ide/references-search/ReferencesSearchManager.coffee +++ b/services/web/public/coffee/ide/references-search/ReferencesSearchManager.coffee @@ -25,14 +25,13 @@ define [ _csrf: window.csrfToken }, (data) => - console.log(data) setTimeout( ( () -> @getReferenceKeys() ).bind(this), - 100 + 500 ) ) - getReferenceKeys: () -> + getReferenceKeys: (callback) -> if window._ENABLE_REFERENCES_AUTOCOMPLETE != true return $.get( @@ -42,4 +41,6 @@ define [ }, (data) => @$scope.$root._references.keys = data.keys + if callback + callback(data.keys) )