mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 14:13:43 +01:00
adding top 100 packages and package tracking
This commit is contained in:
+8
-5
@@ -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
|
||||
]
|
||||
|
||||
|
||||
+11
-11
@@ -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) ->
|
||||
|
||||
+52
@@ -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
|
||||
Reference in New Issue
Block a user