-
Notifications
You must be signed in to change notification settings - Fork 183
Simple "Hello World" extension
Globex Designs, Inc edited this page Nov 15, 2013
·
26 revisions
Choose Help > Show Extensions Folder, save this file as extensions/user/HelloWorld/main.js
, then restart Brackets to see it in effect.
Also, extension can define their own unit tests. See unittests.js
at the bottom of this page.
/*jslint vars: true, plusplus: true, devel: true, nomen: true, regexp: true, indent: 4, maxerr: 50 */
/*global define, $, brackets, window */
/** Simple extension that adds a "File > Hello World" menu item */
define(function (require, exports, module) {
"use strict";
var CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus");
// Function to run when the menu item is clicked
function handleHelloWorld() {
window.alert("Hello, world!");
}
// First, register a command - a UI-less object associating an id to a handler
var MY_COMMAND_ID = "helloworld.sayhello"; // package-style naming to avoid collisions
CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);
// Then create a menu item bound to the command
// The label of the menu item is the name we gave the command (see above)
var menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);
// We could also add a key binding at the same time:
//menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-H");
// (Note: "Ctrl" is automatically mapped to "Cmd" on Mac)
exports.handleHelloWorld = handleHelloWorld;
});
Extensions should also include a package.json file when ready to share with others.
Looking for more detailed information? Check out How to write extensions, or look up the above APIs in the Brackets source code for complete docs.
Here's a slightly fancier version that changes the text in the editor instead of showing an alert() dialog:
/*jslint vars: true, plusplus: true, devel: true, nomen: true, regexp: true, indent: 4, maxerr: 50 */
/*global define, $, brackets */
/** Simple extension that adds a "File > Hello World" menu item. Inserts "Hello, world!" at cursor pos. */
define(function (require, exports, module) {
"use strict";
var CommandManager = brackets.getModule("command/CommandManager"),
EditorManager = brackets.getModule("editor/EditorManager"),
Menus = brackets.getModule("command/Menus");
// Function to run when the menu item is clicked
function handleHelloWorld() {
var editor = EditorManager.getFocusedEditor();
if (editor) {
var insertionPos = editor.getCursorPos();
editor.document.replaceRange("Hello, world!", insertionPos);
}
}
// First, register a command - a UI-less object associating an id to a handler
var MY_COMMAND_ID = "helloworld.writehello"; // package-style naming to avoid collisions
CommandManager.register("Hello World 2", MY_COMMAND_ID, handleHelloWorld);
// Then create a menu item bound to the command
// The label of the menu item is the name we gave the command (see above)
var menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);
exports.handleHelloWorld = handleHelloWorld;
});
Brackets uses Jasmine to execute unit tests. For more information about Jasmine see http://pivotal.github.io/jasmine/.
define(function (require, exports, module) {
"use strict";
var main = require("main");
describe("Hello World", function () {
it("should expose a handleHelloWorld method", function () {
expect(main.handleHelloWorld).not.toBeNull();
});
});
});