Skip to content

Commit 2c3fbab

Browse files
committed
feat: add emmet option to edit menu
1 parent c99593f commit 2c3fbab

File tree

8 files changed

+40
-65
lines changed

8 files changed

+40
-65
lines changed

src/brackets.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ define(function (require, exports, module) {
121121
// load modules for later use
122122
require("utils/Global");
123123
require("editor/CSSInlineEditor");
124-
require("preferences/AllPreferences");
125124
require("project/WorkingSetSort");
126125
require("search/QuickOpen");
127126
require("search/QuickOpenHelper");

src/command/Commands.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ define(function (require, exports, module) {
215215
/** Toggles code beautification on save */
216216
exports.EDIT_BEAUTIFY_CODE_ON_SAVE = "edit.beautifyOnSave"; // CodeHintManager.js _startNewSession()
217217

218+
exports.EDIT_EMMET = "edit.emmet"; // HTMLCodeHints CSSCodeHints
219+
218220
/** Opens find dialog */
219221
exports.CMD_FIND = "cmd.find"; // FindReplace.js _launchFind()
220222

@@ -580,4 +582,3 @@ define(function (require, exports, module) {
580582
DeprecationWarning.deprecateConstant(exports, "SORT_WORKINGSET_BY_TYPE", "CMD_WORKINGSET_SORT_BY_TYPE");
581583
DeprecationWarning.deprecateConstant(exports, "SORT_WORKINGSET_AUTO", "CMD_WORKING_SORT_TOGGLE_AUTO");
582584
});
583-

src/command/DefaultMenus.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ define(function (require, exports, module) {
185185
menu.addMenuItem(Commands.SHOW_CODE_HINTS);
186186
menu.addMenuDivider();
187187
menu.addMenuItem(Commands.TOGGLE_CLOSE_BRACKETS);
188+
menu.addMenuItem(Commands.EDIT_EMMET);
189+
188190

189191
/*
190192
* Find menu
@@ -472,4 +474,4 @@ define(function (require, exports, module) {
472474
Menus.getContextMenu(Menus.ContextMenuIds.WORKING_SET_CONTEXT_MENU).on("beforeContextMenuOpen", _setMenuItemsVisible);
473475
Menus.getContextMenu(Menus.ContextMenuIds.PROJECT_MENU).on("beforeContextMenuOpen", _setMenuItemsVisible);
474476
});
475-
});
477+
});

src/document/DocumentCommandHandlers.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,30 @@ define(function (require, exports, module) {
140140
});
141141
EventDispatcher.makeEventDispatcher(exports);
142142

143+
144+
PreferencesManager.definePreference("emmet", "boolean", true, {
145+
description: Strings.DESCRIPTION_EMMET
146+
});
147+
148+
// Register the Emmet toggle command
149+
const EMMET_COMMAND_ID = "edit.emmet";
150+
const emmetCommand = CommandManager.register(Strings.CMD_TOGGLE_EMMET, EMMET_COMMAND_ID, toggleEmmet);
151+
152+
// Set initial state based on the preference
153+
emmetCommand.setChecked(PreferencesManager.get("emmet"));
154+
155+
// Helper function to toggle the Emmet preference
156+
function toggleEmmet() {
157+
PreferencesManager.set("emmet", !PreferencesManager.get("emmet"));
158+
emmetCommand.setChecked(PreferencesManager.get("emmet"));
159+
}
160+
161+
// Listen for any change in the "emmet" preference and update the menu's toggle state
162+
// this is needed because else the menu is not getting updated when the preference is changed
163+
PreferencesManager.on("change", "emmet", function () {
164+
emmetCommand.setChecked(PreferencesManager.get("emmet"));
165+
});
166+
143167
/**
144168
* Event triggered when File Save is cancelled, when prompted to save dirty files
145169
*/

src/extensions/default/CSSCodeHints/main.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ define(function (require, exports, module) {
3636
KeyEvent = brackets.getModule("utils/KeyEvent"),
3737
LiveDevelopment = brackets.getModule("LiveDevelopment/main"),
3838
Metrics = brackets.getModule("utils/Metrics"),
39-
AllPreferences = brackets.getModule("preferences/AllPreferences"),
4039
CSSProperties = require("text!CSSProperties.json"),
4140
properties = JSON.parse(CSSProperties);
4241

@@ -74,7 +73,7 @@ define(function (require, exports, module) {
7473
// the Emmet icon serves as a clickable link that redirects to the MDN page for the property (if available).
7574
// This object follows the structure:
7675
// { PROPERTY_NAME: MDN_URL }
77-
const MDN_PROPERTIES_URLS = {};
76+
const mdnPropertiesUrls = {};
7877

7978
PreferencesManager.definePreference("codehint.CssPropHints", "boolean", true, {
8079
description: Strings.DESCRIPTION_CSS_PROP_HINTS
@@ -477,7 +476,7 @@ define(function (require, exports, module) {
477476
const propertyKey = computedPropertyKeys[resultItem.sourceIndex];
478477
if (properties[propertyKey] && properties[propertyKey].MDN_URL) {
479478
resultItem.MDN_URL = properties[propertyKey].MDN_URL;
480-
MDN_PROPERTIES_URLS[propertyKey] = resultItem.MDN_URL;
479+
mdnPropertiesUrls[propertyKey] = resultItem.MDN_URL;
481480
}
482481
}
483482

@@ -517,8 +516,8 @@ define(function (require, exports, module) {
517516
let $icon = $(`<a class="emmet-css-code-hint" style="text-decoration: none">Emmet</a>`);
518517

519518
// if MDN_URL is available for the property, add the href attribute to redirect to mdn
520-
if (MDN_PROPERTIES_URLS[expandedAbbr]) {
521-
$icon.attr("href", MDN_PROPERTIES_URLS[expandedAbbr]);
519+
if (mdnPropertiesUrls[expandedAbbr]) {
520+
$icon.attr("href", mdnPropertiesUrls[expandedAbbr]);
522521
$icon.attr("title", Strings.DOCS_MORE_LINK_MDN_TITLE);
523522
}
524523

@@ -825,15 +824,15 @@ define(function (require, exports, module) {
825824
* Checks for preference changes, to enable/disable Emmet
826825
*/
827826
function preferenceChanged() {
828-
enabled = PreferencesManager.get(AllPreferences.EMMET);
827+
enabled = PreferencesManager.get("emmet");
829828
}
830829

831830

832831
AppInit.appReady(function () {
833832
var cssPropHints = new CssPropHints();
834833
CodeHintManager.registerHintProvider(cssPropHints, ["css", "scss", "less"], 1);
835834

836-
PreferencesManager.on("change", AllPreferences.EMMET, preferenceChanged);
835+
PreferencesManager.on("change", "emmet", preferenceChanged);
837836
preferenceChanged();
838837

839838
// For unit testing

src/extensions/default/HTMLCodeHints/main.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ define(function (require, exports, module) {
3333
CSSUtils = brackets.getModule("language/CSSUtils"),
3434
StringMatch = brackets.getModule("utils/StringMatch"),
3535
LiveDevelopment = brackets.getModule("LiveDevelopment/main"),
36-
AllPreferences = brackets.getModule("preferences/AllPreferences"),
3736
KeyEvent = brackets.getModule("utils/KeyEvent"),
3837
Metrics = brackets.getModule("utils/Metrics"),
3938
HTMLTags = require("text!HtmlTags.json"),
@@ -468,7 +467,7 @@ define(function (require, exports, module) {
468467
return null;
469468
}
470469

471-
// to show emmet hint when either a single or three exclamation mark(s) is present
470+
// not to show emmet hint when either a single or three exclamation mark(s) is present
472471
if (line.includes('!!') && !line.includes('!!!')) {
473472
return null;
474473
}
@@ -1205,7 +1204,7 @@ define(function (require, exports, module) {
12051204
* Checks for preference changes, to enable/disable Emmet
12061205
*/
12071206
function preferenceChanged() {
1208-
enabled = PreferencesManager.get(AllPreferences.EMMET);
1207+
enabled = PreferencesManager.get("emmet");
12091208
}
12101209

12111210

@@ -1222,11 +1221,11 @@ define(function (require, exports, module) {
12221221
CodeHintManager.registerHintProvider(attrHints, ["html"], 0);
12231222
NewFileContentManager.registerContentProvider(newDocContentProvider, ["html"], 0);
12241223

1225-
PreferencesManager.on("change", AllPreferences.EMMET, preferenceChanged);
1224+
PreferencesManager.on("change", "emmet", preferenceChanged);
12261225
preferenceChanged();
12271226

12281227
var emmetMarkupHints = new EmmetMarkupHints();
1229-
CodeHintManager.registerHintProvider(emmetMarkupHints, ["html", "php", "jsp"], 0);
1228+
CodeHintManager.registerHintProvider(emmetMarkupHints, ["html", "php"], 0);
12301229

12311230
// For unit testing
12321231
exports.emmetHintProvider = emmetMarkupHints;

src/nls/root/strings.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ define({
524524
"CMD_BEAUTIFY_CODE": "Beautify Code",
525525
"CMD_BEAUTIFY_CODE_ON_SAVE": "Beautify Code After Save",
526526
"CMD_AUTO_RENAME_TAGS": "Auto Rename HTML Tags",
527+
"CMD_TOGGLE_EMMET": "Emmet",
527528

528529
// Search menu commands
529530
"FIND_MENU": "Find",

src/preferences/AllPreferences.js

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)