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

View file

@ -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", () ->

View file

@ -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]

View file

@ -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)
)