From 769875c5d53f873bba91ffca0e8cffa95f7505ac Mon Sep 17 00:00:00 2001 From: Nate Stemen Date: Thu, 3 Aug 2017 16:31:46 +0100 Subject: [PATCH] Adding default autocomplete commands w/ argument options --- .../auto-complete/AutoCompleteManager.coffee | 11 ++- .../StaticSuggestionManager.coffee | 81 +++++++++++++++++++ 2 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/StaticSuggestionManager.coffee 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 c320266a5a..fc164176a3 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 @@ -1,9 +1,10 @@ define [ "ide/editor/directives/aceEditor/auto-complete/SuggestionManager" "ide/editor/directives/aceEditor/auto-complete/SnippetManager" + "ide/editor/directives/aceEditor/auto-complete/StaticSuggestionManager" "ace/ace" "ace/ext-language_tools" -], (SuggestionManager, SnippetManager) -> +], (SuggestionManager, SnippetManager, StaticSuggestionManager) -> Range = ace.require("ace/range").Range aceSnippetManager = ace.require('ace/snippets').snippetManager @@ -44,6 +45,8 @@ define [ SnippetCompleter = new SnippetManager() + StaticCommandCompleter = new StaticSuggestionManager() + labelsManager = @labelsManager LabelsCompleter = getCompletions: (editor, session, pos, prefix, callback) -> @@ -112,7 +115,11 @@ define [ else callback null, result - @editor.completers = [@suggestionManager, SnippetCompleter, ReferencesCompleter, LabelsCompleter] + @editor.completers = [@suggestionManager, + SnippetCompleter, + StaticCommandCompleter, + ReferencesCompleter, + LabelsCompleter] disable: () -> @editor.setOptions({ diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/StaticSuggestionManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/StaticSuggestionManager.coffee new file mode 100644 index 0000000000..df5153a833 --- /dev/null +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/StaticSuggestionManager.coffee @@ -0,0 +1,81 @@ +define () -> + noArgumentCommands = [ + 'item', 'hline', 'lipsum', 'centering', 'noindent', 'textwidth', 'draw', + 'maketitle', 'newpage', 'verb', 'bibliography', 'fi', 'hfill', 'par', + 'in', 'sum', 'cdot', 'alpha', 'ldots', 'else', 'linewidth', 'left', + 'right', 'today', 'clearpage', 'newline', 'endinput', 'mu', + 'tableofcontents', 'vfill', 'bigskip', 'fill', 'cleardoublepage', + ] + singleArgumentCommands = [ + 'chapter', 'usepackage', 'section', 'label', 'textbf', 'subsection', + 'vspace', 'cite', 'textit', 'documentclass', 'includegraphics', 'input', + 'emph','caption', 'ref', 'title', 'author', 'texttt', 'include', + 'hspace', 'bibitem', 'url', 'large', 'subsubsection', 'textsc', 'date', + 'footnote', 'small', 'thanks', 'underline', 'graphicspath', 'pageref', + 'section*', 'subsection*', 'subsubsection*', 'sqrt', 'text', + 'normalsize', 'Large', 'paragraph', 'pagestyle', 'thispagestyle', + 'bibliographystyle', + ] + doubleArgumentCommands = [ + 'newcommand', 'frac', 'renewcommand', 'setlength', 'href', 'newtheorem', + ] + tripleArgumentCommands = [ + 'addcontentsline', 'newacronym', 'multicolumn' + ] + special = ['def', 'let', 'LaTeX'] + + noArgumentCommands = for com in noArgumentCommands + { + caption: "\\#{com}" + snippet: "\\#{com}" + meta: "cmd" + } + singleArgumentCommands = for com in singleArgumentCommands + { + caption: "\\#{com}{}" + snippet: "\\#{com}{$1}" + meta: "cmd" + } + doubleArgumentCommands = for com in doubleArgumentCommands + { + caption: "\\#{com}{}{}" + snippet: "\\#{com}{$1}{$2}" + meta: "cmd" + } + tripleArgumentCommands = for com in tripleArgumentCommands + { + caption: "\\#{com}{}{}{}" + snippet: "\\#{com}{$1}{$2}{$3}" + meta: "cmd" + } + special = for com in special + if com == 'def' + { #should be improved + caption: "\\def{}" + snippet: "\\def$1{$2}" + meta: "cmd" + } + else if com == 'let' + { #should be improved + caption: "\\let" + snippet: "\\let" + meta: "cmd" + } + else if com == 'LaTeX' + { + caption: "\\LaTeX{}" + snippet: "\\LaTeX{}" + meta: "cmd" + } + + staticCommands = [].concat(noArgumentCommands, + singleArgumentCommands, + doubleArgumentCommands, + tripleArgumentCommands, + special) + + class StaticSuggestionManager + getCompletions: (editor, session, pos, prefix, callback) -> + callback null, staticCommands + + return StaticSuggestionManager