forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdriver.js
More file actions
1 lines (1 loc) · 3.08 KB
/
Copy pathdriver.js
File metadata and controls
1 lines (1 loc) · 3.08 KB
1
define(function(require,exports,module){const EditorManager=require("editor/EditorManager"),Metrics=require("utils/Metrics"),Global=require("./global"),Helper=require("./helper"),UIHelper=require("./UIHelper"),SnippetsState=require("./snippetsState"),SnippetsList=require("./snippetsList");function handleSaveBtnClick(){const snippetData=Helper.getSnippetData();if(snippetData.abbreviation&&snippetData.abbreviation.trim()&&snippetData.templateText&&snippetData.templateText.trim())if(shouldAddSnippetToList(snippetData)){Global.SnippetHintsList.push(snippetData),Helper.rebuildOptimizedStructures(),Helper.clearAllInputFields(),Helper.toggleSaveButtonDisability();const fileCategory=Helper.categorizeFileExtensionForMetrics(snippetData.fileExtension);Metrics.countEvent(Metrics.EVENT_TYPE.EDITOR,"snipt",`add.${fileCategory}`),SnippetsState.saveSnippetsToState().catch(function(error){logger.reportError(error,"Custom Snippets: failed to save new snippet to file storage")}),UIHelper.showSnippetListMenu(),SnippetsList.showSnippetsList()}else UIHelper.showDuplicateAbbreviationError(snippetData.abbreviation,!1)}function handleEditSaveBtnClick(){const editedData=Helper.getEditSnippetData(),$editView=$("#custom-snippets-edit"),originalSnippet=$editView.data("originalSnippet"),snippetIndex=$editView.data("snippetIndex");if(editedData.abbreviation&&editedData.abbreviation.trim()&&editedData.templateText&&editedData.templateText.trim()){if(editedData.abbreviation!==originalSnippet.abbreviation){const existingSnippet=Global.SnippetHintsList.find(snippet=>snippet.abbreviation===editedData.abbreviation);if(existingSnippet)return void UIHelper.showDuplicateAbbreviationError(editedData.abbreviation,!0)}-1!==snippetIndex&&(Global.SnippetHintsList[snippetIndex]=editedData,Helper.rebuildOptimizedStructures(),SnippetsState.saveSnippetsToState().catch(function(error){logger.reportError(error,"Custom Snippets: failed to save edited snippet to file storage")}),$editView.removeData("originalSnippet"),$editView.removeData("snippetIndex"),UIHelper.showSnippetListMenu(),SnippetsList.showSnippetsList())}}function handleCancelEditBtnClick(){const $editView=$("#custom-snippets-edit"),originalSnippet=$editView.data("originalSnippet");originalSnippet&&Helper.populateEditForm(originalSnippet),$editView.removeData("originalSnippet"),$editView.removeData("snippetIndex"),UIHelper.showSnippetListMenu(),SnippetsList.showSnippetsList()}function shouldAddSnippetToList(snippetData){const matchedItem=Global.SnippetHintsList.find(snippet=>snippet.abbreviation===snippetData.abbreviation);return!matchedItem}function getWordBeforeCursor(){const editor=EditorManager.getActiveEditor();if(!editor)return;const pos=editor.getCursorPos();let word="",i=pos.ch-1;const breakWordAt=[""," ","\t"];for(;i>=0;){const char=editor.getCharacterAtPosition({line:pos.line,ch:i});if(breakWordAt.includes(char))break;word=char+word,i--}return{word:word,line:pos.line,ch:i}}exports.getWordBeforeCursor=getWordBeforeCursor,exports.handleSaveBtnClick=handleSaveBtnClick,exports.handleEditSaveBtnClick=handleEditSaveBtnClick,exports.handleCancelEditBtnClick=handleCancelEditBtnClick});