From 06831e555ef40ea2670c8bc2152f80c48a62824f Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 5 Mar 2014 11:05:59 +0000 Subject: [PATCH] Add in some basic snippets --- .../auto-complete/AutoCompleteManager.coffee | 18 ++-- .../coffee/auto-complete/Snippets.coffee | 92 +++++++++++++++++++ .../auto-complete/SuggestionManager.coffee | 1 + .../web/public/coffee/editor/Editor.coffee | 2 - .../coffee/settings/SettingsManager.coffee | 11 +++ 5 files changed, 114 insertions(+), 10 deletions(-) create mode 100644 services/web/public/coffee/auto-complete/Snippets.coffee diff --git a/services/web/public/coffee/auto-complete/AutoCompleteManager.coffee b/services/web/public/coffee/auto-complete/AutoCompleteManager.coffee index dceb5968b2..bbed4b87f9 100644 --- a/services/web/public/coffee/auto-complete/AutoCompleteManager.coffee +++ b/services/web/public/coffee/auto-complete/AutoCompleteManager.coffee @@ -1,9 +1,10 @@ define [ "auto-complete/SuggestionManager" + "auto-complete/Snippets" "ace/autocomplete/util" "ace/range" "ace/ext/language_tools" -], (SuggestionManager, Util) -> +], (SuggestionManager, Snippets, Util) -> Range = require("ace/range").Range Util.retrievePrecedingIdentifier = (text, pos, regex) -> @@ -24,14 +25,18 @@ define [ class AutoCompleteManager constructor: (@ide) -> - @suggestionManager = new SuggestionManager() - @aceEditor = @ide.editor.aceEditor @aceEditor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true }) - @aceEditor.completers = [@suggestionManager] + + SnippetCompleter = + getCompletions: (editor, session, pos, prefix, callback) -> + callback null, Snippets + @suggestionManager = new SuggestionManager() + + @aceEditor.completers = [@suggestionManager, SnippetCompleter] @bindToEditorEvents() @@ -50,10 +55,7 @@ define [ lineUpToCursor = @aceSession.getTextRange(range) commandFragment = getLastCommandFragment(lineUpToCursor) - if commandFragment? + if commandFragment? and commandFragment.length > 2 setTimeout () => @aceEditor.execCommand("startAutocomplete") - $(@aceEditor.completer.popup.container) - .find(".ace_content") - .css("font-size": window.userSettings.fontSize + "px") , 0 diff --git a/services/web/public/coffee/auto-complete/Snippets.coffee b/services/web/public/coffee/auto-complete/Snippets.coffee new file mode 100644 index 0000000000..0cfe74f9d3 --- /dev/null +++ b/services/web/public/coffee/auto-complete/Snippets.coffee @@ -0,0 +1,92 @@ +define () -> + environments = [ + "abstract", + "align", "align*", + "equation", "equation*", + "gather", "gather*", + "mutliline", "multiline*", + "split", + "verbatim" + ] + + snippets = for env in environments + { + caption: "\\begin{#{env}}..." + snippet: """ + \\begin{#{env}} + $1 + \\end{#{env}} + """ + meta: "env" + } + + snippets = snippets.concat [{ + caption: "\\begin{array}..." + snippet: """ + \\begin{array}{${1:cc}} + $2 & $3 \\\\\\\\ + $4 & $5 + \\end{array}" + """ + meta: "env" + }, { + caption: "\\begin{figure}..." + snippet: """ + \\begin{figure} + \\centering + \\includegraphics{$1} + \\caption{${2:Caption}} + \\label{${3:fig:my_label}} + \\end{figure} + """ + meta: "env" + }, { + caption: "\\begin{tabular}..." + snippet: """ + \\begin{tabular}{${1:c|c}} + $2 & $3 \\\\\\\\ + $4 & $5 + \\end{tabular} + """ + meta: "env" + }, { + caption: "\\begin{table}..." + snippet: """ + \\begin{table}[$1] + \\centering + \\begin{tabular}{${2:c|c}} + $3 & $4 \\\\\\\\ + $5 & $6 + \\end{tabular} + \\caption{${7:Caption}} + \\label{${8:tab:my_label}} + \\end{table} + """ + meta: "env" + }, { + caption: "\\begin{list}..." + snippet: """ + \\begin{list} + \\item $1 + \\end{list} + """ + meta: "env" + }, { + caption: "\\begin{enumerate}..." + snippet: """ + \\begin{enumerate} + \\item $1 + \\end{enumerate} + """ + meta: "env" + }, { + caption: "\\begin{frame}..." + snippet: """ + \\begin{frame}{${1:Frame Title}} + $2 + \\end{frame} + """ + meta: "env" + }] + + return snippets \ No newline at end of file diff --git a/services/web/public/coffee/auto-complete/SuggestionManager.coffee b/services/web/public/coffee/auto-complete/SuggestionManager.coffee index 60a7ecc9a2..675509fdf6 100644 --- a/services/web/public/coffee/auto-complete/SuggestionManager.coffee +++ b/services/web/public/coffee/auto-complete/SuggestionManager.coffee @@ -88,6 +88,7 @@ define [ completions.push { caption: caption snippet: snippet + meta: "cmd" } callback null, completions diff --git a/services/web/public/coffee/editor/Editor.coffee b/services/web/public/coffee/editor/Editor.coffee index 15f5307995..7c2da966c9 100644 --- a/services/web/public/coffee/editor/Editor.coffee +++ b/services/web/public/coffee/editor/Editor.coffee @@ -125,12 +125,10 @@ define [ mode = window.userSettings.mode theme = window.userSettings.theme - fontSize = window.userSettings.fontSize chosenKeyBindings = keybindings[mode] aceEditor.setKeyboardHandler(chosenKeyBindings) aceEditor.setTheme("ace/theme/#{window.userSettings.theme}") - document.getElementById('editor').style.fontSize = fontSize+'px' aceEditor.setShowPrintMargin(false) # Prevert Ctrl|Cmd-S from triggering save dialog diff --git a/services/web/public/coffee/settings/SettingsManager.coffee b/services/web/public/coffee/settings/SettingsManager.coffee index fbba05c864..5474263a38 100644 --- a/services/web/public/coffee/settings/SettingsManager.coffee +++ b/services/web/public/coffee/settings/SettingsManager.coffee @@ -17,6 +17,8 @@ define [ new DropboxSettingsManager @ide + @setFontSize() + if @ide? @ide.on "afterJoinProject", (project) => @project = project @@ -102,6 +104,15 @@ define [ $confirm.off 'click' $modal.find('.cancel').click (e)-> $modal.modal('hide') + + setFontSize: () -> + @fontSizeCss = $("