Fetch the keys when autocomplete is triggered on a cite element.

This commit is contained in:
Shane Kilkelly
2016-01-18 10:29:13 +00:00
parent 2a7894f6e4
commit dbbc3bbbbb
3 changed files with 36 additions and 23 deletions
+2 -2
View File
@@ -68,12 +68,13 @@ define [
$scope.chat = {} $scope.chat = {}
window._ide = ide window._ide = ide
ide.project_id = $scope.project_id = window.project_id ide.project_id = $scope.project_id = window.project_id
ide.$scope = $scope ide.$scope = $scope
ide.referencesSearchManager = new ReferencesSearchManager(ide, $scope)
ide.connectionManager = new ConnectionManager(ide, $scope) ide.connectionManager = new ConnectionManager(ide, $scope)
ide.fileTreeManager = new FileTreeManager(ide, $scope) ide.fileTreeManager = new FileTreeManager(ide, $scope)
ide.editorManager = new EditorManager(ide, $scope) ide.editorManager = new EditorManager(ide, $scope)
@@ -82,7 +83,6 @@ define [
ide.pdfManager = new PdfManager(ide, $scope) ide.pdfManager = new PdfManager(ide, $scope)
ide.permissionsManager = new PermissionsManager(ide, $scope) ide.permissionsManager = new PermissionsManager(ide, $scope)
ide.binaryFilesManager = new BinaryFilesManager(ide, $scope) ide.binaryFilesManager = new BinaryFilesManager(ide, $scope)
ide.referencesSearchManager = new ReferencesSearchManager(ide, $scope)
inited = false inited = false
$scope.$on "project:joined", () -> $scope.$on "project:joined", () ->
@@ -12,6 +12,14 @@ define [
else else
return null return null
referenceKeyToAutocompleteEntry = (key) ->
return {
caption: "\\cite{#{key}",
snippet: "\\cite{#{key}",
meta: "reference",
score: 10000
}
class AutoCompleteManager class AutoCompleteManager
constructor: (@$scope, @editor) -> constructor: (@$scope, @editor) ->
@suggestionManager = new SuggestionManager() @suggestionManager = new SuggestionManager()
@@ -47,26 +55,30 @@ define [
getCompletions: (editor, session, pos, prefix, callback) -> getCompletions: (editor, session, pos, prefix, callback) ->
if window._ENABLE_REFERENCES_AUTOCOMPLETE != true if window._ENABLE_REFERENCES_AUTOCOMPLETE != true
return callback(null, []) return callback(null, [])
if references.keys
range = new Range(pos.row, 0, pos.row, pos.column) range = new Range(pos.row, 0, pos.row, pos.column)
lineUpToCursor = editor.getSession().getTextRange(range) lineUpToCursor = editor.getSession().getTextRange(range)
commandFragment = getLastCommandFragment(lineUpToCursor) commandFragment = getLastCommandFragment(lineUpToCursor)
if commandFragment and commandFragment.match(/^~?\\cite{\w*/) if commandFragment and commandFragment.match(/^~?\\cite{\w*/)
result = references.keys.map (key) -> { result = []
caption: "\\cite{#{key}", result.push {
snippet: "\\cite{#{key}", caption: "\\cite{",
meta: "reference", snippet: "\\cite{",
score: 10000 meta: "reference",
} score: 11000
result.push { }
caption: "\\cite{", if references.keys and references.keys.length > 0
snippet: "\\cite{", references.keys.forEach (key) ->
meta: "reference", result.push(referenceKeyToAutocompleteEntry(key))
score: 11000
}
callback null, result callback null, result
else 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 = [@suggestionManager, SnippetCompleter, ReferencesCompleter]
@editor.completers = [SnippetCompleter, ReferencesCompleter] @editor.completers = [SnippetCompleter, ReferencesCompleter]
@@ -25,14 +25,13 @@ define [
_csrf: window.csrfToken _csrf: window.csrfToken
}, },
(data) => (data) =>
console.log(data)
setTimeout( setTimeout(
( () -> @getReferenceKeys() ).bind(this), ( () -> @getReferenceKeys() ).bind(this),
100 500
) )
) )
getReferenceKeys: () -> getReferenceKeys: (callback) ->
if window._ENABLE_REFERENCES_AUTOCOMPLETE != true if window._ENABLE_REFERENCES_AUTOCOMPLETE != true
return return
$.get( $.get(
@@ -42,4 +41,6 @@ define [
}, },
(data) => (data) =>
@$scope.$root._references.keys = data.keys @$scope.$root._references.keys = data.keys
if callback
callback(data.keys)
) )