forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcodeHintIntegration.js
More file actions
1 lines (1 loc) · 1.94 KB
/
Copy pathcodeHintIntegration.js
File metadata and controls
1 lines (1 loc) · 1.94 KB
1
define(function(require,exports,module){const CodeHintManager=require("editor/CodeHintManager"),EditorManager=require("editor/EditorManager"),Metrics=require("utils/Metrics"),Driver=require("./driver"),Helper=require("./helper"),SnippetCursorManager=require("./snippetCursorManager"),CustomSnippetsHandler={hasHints:function(editor,implicitChar){if(null===implicitChar)return!1;try{const needle=Driver.getWordBeforeCursor();if(!needle||!needle.word)return!1;const hasMatch=Helper.hasExactMatchingSnippet(needle.word.toLowerCase(),editor);return hasMatch}catch(e){return!1}},getHints:function(editor,implicitChar){try{const needle=Driver.getWordBeforeCursor();if(!needle||!needle.word)return null;const word=needle.word.toLowerCase();if(!Helper.hasExactMatchingSnippet(word,editor))return null;const matchingSnippets=Helper.getMatchingSnippets(word,editor);if(matchingSnippets.length>0){const customSnippetHints=matchingSnippets.map(snippet=>Helper.createHintItem(snippet.abbreviation,needle.word,snippet.description,snippet.insertionKey));return{hints:customSnippetHints,selectInitial:!0,handleWideResults:!1}}}catch(e){console.log("Error getting custom snippets:",e)}return null},insertHint:function(hint){if(hint&&hint.jquery&&hint.attr("data-isCustomSnippet")){const insertionKey=hint.attr("data-insertion-key"),editor=EditorManager.getActiveEditor();if(editor){const matchedSnippet=Helper.getSnippetByInsertionKey(insertionKey);if(matchedSnippet){const fileCategory=Helper.categorizeFileExtensionForMetrics(matchedSnippet.fileExtension);Metrics.countEvent(Metrics.EVENT_TYPE.EDITOR,"snipt",`use.${fileCategory}`);const wordInfo=Driver.getWordBeforeCursor(),start={line:wordInfo.line,ch:wordInfo.ch+1},end=editor.getCursorPos();return SnippetCursorManager.insertSnippetWithTabStops(editor,matchedSnippet.templateText,start,end),!0}}}return!1}};function init(){CodeHintManager.showHintsAtTop(CustomSnippetsHandler)}exports.init=init,exports._CustomSnippetsHandler=CustomSnippetsHandler});