diff --git a/docs/customizing-atom.md b/docs/customizing-atom.md index e6ad89305..49d196e50 100644 --- a/docs/customizing-atom.md +++ b/docs/customizing-atom.md @@ -112,14 +112,16 @@ namespaces: `core` and `editor`. ### Quick Personal Hacks -### user.coffee +### init.coffee -When Atom finishes loading, it will evaluate _user.coffee_ in your _~/.atom_ +When Atom finishes loading, it will evaluate _init.coffee_ in your _~/.atom_ directory, giving you a chance to run arbitrary personal CoffeeScript code to make customizations. You have full access to Atom's API from code in this file. If customizations become extensive, consider [creating a package][create-a-package]. +This file can also be named _init.js_ and contain JavaScript code. + ### styles.css If you want to apply quick-and-dirty personal styling changes without creating diff --git a/dot-atom/init.coffee b/dot-atom/init.coffee new file mode 100644 index 000000000..4d10e775b --- /dev/null +++ b/dot-atom/init.coffee @@ -0,0 +1,14 @@ +# Your init script +# +# Atom will evaluate this file each time a new window is opened. It is run +# after packages are loaded/activated and after the previous editor state +# has been restored. +# +# An example hack to make opened Markdown files always be soft wrapped: +# +# path = require 'path' +# +# atom.workspaceView.eachEditorView (editorView) -> +# editor = editorView.getEditor() +# if path.extname(editor.getPath()) is '.md' +# editor.setSoftWrap(true) diff --git a/dot-atom/user.coffee b/dot-atom/user.coffee deleted file mode 100644 index 60880641d..000000000 --- a/dot-atom/user.coffee +++ /dev/null @@ -1 +0,0 @@ -# For more on how to configure atom open `~/github/atom/docs/configuring-and-extending.md` diff --git a/menus/darwin.cson b/menus/darwin.cson index 346523299..4ac239e8a 100644 --- a/menus/darwin.cson +++ b/menus/darwin.cson @@ -9,6 +9,7 @@ { type: 'separator' } { label: 'Preferences...', command: 'application:show-settings' } { label: 'Open Your Config', command: 'application:open-your-config' } + { label: 'Open Your Init Script', command: 'application:open-your-init-script' } { label: 'Open Your Keymap', command: 'application:open-your-keymap' } { label: 'Open Your Snippets', command: 'application:open-your-snippets' } { label: 'Open Your Stylesheet', command: 'application:open-your-stylesheet' } diff --git a/spec/config-spec.coffee b/spec/config-spec.coffee index 77455c5c2..9f8afa408 100644 --- a/spec/config-spec.coffee +++ b/spec/config-spec.coffee @@ -220,6 +220,8 @@ describe "Config", -> expect(fs.existsSync(path.join(atom.config.configDirPath, 'packages'))).toBeTruthy() expect(fs.isFileSync(path.join(atom.config.configDirPath, 'snippets.cson'))).toBeTruthy() expect(fs.isFileSync(path.join(atom.config.configDirPath, 'config.cson'))).toBeTruthy() + expect(fs.isFileSync(path.join(atom.config.configDirPath, 'init.coffee'))).toBeTruthy() + expect(fs.isFileSync(path.join(atom.config.configDirPath, 'styles.css'))).toBeTruthy() describe ".loadUserConfig()", -> beforeEach -> diff --git a/src/atom.coffee b/src/atom.coffee index bc22aa661..9cfffb74a 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -494,8 +494,12 @@ class Atom extends Model shell.beep() if @config.get('core.audioBeep') @workspaceView.trigger 'beep' + getUserInitScriptPath: -> + initScriptPath = fs.resolve(@getConfigDirPath(), 'init', ['js', 'coffee']) + initScriptPath ? path.join(@getConfigDirPath(), 'init.coffee') + requireUserInitScript: -> - if userInitScriptPath = fs.resolve(@getConfigDirPath(), 'user', ['js', 'coffee']) + if userInitScriptPath = @getUserInitScriptPath() try require userInitScriptPath catch error diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 7966b7cc3..149c6f61c 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -189,6 +189,7 @@ class AtomApplication @openPathOnEvent('application:show-settings', 'atom://config') @openPathOnEvent('application:open-your-config', 'atom://.atom/config') + @openPathOnEvent('application:open-your-init-script', 'atom://.atom/init-script') @openPathOnEvent('application:open-your-keymap', 'atom://.atom/keymap') @openPathOnEvent('application:open-your-snippets', 'atom://.atom/snippets') @openPathOnEvent('application:open-your-stylesheet', 'atom://.atom/stylesheet') diff --git a/src/workspace-view.coffee b/src/workspace-view.coffee index 7e94f7721..6b62a7829 100644 --- a/src/workspace-view.coffee +++ b/src/workspace-view.coffee @@ -107,6 +107,7 @@ class WorkspaceView extends View @command 'application:zoom', -> ipc.sendChannel('command', 'application:zoom') @command 'application:bring-all-windows-to-front', -> ipc.sendChannel('command', 'application:bring-all-windows-to-front') @command 'application:open-your-config', -> ipc.sendChannel('command', 'application:open-your-config') + @command 'application:open-your-init-script', -> ipc.sendChannel('command', 'application:open-your-init-script') @command 'application:open-your-keymap', -> ipc.sendChannel('command', 'application:open-your-keymap') @command 'application:open-your-snippets', -> ipc.sendChannel('command', 'application:open-your-snippets') @command 'application:open-your-stylesheet', -> ipc.sendChannel('command', 'application:open-your-stylesheet') diff --git a/src/workspace.coffee b/src/workspace.coffee index eec5d88ed..ec5b8fa87 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -35,6 +35,8 @@ class Workspace extends Model @open(atom.keymap.getUserKeymapPath()) when 'atom://.atom/config' @open(atom.config.getUserConfigPath()) + when 'atom://.atom/init-script' + @open(atom.getUserInitScriptPath()) # Called by the Serializable mixin during deserialization deserializeParams: (params) ->