From 096255f28333de5748c28645bfaf32a80c216d1e Mon Sep 17 00:00:00 2001 From: Ivan Zuzak Date: Wed, 27 Aug 2014 13:54:55 +0200 Subject: [PATCH] Support built-in context menu items --- spec/context-menu-manager-spec.coffee | 3 ++- src/atom.coffee | 2 +- src/context-menu-manager.coffee | 13 ++++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/spec/context-menu-manager-spec.coffee b/spec/context-menu-manager-spec.coffee index 4ec1c5b8d..960651e03 100644 --- a/spec/context-menu-manager-spec.coffee +++ b/spec/context-menu-manager-spec.coffee @@ -6,7 +6,8 @@ describe "ContextMenuManager", -> [contextMenu] = [] beforeEach -> - contextMenu = new ContextMenuManager + resourcePath = atom.getLoadSettings().resourcePath + contextMenu = new ContextMenuManager({resourcePath}) describe "adding definitions", -> it 'loads', -> diff --git a/src/atom.coffee b/src/atom.coffee index f0ec386d4..0677b262a 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -159,7 +159,7 @@ class Atom extends Model @keymap = @keymaps # Deprecated @packages = new PackageManager({devMode, configDirPath, resourcePath, safeMode}) @themes = new ThemeManager({packageManager: @packages, configDirPath, resourcePath, safeMode}) - @contextMenu = new ContextMenuManager(devMode) + @contextMenu = new ContextMenuManager({resourcePath, devMode}) @menu = new MenuManager({resourcePath}) @clipboard = new Clipboard() diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index fe285775a..aad5ecb23 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -1,6 +1,9 @@ {$} = require './space-pen-extensions' _ = require 'underscore-plus' remote = require 'remote' +path = require 'path' +CSON = require 'season' +fs = require 'fs-plus' # Public: Provides a registry for commands that you'd like to appear in the # context menu. @@ -9,7 +12,7 @@ remote = require 'remote' # global. module.exports = class ContextMenuManager - constructor: (@devMode=false) -> + constructor: ({@resourcePath, @devMode}) -> @definitions = {} @devModeDefinitions = {} @activeElement = null @@ -21,6 +24,14 @@ class ContextMenuManager @commandOptions = x: e.pageX, y: e.pageY ] + atom.keymaps.on 'bundled-keymaps-loaded', => @loadPlatformItems() + + loadPlatformItems: -> + menusDirPath = path.join(@resourcePath, 'menus') + platformMenuPath = fs.resolve(menusDirPath, process.platform, ['cson', 'json']) + map = CSON.readFileSync(platformMenuPath) + atom.contextMenu.add(platformMenuPath, map['context-menu']) + # Public: Creates menu definitions from the object specified by the menu # cson API. #