mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-24 01:06:07 +08:00
51602f69a5
Converted all references of global atom to NylasEnv Temporary rename atom.io find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.io/temporaryAtomIoReplacement/g' atom.config to NylasEnv.config find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.config/NylasEnv.config/g' atom.packages -> NylasEnv.packages atom.commands -> NylasEnv.commands atom.getLoadSettings find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.commands/NylasEnv.commands/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getLoadSettings/NylasEnv.getLoadSettings/g' More common atom methods find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.styles/NylasEnv.styles/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.emitError/NylasEnv.emitError/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.inSpecMode/NylasEnv.inSpecMode/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.inDevMode/NylasEnv.inDevMode/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getWindowType/NylasEnv.getWindowType/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.displayWindow/NylasEnv.displayWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.quit/NylasEnv.quit/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.close/NylasEnv.close/g' More atom method changes find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.keymaps/NylasEnv.keymaps/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.hide/NylasEnv.hide/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getCurrentWindow/NylasEnv.getCurrentWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.menu/NylasEnv.menu/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getConfigDirPath/NylasEnv.getConfigDirPath/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.isMainWindow/NylasEnv.isMainWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.finishUnload/NylasEnv.finishUnload/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.isWorkWindow/NylasEnv.isWorkWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.showSaveDialog/NylasEnv.showSaveDialog/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.append/NylasEnv.append/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.confirm/NylasEnv.confirm/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.clipboard/NylasEnv.clipboard/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getVersion/NylasEnv.getVersion/g' More atom renaming Rename atom methods More atom methods Fix grunt config variable Change atom.cmd to N1.cmd Rename atom.coffee and atom.js to nylas-env.coffee nylas-env.js Fix atom global reference in specs manually Fix atom requires Change engine from atom to nylas got rid of global/nylas-env rename to nylas-win-bootup Fix onWindowPropsChanged to onWindowPropsReceived fix nylas-workspace atom-text-editor to nylas-theme-wrap atom-text-editor -> nylas-theme-wrap Replacing atom keyword AtomWindow -> NylasWindow Replace Atom -> N1 Rename atom items nylas.asar -> atom.asar Remove more atom references Remove 6to5 references Remove license exception for atom
106 lines
3.5 KiB
CoffeeScript
106 lines
3.5 KiB
CoffeeScript
React = require 'react'
|
|
_ = require 'underscore'
|
|
path = require 'path'
|
|
fs = require 'fs'
|
|
{RetinaImg, Flexbox} = require 'nylas-component-kit'
|
|
|
|
DisplayedKeybindings = [
|
|
['application:new-message', 'New Message'],
|
|
['application:reply', 'Reply'],
|
|
['application:reply-all', 'Reply All'],
|
|
['application:forward', 'Forward'],
|
|
['application:focus-search', 'Search'],
|
|
['application:change-category', 'Change Folder / Labels'],
|
|
['core:select-item', 'Select Focused Item'],
|
|
['application:star-item', 'Star Focused Item'],
|
|
]
|
|
|
|
class PreferencesKeymaps extends React.Component
|
|
@displayName: 'PreferencesKeymaps'
|
|
|
|
constructor: (@props) ->
|
|
@state =
|
|
templates: []
|
|
bindings: @_getStateFromKeymaps()
|
|
@_loadTemplates()
|
|
|
|
componentDidMount: =>
|
|
@_disposable = NylasEnv.keymaps.onDidReloadKeymap =>
|
|
@setState(bindings: @_getStateFromKeymaps())
|
|
|
|
componentWillUnmount: =>
|
|
@_disposable.dispose()
|
|
|
|
_loadTemplates: =>
|
|
templatesDir = path.join(NylasEnv.getLoadSettings().resourcePath, 'keymaps', 'templates')
|
|
fs.readdir templatesDir, (err, files) =>
|
|
return unless files and files instanceof Array
|
|
templates = files.filter (filename) =>
|
|
path.extname(filename) is '.cson' or path.extname(filename) is '.json'
|
|
templates = templates.map (filename) =>
|
|
path.parse(filename).name
|
|
@setState(templates: templates)
|
|
|
|
_getStateFromKeymaps: =>
|
|
bindings = {}
|
|
for [command, label] in DisplayedKeybindings
|
|
bindings[command] = NylasEnv.keymaps.findKeyBindings(command: command, target: document.body) || []
|
|
bindings
|
|
|
|
render: =>
|
|
<div className="container-keymaps">
|
|
<Flexbox className="shortcut shortcut-select">
|
|
<div className="shortcut-name">Keyboard shortcut set:</div>
|
|
<div className="shortcut-value">
|
|
<select
|
|
style={margin:0}
|
|
value={@props.config.get('core.keymapTemplate')}
|
|
onChange={ (event) => @props.config.set('core.keymapTemplate', event.target.value) }>
|
|
{ @state.templates.map (template) =>
|
|
<option key={template} value={template}>{template}</option>
|
|
}
|
|
</select>
|
|
</div>
|
|
</Flexbox>
|
|
{@_renderBindings()}
|
|
|
|
<div className="shortcuts-extras">
|
|
<button className="btn" onClick={@_onShowUserKeymaps}>Edit custom shortcuts</button>
|
|
</div>
|
|
</div>
|
|
|
|
_renderBindingFor: ([command, label]) =>
|
|
descriptions = []
|
|
if @state.bindings[command]
|
|
for binding in @state.bindings[command]
|
|
descriptions.push(@_formatKeystrokes(binding.keystrokes))
|
|
|
|
if descriptions.length is 0
|
|
value = 'None'
|
|
else
|
|
value = _.uniq(descriptions).join(', ')
|
|
|
|
<Flexbox className="shortcut" key={command}>
|
|
<div className="shortcut-name">{label}</div>
|
|
<div className="shortcut-value">{value}</div>
|
|
</Flexbox>
|
|
|
|
_renderBindings: =>
|
|
DisplayedKeybindings.map(@_renderBindingFor)
|
|
|
|
_formatKeystrokes: (keystrokes) ->
|
|
if process.platform is 'win32'
|
|
# On Windows, display cmd-shift-c
|
|
return keystrokes
|
|
else
|
|
# On Mac and Linux, display ⌘⇧C
|
|
return keystrokes.replace(/-/gi,'').replace(/cmd/gi, '⌘').replace(/alt/gi, '⌥').replace(/shift/gi, '⇧').replace(/ctrl/gi, '^').toUpperCase()
|
|
|
|
_onShowUserKeymaps: =>
|
|
keymapsFile = NylasEnv.keymaps.getUserKeymapPath()
|
|
if !fs.existsSync(keymapsFile)
|
|
fs.writeSync(fs.openSync(keymapsFile, 'w'), '')
|
|
require('shell').showItemInFolder(keymapsFile)
|
|
|
|
module.exports = PreferencesKeymaps
|