From 7d5785b98f089a1828f270de0732c89cfa3ed078 Mon Sep 17 00:00:00 2001 From: Nate Stemen Date: Mon, 2 Oct 2017 18:10:53 +0100 Subject: [PATCH 1/3] adding top 100 packages and package tracking --- .../auto-complete/AutoCompleteManager.coffee | 13 +++-- .../auto-complete/CommandManager.coffee | 22 ++++---- .../auto-complete/PackageManager.coffee | 52 +++++++++++++++++++ 3 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.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 24a524b4b6..60241da990 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,10 +1,11 @@ define [ "ide/editor/directives/aceEditor/auto-complete/CommandManager" "ide/editor/directives/aceEditor/auto-complete/EnvironmentManager" + "ide/editor/directives/aceEditor/auto-complete/PackageManager" "ide/editor/directives/aceEditor/auto-complete/Helpers" "ace/ace" "ace/ext-language_tools" -], (CommandManager, EnvironmentManager, Helpers) -> +], (CommandManager, EnvironmentManager, PackageManager, Helpers) -> Range = ace.require("ace/range").Range aceSnippetManager = ace.require('ace/snippets').snippetManager @@ -35,6 +36,7 @@ define [ }) SnippetCompleter = new EnvironmentManager() + PackageCompleter = new PackageManager() Graphics = @graphics Preamble = @preamble @@ -126,10 +128,11 @@ define [ callback null, result @editor.completers = [ - @suggestionManager, - SnippetCompleter, - ReferencesCompleter, - LabelsCompleter, + @suggestionManager + SnippetCompleter + PackageCompleter + ReferencesCompleter + LabelsCompleter GraphicsCompleter ] diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee index fd6cdf7e64..c513f6854d 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee @@ -63,19 +63,19 @@ define [], () -> meta: "cmd" } special = for cmd in special - { - caption: "\\#{cmd}{}" - snippet: "\\#{cmd}{}" - meta: "cmd" - } + { + caption: "\\#{cmd}{}" + snippet: "\\#{cmd}{}" + meta: "cmd" + } staticCommands = [].concat( - noArgumentCommands, - singleArgumentCommands, - doubleArgumentCommands, - tripleArgumentCommands, - special - ) + noArgumentCommands, + singleArgumentCommands, + doubleArgumentCommands, + tripleArgumentCommands, + special + ) class Parser constructor: (@doc, @prefix) -> diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee new file mode 100644 index 0000000000..af8cac861a --- /dev/null +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee @@ -0,0 +1,52 @@ +define () -> + packages = [ + 'inputenc', 'graphicx', 'amsmath', 'geometry', 'amssymb', 'hyperref', + 'babel', 'color', 'xcolor', 'url', 'natbib', 'fontenc', 'fancyhdr', + 'amsfonts', 'booktabs', 'amsthm', 'float', 'tikz', 'caption', + 'setspace', 'multirow', 'array', 'multicol', 'titlesec', 'enumitem', + 'ifthen', 'listings', 'blindtext', 'subcaption', 'times', 'bm', + 'subfigure', 'algorithm', 'fontspec', 'biblatex', 'tabularx', + 'microtype', 'etoolbox', 'parskip', 'calc', 'verbatim', 'mathtools', + 'epsfig', 'wrapfig', 'lipsum', 'cite', 'textcomp', 'longtable', + 'textpos', 'algpseudocode', 'enumerate', 'subfig', 'pdfpages', + 'epstopdf', 'latexsym', 'lmodern', 'pifont', 'ragged2e', 'rotating', + 'dcolumn', 'xltxtra', 'marvosym', 'indentfirst', 'xspace', 'csquotes', + 'xparse', 'changepage', 'soul', 'xunicode', 'comment', 'mathrsfs', + 'tocbibind', 'lastpage', 'algorithm2e', 'pgfplots', 'lineno', + 'graphics', 'algorithmic', 'fullpage', 'mathptmx', 'todonotes', + 'ulem', 'tweaklist', 'moderncvstyleclassic', 'collection', + 'moderncvcompatibility', 'gensymb', 'helvet', 'siunitx', 'adjustbox', + 'placeins', 'colortbl', 'appendix', 'makeidx', 'supertabular', 'ifpdf', + 'framed', 'aliascnt', 'layaureo', 'authblk' + ] + + packageSnippets = for pkg in packages + { + caption: "\\usepackage{#{pkg}}" + snippet: """\\usepackage{#{pkg}}""" + meta: "pkg" + } + + parseLoadedPackages = (text) -> + re = /^\\usepackage(?:\[(.*?)])?.*?{((?:.|\n)*?)}/gm + result = [] + iterations = 0 + while match = re.exec(text) + if match[2] + for pkg in match[2].split(",") + cleaned = pkg.replace(/%.*\n/gm,'').trim() + if cleaned not in result + result.push cleaned + iterations += 1 + if iterations >= 1000 + return result + return result + + class PackageManager + getCompletions: (editor, session, pos, prefix, callback) -> + docText = session.getValue() + loaded = parseLoadedPackages(docText) + # console.log loaded + callback null, packageSnippets + + return PackageManager From 8b4843cf8b655eb8798a4604f0862983f3374292 Mon Sep 17 00:00:00 2001 From: Nate Stemen Date: Tue, 3 Oct 2017 17:32:34 +0100 Subject: [PATCH 2/3] cleaning up usepackage completion --- .../auto-complete/CommandManager.coffee | 4 ++-- .../auto-complete/PackageManager.coffee | 20 ++++++------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee index c513f6854d..88cd3a2e84 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/CommandManager.coffee @@ -12,7 +12,7 @@ define [], () -> 'Lambda', 'Xi', 'Pi', 'Sigma', 'Upsilon', 'Phi', 'Psi', 'Omega' ] singleArgumentCommands = [ - 'chapter', 'usepackage', 'section', 'label', 'textbf', 'subsection', + 'chapter', 'section', 'label', 'textbf', 'subsection', 'vspace', 'cite', 'textit', 'documentclass', 'includegraphics', 'input', 'emph','caption', 'ref', 'title', 'author', 'texttt', 'include', 'hspace', 'bibitem', 'url', 'large', 'subsubsection', 'textsc', 'date', @@ -172,7 +172,7 @@ define [], () -> commands = parser.parse() completions = [] for command in commands - if command[0] not in rawCommands + if command[0] not in rawCommands and command[0] != "usepackage" caption = "\\#{command[0]}" score = if caption == prefix then 99 else 50 snippet = caption diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee index af8cac861a..ac30d5a431 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee @@ -27,20 +27,12 @@ define () -> meta: "pkg" } - parseLoadedPackages = (text) -> - re = /^\\usepackage(?:\[(.*?)])?.*?{((?:.|\n)*?)}/gm - result = [] - iterations = 0 - while match = re.exec(text) - if match[2] - for pkg in match[2].split(",") - cleaned = pkg.replace(/%.*\n/gm,'').trim() - if cleaned not in result - result.push cleaned - iterations += 1 - if iterations >= 1000 - return result - return result + packageSnippets.push { + caption: "\\usepackage{}" + snippet: "\\usepackage{}" + meta: "pkg" + score: 70 + } class PackageManager getCompletions: (editor, session, pos, prefix, callback) -> From 2efb6b69e5014a5c16fe669ea90fb6179e72cebd Mon Sep 17 00:00:00 2001 From: Nate Stemen Date: Fri, 13 Oct 2017 17:42:10 +0100 Subject: [PATCH 3/3] removing comment --- .../aceEditor/auto-complete/PackageManager.coffee | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee index ac30d5a431..c0e1cf5e8f 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee @@ -23,7 +23,7 @@ define () -> packageSnippets = for pkg in packages { caption: "\\usepackage{#{pkg}}" - snippet: """\\usepackage{#{pkg}}""" + snippet: "\\usepackage{#{pkg}}" meta: "pkg" } @@ -31,14 +31,13 @@ define () -> caption: "\\usepackage{}" snippet: "\\usepackage{}" meta: "pkg" - score: 70 + score: 55 } class PackageManager getCompletions: (editor, session, pos, prefix, callback) -> docText = session.getValue() - loaded = parseLoadedPackages(docText) - # console.log loaded + loaded = parseLoadedPackages docText callback null, packageSnippets return PackageManager