Просмотр исходного кода

Merge pull request #71 from sharelatex/ns-package-completer

fixing package completer
Nate Stemen 9 лет назад
Родитель
Сommit
8ef48925c1

+ 8 - 5
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
 			]
 

+ 13 - 13
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',
@@ -30,7 +30,7 @@ define [], () ->
 	]
 	special = ['LaTeX', 'TeX']
 
-	rawCommands = [].concat(
+	rawCommands = ['usepackage'].concat(
 		noArgumentCommands,
 		singleArgumentCommands,
 		doubleArgumentCommands,
@@ -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) ->

+ 41 - 0
services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/PackageManager.coffee

@@ -0,0 +1,41 @@
+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"
+		}
+
+	packageSnippets.push {
+		caption: "\\usepackage{}"
+		snippet: "\\usepackage{}"
+		meta: "pkg"
+		score: 70
+	}
+
+	class PackageManager
+		getCompletions: (editor, session, pos, prefix, callback) ->
+			callback null, packageSnippets
+
+	return PackageManager