mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-25 01:36:06 +08:00
a3b45cf33a
Summary: Update a few more packages to deactivate properly Miscelaneous fixes Initial commit of new settings package WIP WIP - can load and unload and install / uninstall Click to create new boilerplate package, package updating Test Plan: Run tests Reviewers: evan Reviewed By: evan Differential Revision: https://phab.nylas.com/D1582
71 lines
2.3 KiB
CoffeeScript
71 lines
2.3 KiB
CoffeeScript
fs = require 'fs-plus'
|
|
path = require 'path'
|
|
KeymapManager = require 'atom-keymap'
|
|
CSON = require 'season'
|
|
{jQuery} = require 'space-pen'
|
|
Grim = require 'grim'
|
|
|
|
bundledKeymaps = require('../package.json')?._atomKeymaps
|
|
|
|
KeymapManager::onDidLoadBundledKeymaps = (callback) ->
|
|
@emitter.on 'did-load-bundled-keymaps', callback
|
|
|
|
KeymapManager::loadBundledKeymaps = ->
|
|
keymapsPath = path.join(@resourcePath, 'keymaps')
|
|
if bundledKeymaps?
|
|
for keymapName, keymap of bundledKeymaps
|
|
keymapPath = path.join(keymapsPath, keymapName)
|
|
@add(keymapPath, keymap)
|
|
else
|
|
@loadKeymap(keymapsPath)
|
|
|
|
@emit 'bundled-keymaps-loaded' if Grim.includeDeprecatedAPIs
|
|
@emitter.emit 'did-load-bundled-keymaps'
|
|
|
|
KeymapManager::getUserKeymapPath = ->
|
|
if userKeymapPath = CSON.resolve(path.join(@configDirPath, 'keymap'))
|
|
userKeymapPath
|
|
else
|
|
path.join(@configDirPath, 'keymap.cson')
|
|
|
|
KeymapManager::loadUserKeymap = ->
|
|
userKeymapPath = @getUserKeymapPath()
|
|
return unless fs.isFileSync(userKeymapPath)
|
|
|
|
try
|
|
@loadKeymap(userKeymapPath, watch: true, suppressErrors: true)
|
|
catch error
|
|
if error.message.indexOf('Unable to watch path') > -1
|
|
message = """
|
|
Unable to watch path: `#{path.basename(userKeymapPath)}`. Make sure you
|
|
have permission to read `#{userKeymapPath}`.
|
|
|
|
On linux there are currently problems with watch sizes. See
|
|
[this document][watches] for more info.
|
|
[watches]:https://github.com/atom/atom/blob/master/docs/build-instructions/linux.md#typeerror-unable-to-watch-path
|
|
"""
|
|
console.error(message, {dismissable: true})
|
|
else
|
|
detail = error.path
|
|
stack = error.stack
|
|
atom.notifications.addFatalError(error.message, {detail, stack, dismissable: true})
|
|
|
|
KeymapManager::subscribeToFileReadFailure = ->
|
|
@onDidFailToReadFile (error) =>
|
|
userKeymapPath = @getUserKeymapPath()
|
|
message = "Failed to load `#{userKeymapPath}`"
|
|
|
|
detail = if error.location?
|
|
error.stack
|
|
else
|
|
error.message
|
|
|
|
console.error(message, {detail: detail, dismissable: true})
|
|
|
|
# This enables command handlers registered via jQuery to call
|
|
# `.abortKeyBinding()` on the `jQuery.Event` object passed to the handler.
|
|
jQuery.Event::abortKeyBinding = ->
|
|
@originalEvent?.abortKeyBinding?()
|
|
|
|
module.exports = KeymapManager
|