From ed79b344fb3d62a204797dcfad9cfddc2d389a41 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 30 Nov 2013 10:40:28 +0000 Subject: [PATCH 0001/1256] Use the newly-extracted flycheck-hdevtools package --- init-haskell.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init-haskell.el b/init-haskell.el index ebc75b286c..528a85252b 100644 --- a/init-haskell.el +++ b/init-haskell.el @@ -1,5 +1,9 @@ (require-package 'haskell-mode) +(require-package 'flycheck-hdevtools) +(after-load 'haskell-mode + (require 'flycheck-hdevtools)) + (dolist (hook '(haskell-mode-hook inferior-haskell-mode-hook)) (add-hook hook 'turn-on-haskell-doc-mode)) From 02f9d83de7b8f1c8b4f67d6be631b762da635a18 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 30 Nov 2013 20:38:19 +0000 Subject: [PATCH 0002/1256] Load flycheck-hdevtools after flycheck, not after haskell-mode --- init-haskell.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-haskell.el b/init-haskell.el index 528a85252b..a953e3ea74 100644 --- a/init-haskell.el +++ b/init-haskell.el @@ -1,7 +1,7 @@ (require-package 'haskell-mode) (require-package 'flycheck-hdevtools) -(after-load 'haskell-mode +(after-load 'flycheck (require 'flycheck-hdevtools)) (dolist (hook '(haskell-mode-hook inferior-haskell-mode-hook)) From d95f6d76b11cdd232f963d50f60f6407e4236b60 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 1 Dec 2013 12:55:58 +0000 Subject: [PATCH 0003/1256] Note method for updating packages --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 5308663b69..17b0205607 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,13 @@ git clone https://github.com/purcell/emacs.d.git ~/.emacs.d Upon starting up Emacs for the first time, further third-party packages will be automatically downloaded and installed. +## Updates + +Update the config with `git pull`. You'll probably also want/need to update +the third-party packages regularly too: + +M-x package-list-packages, then U followed by x. + ## Adding your own customization To add your own customization, use M-x customize and/or From 7ef22b4466cdd28aea7660618146609da2d071ac Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 10 Dec 2013 16:14:25 +0000 Subject: [PATCH 0004/1256] Move .el files into lisp subdirectory This avoids putting ~/.emacs.d on the load-path, which is apparently deprecated, and now triggers a warning on start-up in recent Emacs snapshots. --- README.md | 2 +- init.el | 4 +++- init-auto-complete.el => lisp/init-auto-complete.el | 0 init-benchmarking.el => lisp/init-benchmarking.el | 0 init-clojure.el => lisp/init-clojure.el | 0 init-common-lisp.el => lisp/init-common-lisp.el | 0 init-compat.el => lisp/init-compat.el | 0 init-crontab.el => lisp/init-crontab.el | 0 init-css.el => lisp/init-css.el | 0 init-csv.el => lisp/init-csv.el | 0 init-darcs.el => lisp/init-darcs.el | 0 init-dired.el => lisp/init-dired.el | 0 init-editing-utils.el => lisp/init-editing-utils.el | 0 init-elpa.el => lisp/init-elpa.el | 0 init-erlang.el => lisp/init-erlang.el | 0 init-exec-path.el => lisp/init-exec-path.el | 0 init-flycheck.el => lisp/init-flycheck.el | 0 init-flyspell.el => lisp/init-flyspell.el | 0 init-fonts.el => lisp/init-fonts.el | 0 init-frame-hooks.el => lisp/init-frame-hooks.el | 0 init-git.el => lisp/init-git.el | 0 init-gui-frames.el => lisp/init-gui-frames.el | 0 init-haml.el => lisp/init-haml.el | 0 init-haskell.el => lisp/init-haskell.el | 0 init-hippie-expand.el => lisp/init-hippie-expand.el | 0 init-ibuffer.el => lisp/init-ibuffer.el | 0 init-ido.el => lisp/init-ido.el | 0 init-isearch.el => lisp/init-isearch.el | 0 init-javascript.el => lisp/init-javascript.el | 0 init-lisp.el => lisp/init-lisp.el | 0 init-locales.el => lisp/init-locales.el | 0 init-markdown.el => lisp/init-markdown.el | 0 init-marmalade.el => lisp/init-marmalade.el | 0 init-maxframe.el => lisp/init-maxframe.el | 0 init-misc.el => lisp/init-misc.el | 0 init-mmm.el => lisp/init-mmm.el | 0 init-nxml.el => lisp/init-nxml.el | 0 init-org.el => lisp/init-org.el | 0 init-osx-keys.el => lisp/init-osx-keys.el | 0 init-paredit.el => lisp/init-paredit.el | 0 init-php.el => lisp/init-php.el | 0 init-proxies.el => lisp/init-proxies.el | 0 init-python-mode.el => lisp/init-python-mode.el | 0 init-rails.el => lisp/init-rails.el | 0 init-recentf.el => lisp/init-recentf.el | 0 init-ruby-mode.el => lisp/init-ruby-mode.el | 0 init-sessions.el => lisp/init-sessions.el | 0 init-site-lisp.el => lisp/init-site-lisp.el | 0 init-slime.el => lisp/init-slime.el | 0 init-spelling.el => lisp/init-spelling.el | 0 init-sql.el => lisp/init-sql.el | 0 init-textile.el => lisp/init-textile.el | 0 init-themes.el => lisp/init-themes.el | 0 init-uniquify.el => lisp/init-uniquify.el | 0 init-utils.el => lisp/init-utils.el | 0 init-windows.el => lisp/init-windows.el | 0 init-xterm.el => lisp/init-xterm.el | 0 57 files changed, 4 insertions(+), 2 deletions(-) rename init-auto-complete.el => lisp/init-auto-complete.el (100%) rename init-benchmarking.el => lisp/init-benchmarking.el (100%) rename init-clojure.el => lisp/init-clojure.el (100%) rename init-common-lisp.el => lisp/init-common-lisp.el (100%) rename init-compat.el => lisp/init-compat.el (100%) rename init-crontab.el => lisp/init-crontab.el (100%) rename init-css.el => lisp/init-css.el (100%) rename init-csv.el => lisp/init-csv.el (100%) rename init-darcs.el => lisp/init-darcs.el (100%) rename init-dired.el => lisp/init-dired.el (100%) rename init-editing-utils.el => lisp/init-editing-utils.el (100%) rename init-elpa.el => lisp/init-elpa.el (100%) rename init-erlang.el => lisp/init-erlang.el (100%) rename init-exec-path.el => lisp/init-exec-path.el (100%) rename init-flycheck.el => lisp/init-flycheck.el (100%) rename init-flyspell.el => lisp/init-flyspell.el (100%) rename init-fonts.el => lisp/init-fonts.el (100%) rename init-frame-hooks.el => lisp/init-frame-hooks.el (100%) rename init-git.el => lisp/init-git.el (100%) rename init-gui-frames.el => lisp/init-gui-frames.el (100%) rename init-haml.el => lisp/init-haml.el (100%) rename init-haskell.el => lisp/init-haskell.el (100%) rename init-hippie-expand.el => lisp/init-hippie-expand.el (100%) rename init-ibuffer.el => lisp/init-ibuffer.el (100%) rename init-ido.el => lisp/init-ido.el (100%) rename init-isearch.el => lisp/init-isearch.el (100%) rename init-javascript.el => lisp/init-javascript.el (100%) rename init-lisp.el => lisp/init-lisp.el (100%) rename init-locales.el => lisp/init-locales.el (100%) rename init-markdown.el => lisp/init-markdown.el (100%) rename init-marmalade.el => lisp/init-marmalade.el (100%) rename init-maxframe.el => lisp/init-maxframe.el (100%) rename init-misc.el => lisp/init-misc.el (100%) rename init-mmm.el => lisp/init-mmm.el (100%) rename init-nxml.el => lisp/init-nxml.el (100%) rename init-org.el => lisp/init-org.el (100%) rename init-osx-keys.el => lisp/init-osx-keys.el (100%) rename init-paredit.el => lisp/init-paredit.el (100%) rename init-php.el => lisp/init-php.el (100%) rename init-proxies.el => lisp/init-proxies.el (100%) rename init-python-mode.el => lisp/init-python-mode.el (100%) rename init-rails.el => lisp/init-rails.el (100%) rename init-recentf.el => lisp/init-recentf.el (100%) rename init-ruby-mode.el => lisp/init-ruby-mode.el (100%) rename init-sessions.el => lisp/init-sessions.el (100%) rename init-site-lisp.el => lisp/init-site-lisp.el (100%) rename init-slime.el => lisp/init-slime.el (100%) rename init-spelling.el => lisp/init-spelling.el (100%) rename init-sql.el => lisp/init-sql.el (100%) rename init-textile.el => lisp/init-textile.el (100%) rename init-themes.el => lisp/init-themes.el (100%) rename init-uniquify.el => lisp/init-uniquify.el (100%) rename init-utils.el => lisp/init-utils.el (100%) rename init-windows.el => lisp/init-windows.el (100%) rename init-xterm.el => lisp/init-xterm.el (100%) diff --git a/README.md b/README.md index 17b0205607..a03c2086c0 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ the third-party packages regularly too: ## Adding your own customization To add your own customization, use M-x customize and/or -create a file `~/.emacs.d/init-local.el` which looks like this: +create a file `~/.emacs.d/lisp/init-local.el` which looks like this: ```el ... your code here ... diff --git a/init.el b/init.el index b947cd0f46..011d80e35b 100644 --- a/init.el +++ b/init.el @@ -1,7 +1,7 @@ ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. -(add-to-list 'load-path user-emacs-directory) +(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) (require 'init-benchmarking) ;; Measure startup time (defconst *spell-check-support-enabled* nil) ;; Enable with t if you prefer @@ -111,6 +111,8 @@ ;;---------------------------------------------------------------------------- ;; Allow users to provide an optional "init-local" containing personal settings ;;---------------------------------------------------------------------------- +(when (file-exists-p (expand-file-name "init-local.el" user-emacs-directory)) + (error "Please move init-local.el to ~/.emacs.d/lisp")) (require 'init-local nil t) diff --git a/init-auto-complete.el b/lisp/init-auto-complete.el similarity index 100% rename from init-auto-complete.el rename to lisp/init-auto-complete.el diff --git a/init-benchmarking.el b/lisp/init-benchmarking.el similarity index 100% rename from init-benchmarking.el rename to lisp/init-benchmarking.el diff --git a/init-clojure.el b/lisp/init-clojure.el similarity index 100% rename from init-clojure.el rename to lisp/init-clojure.el diff --git a/init-common-lisp.el b/lisp/init-common-lisp.el similarity index 100% rename from init-common-lisp.el rename to lisp/init-common-lisp.el diff --git a/init-compat.el b/lisp/init-compat.el similarity index 100% rename from init-compat.el rename to lisp/init-compat.el diff --git a/init-crontab.el b/lisp/init-crontab.el similarity index 100% rename from init-crontab.el rename to lisp/init-crontab.el diff --git a/init-css.el b/lisp/init-css.el similarity index 100% rename from init-css.el rename to lisp/init-css.el diff --git a/init-csv.el b/lisp/init-csv.el similarity index 100% rename from init-csv.el rename to lisp/init-csv.el diff --git a/init-darcs.el b/lisp/init-darcs.el similarity index 100% rename from init-darcs.el rename to lisp/init-darcs.el diff --git a/init-dired.el b/lisp/init-dired.el similarity index 100% rename from init-dired.el rename to lisp/init-dired.el diff --git a/init-editing-utils.el b/lisp/init-editing-utils.el similarity index 100% rename from init-editing-utils.el rename to lisp/init-editing-utils.el diff --git a/init-elpa.el b/lisp/init-elpa.el similarity index 100% rename from init-elpa.el rename to lisp/init-elpa.el diff --git a/init-erlang.el b/lisp/init-erlang.el similarity index 100% rename from init-erlang.el rename to lisp/init-erlang.el diff --git a/init-exec-path.el b/lisp/init-exec-path.el similarity index 100% rename from init-exec-path.el rename to lisp/init-exec-path.el diff --git a/init-flycheck.el b/lisp/init-flycheck.el similarity index 100% rename from init-flycheck.el rename to lisp/init-flycheck.el diff --git a/init-flyspell.el b/lisp/init-flyspell.el similarity index 100% rename from init-flyspell.el rename to lisp/init-flyspell.el diff --git a/init-fonts.el b/lisp/init-fonts.el similarity index 100% rename from init-fonts.el rename to lisp/init-fonts.el diff --git a/init-frame-hooks.el b/lisp/init-frame-hooks.el similarity index 100% rename from init-frame-hooks.el rename to lisp/init-frame-hooks.el diff --git a/init-git.el b/lisp/init-git.el similarity index 100% rename from init-git.el rename to lisp/init-git.el diff --git a/init-gui-frames.el b/lisp/init-gui-frames.el similarity index 100% rename from init-gui-frames.el rename to lisp/init-gui-frames.el diff --git a/init-haml.el b/lisp/init-haml.el similarity index 100% rename from init-haml.el rename to lisp/init-haml.el diff --git a/init-haskell.el b/lisp/init-haskell.el similarity index 100% rename from init-haskell.el rename to lisp/init-haskell.el diff --git a/init-hippie-expand.el b/lisp/init-hippie-expand.el similarity index 100% rename from init-hippie-expand.el rename to lisp/init-hippie-expand.el diff --git a/init-ibuffer.el b/lisp/init-ibuffer.el similarity index 100% rename from init-ibuffer.el rename to lisp/init-ibuffer.el diff --git a/init-ido.el b/lisp/init-ido.el similarity index 100% rename from init-ido.el rename to lisp/init-ido.el diff --git a/init-isearch.el b/lisp/init-isearch.el similarity index 100% rename from init-isearch.el rename to lisp/init-isearch.el diff --git a/init-javascript.el b/lisp/init-javascript.el similarity index 100% rename from init-javascript.el rename to lisp/init-javascript.el diff --git a/init-lisp.el b/lisp/init-lisp.el similarity index 100% rename from init-lisp.el rename to lisp/init-lisp.el diff --git a/init-locales.el b/lisp/init-locales.el similarity index 100% rename from init-locales.el rename to lisp/init-locales.el diff --git a/init-markdown.el b/lisp/init-markdown.el similarity index 100% rename from init-markdown.el rename to lisp/init-markdown.el diff --git a/init-marmalade.el b/lisp/init-marmalade.el similarity index 100% rename from init-marmalade.el rename to lisp/init-marmalade.el diff --git a/init-maxframe.el b/lisp/init-maxframe.el similarity index 100% rename from init-maxframe.el rename to lisp/init-maxframe.el diff --git a/init-misc.el b/lisp/init-misc.el similarity index 100% rename from init-misc.el rename to lisp/init-misc.el diff --git a/init-mmm.el b/lisp/init-mmm.el similarity index 100% rename from init-mmm.el rename to lisp/init-mmm.el diff --git a/init-nxml.el b/lisp/init-nxml.el similarity index 100% rename from init-nxml.el rename to lisp/init-nxml.el diff --git a/init-org.el b/lisp/init-org.el similarity index 100% rename from init-org.el rename to lisp/init-org.el diff --git a/init-osx-keys.el b/lisp/init-osx-keys.el similarity index 100% rename from init-osx-keys.el rename to lisp/init-osx-keys.el diff --git a/init-paredit.el b/lisp/init-paredit.el similarity index 100% rename from init-paredit.el rename to lisp/init-paredit.el diff --git a/init-php.el b/lisp/init-php.el similarity index 100% rename from init-php.el rename to lisp/init-php.el diff --git a/init-proxies.el b/lisp/init-proxies.el similarity index 100% rename from init-proxies.el rename to lisp/init-proxies.el diff --git a/init-python-mode.el b/lisp/init-python-mode.el similarity index 100% rename from init-python-mode.el rename to lisp/init-python-mode.el diff --git a/init-rails.el b/lisp/init-rails.el similarity index 100% rename from init-rails.el rename to lisp/init-rails.el diff --git a/init-recentf.el b/lisp/init-recentf.el similarity index 100% rename from init-recentf.el rename to lisp/init-recentf.el diff --git a/init-ruby-mode.el b/lisp/init-ruby-mode.el similarity index 100% rename from init-ruby-mode.el rename to lisp/init-ruby-mode.el diff --git a/init-sessions.el b/lisp/init-sessions.el similarity index 100% rename from init-sessions.el rename to lisp/init-sessions.el diff --git a/init-site-lisp.el b/lisp/init-site-lisp.el similarity index 100% rename from init-site-lisp.el rename to lisp/init-site-lisp.el diff --git a/init-slime.el b/lisp/init-slime.el similarity index 100% rename from init-slime.el rename to lisp/init-slime.el diff --git a/init-spelling.el b/lisp/init-spelling.el similarity index 100% rename from init-spelling.el rename to lisp/init-spelling.el diff --git a/init-sql.el b/lisp/init-sql.el similarity index 100% rename from init-sql.el rename to lisp/init-sql.el diff --git a/init-textile.el b/lisp/init-textile.el similarity index 100% rename from init-textile.el rename to lisp/init-textile.el diff --git a/init-themes.el b/lisp/init-themes.el similarity index 100% rename from init-themes.el rename to lisp/init-themes.el diff --git a/init-uniquify.el b/lisp/init-uniquify.el similarity index 100% rename from init-uniquify.el rename to lisp/init-uniquify.el diff --git a/init-utils.el b/lisp/init-utils.el similarity index 100% rename from init-utils.el rename to lisp/init-utils.el diff --git a/init-windows.el b/lisp/init-windows.el similarity index 100% rename from init-windows.el rename to lisp/init-windows.el diff --git a/init-xterm.el b/lisp/init-xterm.el similarity index 100% rename from init-xterm.el rename to lisp/init-xterm.el From 26e78104f812c3e247d96fa9d164b4e44900ff0f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Dec 2013 11:47:35 +0000 Subject: [PATCH 0005/1256] Auto-save the desktop every 10 minutes by default --- lisp/init-sessions.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index fee9a05090..771f4d5df7 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -1,5 +1,6 @@ ;; save a list of open files in ~/.emacs.d/.emacs.desktop -(setq desktop-path (list user-emacs-directory)) +(setq desktop-path (list user-emacs-directory) + desktop-auto-save-timeout 600) (desktop-save-mode 1) (defadvice desktop-read (around trace-desktop-errors activate) (let ((debug-on-error t)) From 2eeeeaa942e4c46f83d54786c977cd85833377de Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Dec 2013 11:48:03 +0000 Subject: [PATCH 0006/1256] Don't set buffer modified during rename-this-file-and-buffer --- lisp/init-utils.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index df2acbc0ec..4dd1c4d33d 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -70,8 +70,7 @@ (when (file-exists-p filename) (rename-file filename new-name 1)) (rename-buffer new-name) - (set-visited-file-name new-name) - (set-buffer-modified-p nil))))) + (set-visited-file-name new-name))))) ;;---------------------------------------------------------------------------- ;; Browse current HTML file From 9771dccaa78217b1277635d3b8e998a5f5d625ad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Dec 2013 11:52:26 +0000 Subject: [PATCH 0007/1256] Add support for the Dash app on OS X --- init.el | 1 + lisp/init-dash.el | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lisp/init-dash.el diff --git a/init.el b/init.el index 011d80e35b..39af3b86bb 100644 --- a/init.el +++ b/init.el @@ -82,6 +82,7 @@ (require 'init-marmalade) (require 'init-misc) +(require 'init-dash) ;; Extra packages which don't require any configuration (require-package 'gnuplot) diff --git a/lisp/init-dash.el b/lisp/init-dash.el new file mode 100644 index 0000000000..a6bb06a9e4 --- /dev/null +++ b/lisp/init-dash.el @@ -0,0 +1,20 @@ +;; Support for the http://kapeli.com/dash documentation browser + +(defun sanityinc/dash-installed-p () + "Return t if Dash is installed on this machine, or nil otherwise." + (let ((lsregister "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister")) + (and (file-executable-p lsregister) + (not (string-equal + "" + (shell-command-to-string + (concat lsregister " -dump|grep com.kapeli.dash"))))))) + +(when (and *is-a-mac* (not (package-installed-p 'dash-at-point))) + (message "Checking whether Dash is installed") + (when (sanityinc/dash-installed-p) + (require-package 'dash-at-point))) + +(when (package-installed-p 'dash-at-point) + (global-set-key (kbd "C-c D") 'dash-at-point)) + +(provide 'init-dash) From 348a3654503628033e90c789cd5523cded165675 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Dec 2013 11:54:05 +0000 Subject: [PATCH 0008/1256] Bind C-M-up in magit-status-mode so it works like backward-up-list --- lisp/init-git.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-git.el b/lisp/init-git.el index c09f9013aa..ac8eb2e2be 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -16,6 +16,9 @@ ;; quickly open magit on any one of your projects. (global-set-key [(meta f12)] 'magit-status) +(after-load 'magit + (define-key magit-status-mode-map (kbd "C-M-") 'magit-goto-parent-section)) + (require-package 'fullframe) (fullframe magit-status magit-mode-quit-window :magit-fullscreen nil) From 13588a9a126dcceea4e778f929c3f88be6fda9fd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Dec 2013 11:54:56 +0000 Subject: [PATCH 0009/1256] Use new separate flycheck-hdevtools package --- lisp/init-haskell.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index a953e3ea74..b8b6128faf 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -1,6 +1,7 @@ (require-package 'haskell-mode) -(require-package 'flycheck-hdevtools) +(when (> emacs-major-version 23) + (require-package 'flycheck-hdevtools)) (after-load 'flycheck (require 'flycheck-hdevtools)) @@ -9,7 +10,10 @@ (add-auto-mode 'haskell-mode "\\.ghci\\'") -(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) +(require-package 'hi2) +;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) +(add-hook 'haskell-mode-hook 'turn-on-hi2) + (add-hook 'haskell-mode-hook (lambda () (subword-mode +1))) (after-load 'haskell-mode From 029d9ac9d581b48d4d20f080fcf79d1082966cd4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Dec 2013 11:56:03 +0000 Subject: [PATCH 0010/1256] Just use after-init-time when logging startup times --- init.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 39af3b86bb..95863b6aa4 100644 --- a/init.el +++ b/init.el @@ -122,8 +122,10 @@ ;;---------------------------------------------------------------------------- (require 'init-locales) -(message "init completed in %.2fms" - (sanityinc/time-subtract-millis (current-time) before-init-time)) +(add-hook 'after-init-hook + (lambda () + (message "init completed in %.2fms" + (sanityinc/time-subtract-millis after-init-time before-init-time)))) (provide 'init) From 4c387b5e3426f5bbddbbf3054961a2b45a3a27bc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Dec 2013 08:34:06 +0000 Subject: [PATCH 0011/1256] Add ruby flycheck checker locally until it is restored upstream --- lisp/init-flycheck.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lisp/init-flycheck.el b/lisp/init-flycheck.el index 232cb14458..3ed97067e7 100644 --- a/lisp/init-flycheck.el +++ b/lisp/init-flycheck.el @@ -5,4 +5,25 @@ ;; Override default flycheck triggers (setq flycheck-check-syntax-automatically '(save idle-change mode-enabled) flycheck-idle-change-delay 0.8) + + +(after-load 'flycheck + (flycheck-define-checker ruby + "A Ruby syntax checker using the standard (MRI) Ruby interpreter. + + See URL `http://www.ruby-lang.org/'." + :command ("ruby" "-w" "-c" source) + :error-patterns + ;; These patterns support output from JRuby, too, to deal with RVM or Rbenv + ((error line-start + "SyntaxError in " (file-name) ":" line ": " (message) + line-end) + (warning line-start + (file-name) ":" line ":" (optional column ":") + " warning: " (message) line-end) + (error line-start (file-name) ":" line ": " (message) line-end)) + :modes (enh-ruby-mode ruby-mode)) + (add-to-list 'flycheck-checkers 'ruby t)) + + (provide 'init-flycheck) From 27d6a746230e80a7064b2f1dd73bb78f16372bce Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 16 Dec 2013 12:19:16 +0000 Subject: [PATCH 0012/1256] Revert "Add ruby flycheck checker locally until it is restored upstream" This reverts commit 4c387b5e3426f5bbddbbf3054961a2b45a3a27bc. --- lisp/init-flycheck.el | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/lisp/init-flycheck.el b/lisp/init-flycheck.el index 3ed97067e7..232cb14458 100644 --- a/lisp/init-flycheck.el +++ b/lisp/init-flycheck.el @@ -5,25 +5,4 @@ ;; Override default flycheck triggers (setq flycheck-check-syntax-automatically '(save idle-change mode-enabled) flycheck-idle-change-delay 0.8) - - -(after-load 'flycheck - (flycheck-define-checker ruby - "A Ruby syntax checker using the standard (MRI) Ruby interpreter. - - See URL `http://www.ruby-lang.org/'." - :command ("ruby" "-w" "-c" source) - :error-patterns - ;; These patterns support output from JRuby, too, to deal with RVM or Rbenv - ((error line-start - "SyntaxError in " (file-name) ":" line ": " (message) - line-end) - (warning line-start - (file-name) ":" line ":" (optional column ":") - " warning: " (message) line-end) - (error line-start (file-name) ":" line ": " (message) line-end)) - :modes (enh-ruby-mode ruby-mode)) - (add-to-list 'flycheck-checkers 'ruby t)) - - (provide 'init-flycheck) From c0310b5f90b0626d55d86b9e8ab1645bfca1782b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 20 Dec 2013 21:16:20 +0000 Subject: [PATCH 0013/1256] Ensure TAB delegates to auto-complete in c/c++ modes (fixes #153) --- lisp/init-auto-complete.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-auto-complete.el b/lisp/init-auto-complete.el index ee0e2eddc9..7cc180618f 100644 --- a/lisp/init-auto-complete.el +++ b/lisp/init-auto-complete.el @@ -11,7 +11,10 @@ (setq tab-always-indent 'complete) ;; use 't when auto-complete is disabled (add-to-list 'completion-styles 'initials t) -;; TODO: find solution for php, c++, haskell modes where TAB always does something +;; TODO: find solution for php, haskell and other modes where TAB always does something + +(setq c-tab-always-indent nil + c-insert-tab-function 'indent-for-tab-command) ;; hook AC into completion-at-point (defun sanityinc/auto-complete-at-point () From 0edaad36eaf4cc23c07914e1b940753b73d6447c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 20 Dec 2013 21:18:07 +0000 Subject: [PATCH 0014/1256] Defer loading of cl-lib-highlight --- lisp/init-lisp.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index a193c11b8e..2d236cb9d2 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -128,7 +128,8 @@ (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'pp-eval-last-sexp) (require-package 'cl-lib-highlight) -(cl-lib-highlight-initialize) +(after-load 'lisp-mode + (cl-lib-highlight-initialize)) ;; ---------------------------------------------------------------------------- ;; Delete .elc files when reverting the .el from VC or magit From e4026c8ce9063b08c5d1b71753ea9c2155a6fe37 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 20 Dec 2013 21:18:52 +0000 Subject: [PATCH 0015/1256] Fix binding of sanityinc/eval-last-sexp-or-region --- lisp/init-lisp.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 2d236cb9d2..bd4ab0354a 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -19,7 +19,7 @@ (interactive "r\nP") (if (use-region-p) (eval-region beg end) - (eval-last-sexp prefix))) + (pp-eval-last-sexp prefix))) (after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) @@ -124,8 +124,8 @@ (add-to-list 'auto-mode-alist '("\\.emacs-project\\'" . emacs-lisp-mode)) (add-to-list 'auto-mode-alist '("archive-contents\\'" . emacs-lisp-mode)) -(define-key emacs-lisp-mode-map (kbd "C-x C-a") 'pp-macroexpand-last-sexp) -(define-key emacs-lisp-mode-map (kbd "C-x C-e") 'pp-eval-last-sexp) +(after-load 'lisp-mode + (define-key emacs-lisp-mode-map (kbd "C-x C-a") 'pp-macroexpand-last-sexp)) (require-package 'cl-lib-highlight) (after-load 'lisp-mode From b7929f371811462744e3d7648993718565770df2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 20 Dec 2013 21:19:19 +0000 Subject: [PATCH 0016/1256] Don't details in dired by default in trunk emacs --- lisp/init-dired.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 12649eaff9..92698c4512 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -1,10 +1,11 @@ (require-package 'dired+) (setq diredp-hide-details-initially-flag nil) -(setq global-dired-hide-details-mode -1) (after-load 'dired (require 'dired+) + (when (fboundp 'global-dired-hide-details-mode) + (global-dired-hide-details-mode -1)) (setq dired-recursive-deletes 'top) (define-key dired-mode-map [mouse-2] 'dired-find-file)) From a14f9ac7df8b25271a6f7e1217dd136019af07b2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 25 Dec 2013 12:52:55 +0000 Subject: [PATCH 0017/1256] Enable guide-key --- lisp/init-editing-utils.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 31d2f433c0..a5b68bb8e0 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -333,5 +333,11 @@ With arg N, insert N newlines." (require-package 'highlight-escape-sequences) (hes-mode) + +(require-package 'guide-key) +(setq guide-key/guide-key-sequence '("C-x r" "C-x 4")) +(guide-key-mode 1) +(diminish 'guide-key-mode) + (provide 'init-editing-utils) From 2190671a65dc41358e724df52d04369c5ed2f752 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 31 Dec 2013 15:56:34 +0000 Subject: [PATCH 0018/1256] Enable guide-key more widely --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index a5b68bb8e0..8f4f4603af 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -335,7 +335,7 @@ With arg N, insert N newlines." (require-package 'guide-key) -(setq guide-key/guide-key-sequence '("C-x r" "C-x 4")) +(setq guide-key/guide-key-sequence '("C-x r" "C-x 4" "C-x 5" "C-c ;" "C-c ; f")) (guide-key-mode 1) (diminish 'guide-key-mode) From 2850974d6594eb0a380b6b04eb801cd649d48920 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 3 Jan 2014 16:39:08 +0000 Subject: [PATCH 0019/1256] Add init-ledger.el --- init.el | 1 + lisp/init-ledger.el | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lisp/init-ledger.el diff --git a/init.el b/init.el index 95863b6aa4..c7e56adf09 100644 --- a/init.el +++ b/init.el @@ -83,6 +83,7 @@ (require 'init-misc) (require 'init-dash) +(require 'init-ledger) ;; Extra packages which don't require any configuration (require-package 'gnuplot) diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el new file mode 100644 index 0000000000..9fa9967d00 --- /dev/null +++ b/lisp/init-ledger.el @@ -0,0 +1,20 @@ +(require-package 'ledger-mode) + +(add-to-list 'auto-mode-alist '("\\.ledger$" . ledger-mode)) + +(when (> emacs-major-version 23) + (require-package 'flycheck-ledger)) +(after-load 'flycheck + (require 'flycheck-ledger)) +(after-load 'ledger-mode + (define-key ledger-mode-map (kbd "RET") 'newline) + (define-key ledger-mode-map (kbd "C-o") 'open-line)) + +(setq ledger-highlight-xact-under-point nil + ledger-use-iso-dates nil) + +(exec-path-from-shell-copy-env "LEDGER_FILE") + +(add-hook 'ledger-mode-hook 'goto-address-prog-mode) + +(provide 'init-ledger) From ca25d57820b1abfa83aa584e8bacb480559c309e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 3 Jan 2014 16:42:34 +0000 Subject: [PATCH 0020/1256] Better default for mouse-wheel-scroll-amount --- lisp/init-osx-keys.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-osx-keys.el b/lisp/init-osx-keys.el index f95f607210..0e6f1f6501 100644 --- a/lisp/init-osx-keys.el +++ b/lisp/init-osx-keys.el @@ -4,7 +4,9 @@ (setq default-input-method "MacOSX") (define-key key-translation-map "\e[21~" [f10]) ;; Make mouse wheel / trackpad scrolling less jerky - (setq mouse-wheel-scroll-amount '(0.001)) + (setq mouse-wheel-scroll-amount '(1 + ((shift) . 5) + ((control)))) (global-set-key (kbd "M-`") 'ns-next-frame) (global-set-key (kbd "M-h") 'ns-do-hide-emacs) (after-load 'nxml-mode From d614b96e8898630ebdc20908b173882fa296aeaf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 7 Jan 2014 19:20:04 +0000 Subject: [PATCH 0021/1256] Enable savehist-mode by default (though M-x already had a history) --- lisp/init-sessions.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 771f4d5df7..dc9e870424 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -28,6 +28,9 @@ ;;---------------------------------------------------------------------------- ;; Restore histories and registers after saving ;;---------------------------------------------------------------------------- +(setq-default history-length 1000) +(savehist-mode t) + (require-package 'session) (setq session-save-file (expand-file-name ".session" user-emacs-directory)) From 73532484b7479ea2f25a80fce9edd57ec0545184 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 8 Jan 2014 13:46:46 +0000 Subject: [PATCH 0022/1256] Only call fullframe after commands have been loaded --- lisp/init-git.el | 3 ++- lisp/init-ibuffer.el | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index ac8eb2e2be..fe3ffac5f6 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -20,7 +20,8 @@ (define-key magit-status-mode-map (kbd "C-M-") 'magit-goto-parent-section)) (require-package 'fullframe) -(fullframe magit-status magit-mode-quit-window :magit-fullscreen nil) +(after-load 'magit + (fullframe magit-status magit-mode-quit-window :magit-fullscreen nil)) ;;; When we start working on git-backed files, use git-wip if available diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 312878a743..1e65d7220d 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -1,5 +1,6 @@ (require-package 'fullframe) -(fullframe ibuffer ibuffer-quit :ibuffer-fullscreen nil) +(after-load 'ibuffer + (fullframe ibuffer ibuffer-quit :ibuffer-fullscreen nil)) (require-package 'ibuffer-vc) From 674c23fac66b4b3760622e7d00802daa41f422c0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 8 Jan 2014 13:47:20 +0000 Subject: [PATCH 0023/1256] Use guidekey for the "C-c ' f" rinari prefix too --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 8f4f4603af..7d8b75e086 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -335,7 +335,7 @@ With arg N, insert N newlines." (require-package 'guide-key) -(setq guide-key/guide-key-sequence '("C-x r" "C-x 4" "C-x 5" "C-c ;" "C-c ; f")) +(setq guide-key/guide-key-sequence '("C-x r" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f")) (guide-key-mode 1) (diminish 'guide-key-mode) From e4a1e3d7df5115c47e258fd985fea0855923aaad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 8 Jan 2014 13:47:52 +0000 Subject: [PATCH 0024/1256] Use pp-eval-expression for M-: --- lisp/init-lisp.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index bd4ab0354a..2a36373452 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -21,6 +21,8 @@ (eval-region beg end) (pp-eval-last-sexp prefix))) +(global-set-key (kbd "M-:") 'pp-eval-expression) + (after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) From a4b6257050089e829bfefc913652447ad4e8f288 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 8 Jan 2014 16:51:56 +0000 Subject: [PATCH 0025/1256] Enable rainbow-delimiters in javascript modes --- lisp/init-javascript.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 506e46affa..7742aec708 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -3,7 +3,6 @@ (require-package 'js2-mode) (require-package 'ac-js2)) (require-package 'js-comint) -(require-package 'rainbow-delimiters) (require-package 'coffee-mode) (after-load 'js2-mode @@ -46,6 +45,14 @@ (add-to-list 'interpreter-mode-alist (cons "node" preferred-javascript-mode)) + +;; Javascript nests {} and () a lot, so I find this helpful + +(require-package 'rainbow-delimiters) +(dolist (hook '(js2-mode-hook js-mode-hook json-mode-hook)) + (add-hook hook 'rainbow-delimiters-mode)) + + ;;; Coffeescript From f72bccfd0974277e65e79ba95bfb9202d40b3900 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 16 Jan 2014 12:57:10 +0000 Subject: [PATCH 0026/1256] Use flycheck-haskell --- lisp/init-haskell.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index b8b6128faf..9fb797f9b7 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -1,7 +1,8 @@ (require-package 'haskell-mode) (when (> emacs-major-version 23) - (require-package 'flycheck-hdevtools)) + (require-package 'flycheck-hdevtools) + (require-package 'flycheck-haskell)) (after-load 'flycheck (require 'flycheck-hdevtools)) From f36419fdbae7251daa432fe3c55bb289a8fd4f5d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 23 Jan 2014 13:05:06 +0000 Subject: [PATCH 0027/1256] Emacs 23: don't require skewer or coffee-mode, which now depend on Emacs 24 See #160 --- lisp/init-css.el | 3 ++- lisp/init-javascript.el | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lisp/init-css.el b/lisp/init-css.el index 1df28a5f8f..e48d1acfcf 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -45,7 +45,8 @@ ;;; LESS (require-package 'less-css-mode) -(require-package 'skewer-less) +(when (featurep 'js2-mode) + (require-package 'skewer-less)) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 7742aec708..0ea762a7cf 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -1,9 +1,9 @@ (require-package 'json-mode) (when (>= emacs-major-version 24) (require-package 'js2-mode) - (require-package 'ac-js2)) + (require-package 'ac-js2) + (require-package 'coffee-mode)) (require-package 'js-comint) -(require-package 'coffee-mode) (after-load 'js2-mode (define-key js2-mode-map (kbd "TAB") 'indent-for-tab-command)) @@ -60,7 +60,8 @@ (setq coffee-js-mode preferred-javascript-mode coffee-tab-width preferred-javascript-indent-level)) -(add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode)) +(when (fboundp 'coffee-mode) + (add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode))) ;; --------------------------------------------------------------------------- ;; Run and interact with an inferior JS via js-comint.el @@ -86,7 +87,7 @@ ;; Alternatively, use skewer-mode ;; --------------------------------------------------------------------------- -(when (featurep 'js2-mode) +(when (and (>= emacs-major-version 24) (featurep 'js2-mode)) (require-package 'skewer-mode) (after-load 'skewer-mode (add-hook 'skewer-mode-hook From 6795881f97e49c57e18535b5fc496e7a0f3e9cb0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 27 Jan 2014 19:03:54 +0000 Subject: [PATCH 0028/1256] Drop git-gutter-fringe, which I never use --- lisp/init-git.el | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index fe3ffac5f6..2fd9f9a901 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -1,10 +1,10 @@ (require-package 'magit) -(require-package 'git-gutter-fringe) (require-package 'git-blame) (require-package 'git-commit-mode) (require-package 'git-rebase-mode) (require-package 'gitignore-mode) (require-package 'gitconfig-mode) +(require-package 'git-messenger) (setq-default magit-save-some-buffers nil @@ -30,12 +30,6 @@ (global-magit-wip-save-mode) (diminish 'magit-wip-save-mode)) - -;;; Use the fringe version of git-gutter - -(after-load 'git-gutter - (require 'git-gutter-fringe)) - (when *is-a-mac* (after-load 'magit From 5dbee348dad525a9e3590b0a7e18a9ae905c8dc0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 27 Jan 2014 19:05:03 +0000 Subject: [PATCH 0029/1256] Remove duplicated requirement of haml-mode --- lisp/init-rails.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-rails.el b/lisp/init-rails.el index 54a2e2033d..b38d0e5ae5 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -3,8 +3,6 @@ (diminish 'rinari-minor-mode "Rin")) (global-rinari-mode) -(require-package 'haml-mode) - (defun update-rails-ctags () (interactive) (let ((default-directory (or (rinari-root) default-directory))) From b302527a0452e782fa0c364ebeb9a02bcfb76adf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 27 Jan 2014 19:05:55 +0000 Subject: [PATCH 0030/1256] Make ag ignore archive-contents in this repo --- .agignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .agignore diff --git a/.agignore b/.agignore new file mode 100644 index 0000000000..654a5fdbd9 --- /dev/null +++ b/.agignore @@ -0,0 +1 @@ +archive-contents \ No newline at end of file From dd428722c3545e361d0c910d754ed99e98e75652 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 27 Jan 2014 19:06:36 +0000 Subject: [PATCH 0031/1256] Ignore /history --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c1acca9c28..aa6388783f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ site-lisp/package/ /frame-restore-parameters /.achievements /.bookmarks.el +/history From f1f0d126a01786cf6ab7624f9ac375f97d9d6df0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 28 Jan 2014 18:04:07 +0000 Subject: [PATCH 0032/1256] Use fullframe to run list-packages in a full-frame window --- lisp/init-elpa.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index a4d182a2fb..fe2ce48065 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -79,4 +79,9 @@ re-downloaded in order to locate PACKAGE." (package-initialize) + +(require-package 'fullframe) +(fullframe list-packages quit-window :package-fullscreen nil) + + (provide 'init-elpa) From 260ef50538cb38aa2fb8629cada805b02d0e1185 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 1 Feb 2014 15:04:01 +0000 Subject: [PATCH 0033/1256] Adjust for updated fullframe API --- lisp/init-elpa.el | 2 +- lisp/init-git.el | 2 +- lisp/init-ibuffer.el | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index fe2ce48065..4ef40c7972 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -81,7 +81,7 @@ re-downloaded in order to locate PACKAGE." (require-package 'fullframe) -(fullframe list-packages quit-window :package-fullscreen nil) +(fullframe list-packages quit-window) (provide 'init-elpa) diff --git a/lisp/init-git.el b/lisp/init-git.el index 2fd9f9a901..3f53ca6e7a 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -21,7 +21,7 @@ (require-package 'fullframe) (after-load 'magit - (fullframe magit-status magit-mode-quit-window :magit-fullscreen nil)) + (fullframe magit-status magit-mode-quit-window)) ;;; When we start working on git-backed files, use git-wip if available diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 1e65d7220d..6bf7cfe4af 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -1,6 +1,6 @@ (require-package 'fullframe) (after-load 'ibuffer - (fullframe ibuffer ibuffer-quit :ibuffer-fullscreen nil)) + (fullframe ibuffer ibuffer-quit)) (require-package 'ibuffer-vc) From 9c3a6a0fa28fce307ea62bd5be521d4ffba1d0a2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 5 Feb 2014 13:13:17 +0000 Subject: [PATCH 0034/1256] Don't reindent so eagerly in haml-mode --- lisp/init-haml.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-haml.el b/lisp/init-haml.el index cbe576c945..2d6b32c360 100644 --- a/lisp/init-haml.el +++ b/lisp/init-haml.el @@ -1,3 +1,8 @@ (require-package 'haml-mode) +(after-load 'haml-mode + (define-key haml-mode-map (kbd "C-o") 'open-line) + (when (fboundp 'electric-indent-mode) + (add-hook 'haml-mode-hook (lambda () (electric-indent-mode -1))))) + (provide 'init-haml) From 8ca7654e749a179ef49816980b961c8fc5a0c880 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 5 Feb 2014 16:44:51 +0000 Subject: [PATCH 0035/1256] Expand "-foo" to "modname-foo" in elisp with hippie-expand --- lisp/init-lisp.el | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 2a36373452..b78c287c84 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -29,11 +29,34 @@ ;; ---------------------------------------------------------------------------- ;; Hippie-expand ;; ---------------------------------------------------------------------------- + +(defun my/emacs-lisp-module-name () + "Search the buffer for `provide' declaration." + (save-excursion + (goto-char (point-min)) + (when (search-forward-regexp "^(provide '") + (symbol-name (symbol-at-point))))) + +;; Credit to Chris Done for this one. +(defun my/try-complete-lisp-symbol-without-namespace (old) + "Hippie expand \"try\" function which expands \"-foo\" to \"modname-foo\" in elisp." + (unless old + (he-init-string (he-lisp-symbol-beg) (point)) + (when (string-match-p "^-" he-search-string) + (let ((mod-name (my/emacs-lisp-module-name))) + (when mod-name + (setq he-expand-list (list (concat mod-name he-search-string))))))) + (when he-expand-list + (he-substitute-string (car he-expand-list)) + (setq he-expand-list nil) + t)) + (defun set-up-hippie-expand-for-elisp () "Locally set `hippie-expand' completion functions for use with Emacs Lisp." (make-local-variable 'hippie-expand-try-functions-list) (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol t) - (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol-partially t)) + (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol-partially t) + (add-to-list 'hippie-expand-try-functions-list 'my/try-complete-lisp-symbol-without-namespace)) ;; ---------------------------------------------------------------------------- From 988d494f2fa538fc362ee872ec47c02196ff57e2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 5 Feb 2014 16:47:35 +0000 Subject: [PATCH 0036/1256] string-prefix-p is better than regexp check --- lisp/init-lisp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index b78c287c84..74fcf7cc04 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -42,7 +42,7 @@ "Hippie expand \"try\" function which expands \"-foo\" to \"modname-foo\" in elisp." (unless old (he-init-string (he-lisp-symbol-beg) (point)) - (when (string-match-p "^-" he-search-string) + (when (string-prefix-p "-" he-search-string) (let ((mod-name (my/emacs-lisp-module-name))) (when mod-name (setq he-expand-list (list (concat mod-name he-search-string))))))) From f051426194e45595ddb9d196877caa232d4a254a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 5 Feb 2014 17:01:53 +0000 Subject: [PATCH 0037/1256] Do magic "-foo" to "modname-foo" expansion only after other expansions fail Otherwise users of dash might get undesirable results. --- lisp/init-lisp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 74fcf7cc04..71c52eda93 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -56,7 +56,7 @@ (make-local-variable 'hippie-expand-try-functions-list) (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol t) (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol-partially t) - (add-to-list 'hippie-expand-try-functions-list 'my/try-complete-lisp-symbol-without-namespace)) + (add-to-list 'hippie-expand-try-functions-list 'my/try-complete-lisp-symbol-without-namespace t)) ;; ---------------------------------------------------------------------------- From acf30f922fd02e444b02203b9784abc638c1fa0c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 5 Feb 2014 22:03:37 +0000 Subject: [PATCH 0038/1256] Handle case where there's no `(provide ...)` form --- lisp/init-lisp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 71c52eda93..df1ca4d3b2 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -34,7 +34,7 @@ "Search the buffer for `provide' declaration." (save-excursion (goto-char (point-min)) - (when (search-forward-regexp "^(provide '") + (when (search-forward-regexp "^(provide '" nil t) (symbol-name (symbol-at-point))))) ;; Credit to Chris Done for this one. From 7647073ef6be2c6be0a1456f350ea8abbdeca6c8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 8 Feb 2014 08:04:00 +0000 Subject: [PATCH 0039/1256] Add check for emacs version on startup (see #161) --- init.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.el b/init.el index c7e56adf09..bc158b4933 100644 --- a/init.el +++ b/init.el @@ -1,6 +1,11 @@ + ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. +(let ((minver 23)) + (unless (>= emacs-major-version minver) + (error "Your Emacs is too old -- this config requires v%s or higher" minver))) + (add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) (require 'init-benchmarking) ;; Measure startup time From 876ba3927dc0c49c95f6dd1e7ea57ece1f930a68 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Feb 2014 09:30:28 +0000 Subject: [PATCH 0040/1256] Don't reference paredit-backward-delete-key until paredit is loaded See #161 --- lisp/init-slime.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index 232c434180..826a8c1556 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -36,7 +36,8 @@ (after-load 'slime-repl ;; Stop SLIME's REPL from grabbing DEL, which is annoying when backspacing over a '(' - (define-key slime-repl-mode-map (read-kbd-macro paredit-backward-delete-key) nil) + (after-load 'paredit + (define-key slime-repl-mode-map (read-kbd-macro paredit-backward-delete-key) nil)) ;; Bind TAB to `indent-for-tab-command', as in regular Slime buffers. (define-key slime-repl-mode-map (kbd "TAB") 'indent-for-tab-command) From f685d263a5a1b34acaebcd0ffea253b35a20a9f3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Feb 2014 12:34:05 +0000 Subject: [PATCH 0041/1256] Drop maxframe and init-maxframe --- init.el | 1 - lisp/init-maxframe.el | 57 ------------------------------------------- 2 files changed, 58 deletions(-) delete mode 100644 lisp/init-maxframe.el diff --git a/init.el b/init.el index bc158b4933..d4fc496e86 100644 --- a/init.el +++ b/init.el @@ -36,7 +36,6 @@ (require 'init-themes) (require 'init-osx-keys) (require 'init-gui-frames) -(require 'init-maxframe) (require 'init-proxies) (require 'init-dired) (require 'init-isearch) diff --git a/lisp/init-maxframe.el b/lisp/init-maxframe.el deleted file mode 100644 index f020bf84c3..0000000000 --- a/lisp/init-maxframe.el +++ /dev/null @@ -1,57 +0,0 @@ -(require-package 'maxframe) - -(autoload 'mf-max-display-pixel-width "maxframe" "" nil) -(autoload 'mf-max-display-pixel-height "maxframe" "" nil) -(autoload 'maximize-frame "maxframe" "" t) -(autoload 'restore-frame "maxframe" "" t) - -(when *is-a-mac* - (after-load 'maxframe - (fset 'maximize-frame 'x-maximize-frame) - (fset 'restore-frame 'x-restore-frame)) - (setq mf-display-padding-width 4 - mf-offset-x 0 - mf-offset-y 0 - mf-display-padding-height (if (when (boundp 'ns-auto-hide-menu-bar) - ns-auto-hide-menu-bar) - 23 - (+ 27 23)))) - -(defvar sanityinc/prev-frame nil "The selected frame before invoking `make-frame-command'.") -(defadvice make-frame-command (before sanityinc/note-previous-frame activate) - "Record the selected frame before creating a new one interactively." - (setq sanityinc/prev-frame (selected-frame))) - -(defun sanityinc/maybe-maximize-frame (&optional frame) - (with-selected-frame (or frame (selected-frame)) - (when (and window-system - sanityinc/prev-frame - (sanityinc/maximized-p sanityinc/prev-frame)) - (maximize-frame)))) - -(add-hook 'after-make-frame-functions 'sanityinc/maybe-maximize-frame) -(add-hook 'after-init-hook 'sanityinc/maybe-maximize-frame) - -(defadvice maximize-frame (around skip-if-fullscreen (&optional frame) activate) - (unless (sanityinc/maximized-p frame) - ad-do-it)) - -(defadvice restore-frame (around skip-if-fullscreen (&optional frame) activate) - (when (sanityinc/maximized-p frame) - ad-do-it)) - -(defun within-p (a b delta) - (<= (abs (- b a)) delta)) - -(defun sanityinc/maximized-p (&optional frame) - (or (not (with-selected-frame (or frame (selected-frame)) window-system)) - (eq 'fullboth (frame-parameter frame 'fullscreen)) - (and (within-p (mf-max-display-pixel-width) - (frame-pixel-width frame) - (frame-char-width frame)) - (within-p (mf-max-display-pixel-height) - (+ mf-display-padding-height (frame-pixel-height frame)) - (frame-char-height frame))))) - - -(provide 'init-maxframe) From 61564eadc2b3f10043c3fd98502e91206226382f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Mar 2014 08:32:28 +0000 Subject: [PATCH 0042/1256] Don't rely on move-text-default-bindings, which has been removed upstream Fixes #168, #169 --- lisp/init-editing-utils.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 7d8b75e086..a4a7330af5 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -227,7 +227,8 @@ ;; use M-S-up and M-S-down, which will work even in lisp modes. ;;---------------------------------------------------------------------------- (require-package 'move-text) -(move-text-default-bindings) +(global-set-key [M-up] 'move-text-up) +(global-set-key [M-down] 'move-text-down) (global-set-key [M-S-up] 'move-text-up) (global-set-key [M-S-down] 'move-text-down) From 1c80f76db809c90402792f7581569339f0cfdc9f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Mar 2014 13:34:56 +0000 Subject: [PATCH 0043/1256] Load magit-git-wip after magit, not directly after vc --- lisp/init-git.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 3f53ca6e7a..e69bb40800 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -26,7 +26,7 @@ ;;; When we start working on git-backed files, use git-wip if available -(after-load 'vc-git +(after-load 'magit (global-magit-wip-save-mode) (diminish 'magit-wip-save-mode)) From 297bfb791a8ef9cf925f68dc6d3c82d597b9724c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Mar 2014 13:36:11 +0000 Subject: [PATCH 0044/1256] Add site-lisp dirs to load-path after creation --- lisp/init-site-lisp.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-site-lisp.el b/lisp/init-site-lisp.el index d3f51e2b73..6a1df7f1cf 100644 --- a/lisp/init-site-lisp.el +++ b/lisp/init-site-lisp.el @@ -27,8 +27,8 @@ (let ((dir (site-lisp-dir-for name))) (message "Downloading %s from %s" name url) (unless (file-directory-p dir) - (make-directory dir) - (add-to-list 'load-path dir)) + (make-directory dir)) + (add-to-list 'load-path dir) (let ((el-file (site-lisp-library-el-path name))) (url-copy-file url el-file t nil) el-file))) From 85d310ac295c31f3a5fa7b5e0437eeba27c2a212 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Mar 2014 13:36:56 +0000 Subject: [PATCH 0045/1256] Also use guide-key for narrowing map via "C-x n" prefix --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index a4a7330af5..f788425260 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -336,7 +336,7 @@ With arg N, insert N newlines." (require-package 'guide-key) -(setq guide-key/guide-key-sequence '("C-x r" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f")) +(setq guide-key/guide-key-sequence '("C-x r" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f" "C-x n")) (guide-key-mode 1) (diminish 'guide-key-mode) From 1fdc848b02181be991d3d6bd163684b0b5e4c687 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Mar 2014 13:37:51 +0000 Subject: [PATCH 0046/1256] Allow inline completions to cycle without eagerly popping up *Completions* --- lisp/init-auto-complete.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-auto-complete.el b/lisp/init-auto-complete.el index 7cc180618f..abf7b5c631 100644 --- a/lisp/init-auto-complete.el +++ b/lisp/init-auto-complete.el @@ -10,6 +10,8 @@ ;;---------------------------------------------------------------------------- (setq tab-always-indent 'complete) ;; use 't when auto-complete is disabled (add-to-list 'completion-styles 'initials t) +;; Stop completion-at-point from popping up completion buffers so eagerly +(setq completion-cycle-threshold 5) ;; TODO: find solution for php, haskell and other modes where TAB always does something From 129e8466ce59033eba841e9514be50055d275d7b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Mar 2014 13:38:32 +0000 Subject: [PATCH 0047/1256] Ignore helm-adaptive-history --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index aa6388783f..b9c64478e7 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ site-lisp/package/ /.achievements /.bookmarks.el /history +/helm-adaptive-history From db41b250f34ba24218f940b4e352b17d8c46d14f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 21 Mar 2014 20:57:55 +0000 Subject: [PATCH 0048/1256] Don't rebind C-x C-a in emacs-lisp-mode: it upsets edebug Fixes #173 --- lisp/init-lisp.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index df1ca4d3b2..1904499184 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -149,9 +149,6 @@ (add-to-list 'auto-mode-alist '("\\.emacs-project\\'" . emacs-lisp-mode)) (add-to-list 'auto-mode-alist '("archive-contents\\'" . emacs-lisp-mode)) -(after-load 'lisp-mode - (define-key emacs-lisp-mode-map (kbd "C-x C-a") 'pp-macroexpand-last-sexp)) - (require-package 'cl-lib-highlight) (after-load 'lisp-mode (cl-lib-highlight-initialize)) From 78f2b9e9fa30f0bf3d5562fe27eef066371e04a9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 22 Mar 2014 13:44:12 +0000 Subject: [PATCH 0049/1256] Check OS before using exec-path-from-shell for $LEDGER_FILE See #174 --- lisp/init-ledger.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el index 9fa9967d00..f95afc0838 100644 --- a/lisp/init-ledger.el +++ b/lisp/init-ledger.el @@ -13,7 +13,8 @@ (setq ledger-highlight-xact-under-point nil ledger-use-iso-dates nil) -(exec-path-from-shell-copy-env "LEDGER_FILE") +(when (memq window-system '(mac ns)) + (exec-path-from-shell-copy-env "LEDGER_FILE")) (add-hook 'ledger-mode-hook 'goto-address-prog-mode) From 8d8c08207e37f7b8cdb9c5144075b25f1c31d932 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Mar 2014 10:55:20 +0000 Subject: [PATCH 0050/1256] Update README to clarify steps to follow before filing issues --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a03c2086c0..ff2edcb9fb 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,10 @@ You might also want to check out `emacs-starter-kit` and `emacs-prelude`. ## Support / issues -If you hit any problems, please [file an issue on the github project](https://github.com/purcell/emacs.d) +If you hit any problems, please first ensure that you are using the latest version +of this code, and that you have updated your packages to the most recent available +versions (see "Updates" above). If you still experience problems, go ahead and +[file an issue on the github project](https://github.com/purcell/emacs.d). -Steve Purcell From b2aed7d3b3e934bcbe753928f682b1e1b862286b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 Mar 2014 12:01:00 +0000 Subject: [PATCH 0051/1256] Take my own advice and abbreviate file names in ido-choose-from-recentf --- lisp/init-ido.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-ido.el b/lisp/init-ido.el index 429d0dc82e..07a4a23ab2 100644 --- a/lisp/init-ido.el +++ b/lisp/init-ido.el @@ -25,7 +25,9 @@ (interactive) (if (and ido-use-virtual-buffers (fboundp 'ido-toggle-virtual-buffers)) (ido-switch-buffer) - (find-file (ido-completing-read "Open file: " recentf-list nil t)))) + (find-file (ido-completing-read "Open file: " + (mapcar 'abbreviate-file-name recentf-list) + nil t)))) (global-set-key [(meta f11)] 'sanityinc/ido-choose-from-recentf)) From 06913c35a8f773887b78e5a7f75ac99f207bb85b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 Mar 2014 12:01:47 +0000 Subject: [PATCH 0052/1256] Require 'ido in init-ido --- lisp/init-ido.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ido.el b/lisp/init-ido.el index 07a4a23ab2..207f13685f 100644 --- a/lisp/init-ido.el +++ b/lisp/init-ido.el @@ -1,4 +1,5 @@ ;; Use C-f during file selection to switch to regular find-file +(require 'ido) (ido-mode t) (ido-everywhere t) (setq ido-enable-flex-matching t) From 9d0a9e7584e1e302d774f15b5af4abc62275d13a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 Mar 2014 12:02:23 +0000 Subject: [PATCH 0053/1256] Return to using switch-window on C-x o --- lisp/init-windows.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 4a376e9131..b5247031b7 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -9,6 +9,7 @@ (require-package 'switch-window) (require 'switch-window) (setq switch-window-shortcut-style 'alphabet) +(global-set-key (kbd "C-x o") 'switch-window) ;;---------------------------------------------------------------------------- From e7efde0f26ccc2eb2532533ce97f43aee5a143bc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 Mar 2014 12:04:00 +0000 Subject: [PATCH 0054/1256] Hide lighter for magit-auto-revert-mode --- lisp/init-git.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-git.el b/lisp/init-git.el index e69bb40800..062a1f7db2 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -30,6 +30,9 @@ (global-magit-wip-save-mode) (diminish 'magit-wip-save-mode)) +(after-load 'magit + (diminish 'magit-auto-revert-mode)) + (when *is-a-mac* (after-load 'magit From 5dfbd59a6da60069aa0512252c3e26389ca331fa Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Apr 2014 10:20:13 +0100 Subject: [PATCH 0055/1256] Only use smex in Emacs 24 --- lisp/init-ido.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/init-ido.el b/lisp/init-ido.el index 207f13685f..e9ef2fdd9a 100644 --- a/lisp/init-ido.el +++ b/lisp/init-ido.el @@ -12,8 +12,9 @@ (ido-ubiquitous-mode t)) ;; Use smex to handle M-x -(require-package 'smex) -(global-set-key [remap execute-extended-command] 'smex) +(when (eval-when-compile (>= emacs-major-version 24)) + (require-package 'smex) + (global-set-key [remap execute-extended-command] 'smex)) (require-package 'idomenu) From 532fc1cf92cf20f8a10d5c5b91f8771a84479d36 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Apr 2014 10:22:53 +0100 Subject: [PATCH 0056/1256] Require and enable ipretty-mode --- lisp/init-lisp.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 1904499184..55183a2a36 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -26,6 +26,10 @@ (after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) +(require-package 'ipretty) +(ipretty-mode 1) + + ;; ---------------------------------------------------------------------------- ;; Hippie-expand ;; ---------------------------------------------------------------------------- From b65ab662f6bad8ff95415816e94f0d176fc1eda2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Apr 2014 10:25:57 +0100 Subject: [PATCH 0057/1256] Remove pretty-mode, but use Emacs 24's global-prettify-symbols-mode if available --- lisp/init-editing-utils.el | 4 ++++ lisp/init-lisp.el | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index f788425260..50c9fea6a1 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -64,6 +64,10 @@ (after-load 'subword (diminish 'subword-mode))) + +(when (fboundp 'global-prettify-symbols-mode) + (global-prettify-symbols-mode)) + (require-package 'undo-tree) (global-undo-tree-mode) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 55183a2a36..2c512d08dc 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -4,9 +4,6 @@ (require-package 'lively) -(require-package 'pretty-mode) -(autoload 'turn-on-pretty-mode "pretty-mode") - (setq-default initial-scratch-message (concat ";; Happy hacking " (or user-login-name "") "!\n\n")) From 95e635e83fcf61fb402bda1cf04c17033dfd119b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Apr 2014 10:44:33 +0100 Subject: [PATCH 0058/1256] Add note about escaping the tyranny of ido-mode in find-file See #175 --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index ff2edcb9fb..b40af17f2f 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,15 @@ git clone https://github.com/purcell/emacs.d.git ~/.emacs.d Upon starting up Emacs for the first time, further third-party packages will be automatically downloaded and installed. +## Important note about `ido` + +This config enables `ido-mode` completion in the minibuffer wherever +possible, which might confuse you when trying to open files using +C-x C-f, e.g. if you want to open a directory to use +`dired` -- if you get stuck, use C-f to drop into the +regular `find-file` prompt. (You might want to customize the +`ido-show-dot-for-dired` variable if this is an issue for you.) + ## Updates Update the config with `git pull`. You'll probably also want/need to update From 759f7740313626bdd583a8e0c7eacd66f7c88824 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Apr 2014 21:28:02 +0100 Subject: [PATCH 0059/1256] Emacs 24 is now required for Cider support in Clojure --- init.el | 2 ++ lisp/init-clojure-cider.el | 31 +++++++++++++++++++++++++++++++ lisp/init-clojure.el | 29 +++-------------------------- 3 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 lisp/init-clojure-cider.el diff --git a/init.el b/init.el index d4fc496e86..12bfb2ce83 100644 --- a/init.el +++ b/init.el @@ -78,6 +78,8 @@ (require 'init-lisp) (require 'init-slime) (require 'init-clojure) +(when (>= emacs-major-version 24) + (require 'init-clojure-cider)) (require 'init-common-lisp) (when *spell-check-support-enabled* diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el new file mode 100644 index 0000000000..e57c003f74 --- /dev/null +++ b/lisp/init-clojure-cider.el @@ -0,0 +1,31 @@ +(require 'init-clojure) +(require-package 'emacs '(24)) + +(require-package 'cider) +(require-package 'ac-nrepl) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nrepl with Clojure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(setq nrepl-popup-stacktraces nil) + +(after-load 'cider + (add-hook 'cider-repl-mode-hook 'ac-nrepl-setup) + (add-hook 'cider-mode-hook 'ac-nrepl-setup) + (after-load 'auto-complete + (add-to-list 'ac-modes 'cider-repl-mode)) + + (add-hook 'cider-repl-mode-hook 'set-auto-complete-as-completion-at-point-function) + (add-hook 'cider-mode-hook 'set-auto-complete-as-completion-at-point-function) + (add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode) + (add-hook 'cider-repl-mode-hook 'subword-mode) + (add-hook 'cider-repl-mode-hook 'paredit-mode) + (define-key cider-mode-map (kbd "C-c C-d") 'ac-nrepl-popup-doc) + + ;; nrepl isn't based on comint + (add-hook 'cider-repl-mode-hook + (lambda () (setq show-trailing-whitespace nil)))) + + +(provide 'init-clojure-cider) diff --git a/lisp/init-clojure.el b/lisp/init-clojure.el index 3a96313e7c..28237ee80d 100644 --- a/lisp/init-clojure.el +++ b/lisp/init-clojure.el @@ -1,11 +1,10 @@ +;; Basic clojure support, even in Emacs 23 +;; See also init-clojure-cider.el + (require-package 'clojure-mode) (require-package 'clojure-test-mode) (require-package 'cljsbuild-mode) (require-package 'elein) -(require-package 'cider) -;(require-package 'slamhound) -(require-package 'ac-nrepl) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Slime with Clojure @@ -27,28 +26,6 @@ (add-hook 'slime-repl-mode-hook 'slime-clojure-repl-setup)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; nrepl with Clojure -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(setq nrepl-popup-stacktraces nil) - -(after-load 'cider - (add-hook 'cider-repl-mode-hook 'ac-nrepl-setup) - (add-hook 'cider-mode-hook 'ac-nrepl-setup) - (after-load 'auto-complete - (add-to-list 'ac-modes 'cider-repl-mode)) - - (add-hook 'cider-repl-mode-hook 'set-auto-complete-as-completion-at-point-function) - (add-hook 'cider-mode-hook 'set-auto-complete-as-completion-at-point-function) - (add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode) - (add-hook 'cider-repl-mode-hook 'subword-mode) - (add-hook 'cider-repl-mode-hook 'paredit-mode) - (define-key cider-mode-map (kbd "C-c C-d") 'ac-nrepl-popup-doc) - - ;; nrepl isn't based on comint - (add-hook 'cider-repl-mode-hook - (lambda () (setq show-trailing-whitespace nil)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Misc clojure tweaks From 979eeaea86bec1eed937ff48ba902c8d73daf7e2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 6 May 2014 10:35:53 +0100 Subject: [PATCH 0060/1256] Auto-enable magit-svn when appropriate for a repo --- lisp/init-git.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 062a1f7db2..2c6a7fc7a5 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -48,8 +48,11 @@ ;;; git-svn support (require-package 'magit-svn) -(after-load 'magit-key-mode - (require 'magit-svn)) +(autoload 'magit-svn-enabled "magit-svn") +(defun sanityinc/maybe-enable-magit-svn-mode () + (when (magit-svn-enabled) + (magit-svn-mode))) +(add-hook 'magit-status-mode-hook #'sanityinc/maybe-enable-magit-svn-mode) (after-load 'compile (dolist (defn (list '(git-svn-updated "^\t[A-Z]\t\\(.*\\)$" 1 nil nil 0 1) From 9898fd4f8c9001b23a7a8618e73130cbf7533f51 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 May 2014 14:57:13 +0100 Subject: [PATCH 0061/1256] Autoload org-mac-grab-link --- lisp/init-org.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index e72c058719..66e030ce11 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -3,6 +3,7 @@ (require-package 'org-fstree) (when *is-a-mac* (require-package 'org-mac-link) + (autoload 'org-mac-grab-link "org-mac-link") (require-package 'org-mac-iCal)) From 600786ce2695088f8e3113ec81bee8dd09483996 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 May 2014 14:59:42 +0100 Subject: [PATCH 0062/1256] Add init-vc.el, and enable diff-hl by default --- init.el | 1 + lisp/init-vc.el | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 lisp/init-vc.el diff --git a/init.el b/init.el index 12bfb2ce83..7d8f0f6059 100644 --- a/init.el +++ b/init.el @@ -54,6 +54,7 @@ (require 'init-editing-utils) +(require 'init-vc) (require 'init-darcs) (require 'init-git) diff --git a/lisp/init-vc.el b/lisp/init-vc.el new file mode 100644 index 0000000000..899b4a9f10 --- /dev/null +++ b/lisp/init-vc.el @@ -0,0 +1,6 @@ +(require-package 'diff-hl) +(add-hook 'prog-mode-hook 'turn-on-diff-hl-mode) +(add-hook 'vc-dir-mode-hook 'turn-on-diff-hl-mode) + + +(provide 'init-vc) From 1865993bcd576c3e52e22696c6b6a7778e1b267f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 May 2014 15:00:45 +0100 Subject: [PATCH 0063/1256] Ignore ~/.emacs.d/{thumbs,emms} --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b9c64478e7..a2ce1e1bd1 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,5 @@ site-lisp/package/ /.bookmarks.el /history /helm-adaptive-history +/thumbs/ +/emms/ From 93f178cd03920b3220d58af1d404e434fa12867d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 10 May 2014 19:27:43 +0100 Subject: [PATCH 0064/1256] Autoload org-mac-grab-link as an interactive symbol --- lisp/init-org.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 66e030ce11..dcd9a4f183 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -3,7 +3,7 @@ (require-package 'org-fstree) (when *is-a-mac* (require-package 'org-mac-link) - (autoload 'org-mac-grab-link "org-mac-link") + (autoload 'org-mac-grab-link "org-mac-link" nil t) (require-package 'org-mac-iCal)) From 0f2d3c2a051e9c0c724d60c9617f6ff27d9b2946 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 13 May 2014 12:21:46 +0100 Subject: [PATCH 0065/1256] Remove redundant autoload --- lisp/init-org.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index dcd9a4f183..09601a2af5 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -95,7 +95,6 @@ (define-key org-mode-map (kbd "M-h") nil)) (define-key org-mode-map (kbd "C-M-") 'org-up-element) (when *is-a-mac* - (autoload 'omlg-grab-link "org-mac-link") - (define-key org-mode-map (kbd "C-c g") 'omlg-grab-link))) + (define-key org-mode-map (kbd "C-c g") 'org-mac-grab-link))) (provide 'init-org) From ef193bcdf5997f0ed49d0ecf3a77a6a4fe8ec7a7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 15 May 2014 14:24:05 +0100 Subject: [PATCH 0066/1256] Show guide-key hints for % sequences in dired --- lisp/init-dired.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 92698c4512..0ad08b8f09 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -7,6 +7,9 @@ (when (fboundp 'global-dired-hide-details-mode) (global-dired-hide-details-mode -1)) (setq dired-recursive-deletes 'top) - (define-key dired-mode-map [mouse-2] 'dired-find-file)) + (define-key dired-mode-map [mouse-2] 'dired-find-file) + (add-hook 'dired-mode-hook + (lambda () (guide-key/add-local-guide-key-sequence "%")))) + (provide 'init-dired) From 90345ac49a96dd9d3b50e6c10161980661b0671b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 15 May 2014 14:45:36 +0100 Subject: [PATCH 0067/1256] Show clock sums as hours and minutes, not "n days" etc. --- lisp/init-org.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 09601a2af5..8726e25bc0 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -52,6 +52,10 @@ ;; Removes clocked tasks with 0:00 duration (setq org-clock-out-remove-zero-time-clocks t) +;; Show clock sums as hours and minutes, not "n days" etc. +(setq org-time-clocksum-format + '(:hours "%d" :require-hours t :minutes ":%02d" :require-minutes t)) + ;; Show the clocked-in task - if any - in the header line (defun sanityinc/show-org-clock-in-header-line () (setq-default header-line-format '((" " org-mode-line-string " ")))) From 5ef96e5edc503761cf0348eca1b1f513b8b27a5e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 16 May 2014 08:30:05 +0100 Subject: [PATCH 0068/1256] Add org-pomodoro --- lisp/init-org.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 8726e25bc0..93c2111ac0 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -72,6 +72,11 @@ (define-key org-clock-mode-line-map [header-line mouse-1] 'org-clock-menu)) +(require-package 'org-pomodoro) +(after-load 'org-agenda + (define-key org-agenda-mode-map (kbd "P") 'org-pomodoro)) + + ;; ;; Show iCal calendars in the org agenda ;; (when (and *is-a-mac* (require 'org-mac-iCal nil t)) ;; (setq org-agenda-include-diary t From 269c31182563de9a5c7a3ed2bc6278ef6e176721 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 May 2014 09:50:21 +0100 Subject: [PATCH 0069/1256] Enable melpa-stable --- lisp/init-elpa.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 4ef40c7972..b05c6caeb2 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -49,6 +49,7 @@ ARCHIVE is the string name of the package archive.") ;;; Also use Melpa for most packages (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) +(add-to-list 'package-archives '("melpa-stable" . "http://melpa-stable.milkbox.net/packages/")) ;; But don't take Melpa versions of certain packages (setq package-filter-function From bc5ee7dc63e43ccc1e8f30e37752bc53493a7729 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 May 2014 09:50:45 +0100 Subject: [PATCH 0070/1256] Disable package-check-signature if gpg is not available --- lisp/init-elpa.el | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index b05c6caeb2..772065aab1 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -58,6 +58,18 @@ ARCHIVE is the string name of the package archive.") (not (memq package '()))))) + +;; If gpg cannot be found, signature checking will fail, so we +;; conditionally enable it according to whether gpg is available. We +;; re-run this check once $PATH has been configured +(defun sanityinc/package-maybe-enable-signatures () + (setq package-check-signature (if (executable-find "gpg") 'allow-unsigned))) + +(sanityinc/package-maybe-enable-signatures) +(after-load 'init-exec-path + (sanityinc/package-maybe-enable-signatures)) + + ;;; On-demand installation of packages From 57ec183a44a2f9405aceb05aeabce0aa94e67c4a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 May 2014 09:51:47 +0100 Subject: [PATCH 0071/1256] Remove unused package-filter-function code: use package-pinned-packages instead --- lisp/init-elpa.el | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 772065aab1..955bb7b902 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -11,30 +11,6 @@ (require 'package) - -;;; Add support to package.el for pre-filtering available packages - -(defvar package-filter-function nil - "Optional predicate function used to internally filter packages used by package.el. - -The function is called with the arguments PACKAGE VERSION ARCHIVE, where -PACKAGE is a symbol, VERSION is a vector as produced by `version-to-list', and -ARCHIVE is the string name of the package archive.") - -(defadvice package--add-to-archive-contents - (around filter-packages (package archive) activate) - "Add filtering of available packages using `package-filter-function', if non-nil." - (when (or (null package-filter-function) - (funcall package-filter-function - (car package) - (funcall (if (fboundp 'package-desc-version) - 'package--ac-desc-version - 'package-desc-vers) - (cdr package)) - archive)) - ad-do-it)) - - ;;; Standard package repositories @@ -51,12 +27,6 @@ ARCHIVE is the string name of the package archive.") (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) (add-to-list 'package-archives '("melpa-stable" . "http://melpa-stable.milkbox.net/packages/")) -;; But don't take Melpa versions of certain packages -(setq package-filter-function - (lambda (package version archive) - (or (not (string-equal archive "melpa")) - (not (memq package '()))))) - ;; If gpg cannot be found, signature checking will fail, so we From 573e23fb6ef26d43754a21f1d6085d8059bc8d1b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 May 2014 19:28:51 +0100 Subject: [PATCH 0072/1256] Disable marmalade --- lisp/init-elpa.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 955bb7b902..6abc349620 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -14,7 +14,7 @@ ;;; Standard package repositories -(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) +;(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) ;; We include the org repository for completeness, but don't normally ;; use it. From 4b9728d2dee6edf111bf15c71c53a86b127325a3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 20 May 2014 10:16:44 +0100 Subject: [PATCH 0073/1256] Tidy init-editing-utils somewhat --- lisp/init-editing-utils.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 50c9fea6a1..9ddf915e5c 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -40,6 +40,15 @@ (setq global-auto-revert-non-file-buffers t auto-revert-verbose nil) +(transient-mark-mode t) + + +;;; Whitespace + +(defun sanityinc/no-trailing-whitespace () + "Turn off display of trailing whitespace in this buffer." + (setq show-trailing-whitespace nil)) + ;; But don't show trailing whitespace in SQLi, inf-ruby etc. (dolist (hook '(special-mode-hook eww-mode @@ -48,14 +57,13 @@ compilation-mode-hook twittering-mode-hook minibuffer-setup-hook)) - (add-hook hook - (lambda () (setq show-trailing-whitespace nil)))) + (add-hook hook #'sanityinc/no-trailing-whitespace)) (require-package 'whitespace-cleanup-mode) (global-whitespace-cleanup-mode t) -(transient-mark-mode t) + (global-set-key (kbd "RET") 'newline-and-indent) From 0d725c10771c83e983f2e7df9f6083b87a54ea89 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 20 May 2014 10:17:03 +0100 Subject: [PATCH 0074/1256] Use shift-ret for newline at end of line --- lisp/init-editing-utils.el | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 9ddf915e5c..ec914519a6 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -64,14 +64,25 @@ (global-whitespace-cleanup-mode t) +;;; Newline behaviour (global-set-key (kbd "RET") 'newline-and-indent) +(defun sanityinc/newline-at-end-of-line () + "Move to end of line, enter a newline, and reindent." + (interactive) + (move-end-of-line 1) + (newline-and-indent)) + +(global-set-key (kbd "") 'sanityinc/newline-at-end-of-line) + + (when (eval-when-compile (string< "24.3.1" emacs-version)) ;; https://github.com/purcell/emacs.d/issues/138 (after-load 'subword (diminish 'subword-mode))) + (when (fboundp 'global-prettify-symbols-mode) (global-prettify-symbols-mode)) From e63410ec7e067fbf6bccd02747e900edfb7f46f7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 20 May 2014 10:18:42 +0100 Subject: [PATCH 0075/1256] Bind to previous history item in ido completion map --- lisp/init-ido.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-ido.el b/lisp/init-ido.el index e9ef2fdd9a..7a530d6178 100644 --- a/lisp/init-ido.el +++ b/lisp/init-ido.el @@ -34,5 +34,10 @@ (global-set-key [(meta f11)] 'sanityinc/ido-choose-from-recentf)) +;; http://www.reddit.com/r/emacs/comments/21a4p9/use_recentf_and_ido_together/cgbprem +(add-hook 'ido-setup-hook (lambda () (define-key ido-completion-map [up] 'previous-history-element))) + + + (provide 'init-ido) From 34e639068b7a86db0dae9533092b377bfd69a40c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 20 May 2014 13:35:30 +0100 Subject: [PATCH 0076/1256] Enable haskell-stylish-on-save by default --- lisp/init-haskell.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 9fb797f9b7..3b3d7eb4d6 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -17,6 +17,8 @@ (add-hook 'haskell-mode-hook (lambda () (subword-mode +1))) +(setq-default haskell-stylish-on-save t) + (after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) (define-key haskell-mode-map (kbd "C-o") 'open-line)) From 19bf8ec0479ec86555afeff4fe54f5e312341f76 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 21 May 2014 13:02:12 +0100 Subject: [PATCH 0077/1256] Disable auto-compile pending an upstream fix for #181 --- lisp/init-lisp.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 2c512d08dc..8cf7296998 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -64,9 +64,9 @@ ;; Automatic byte compilation ;; ---------------------------------------------------------------------------- -(require-package 'auto-compile) -(auto-compile-on-save-mode 1) -(auto-compile-on-load-mode 1) +;; (require-package 'auto-compile) +;; (auto-compile-on-save-mode 1) +;; (auto-compile-on-load-mode 1) ;; ---------------------------------------------------------------------------- ;; Highlight current sexp From 40fbdde761081ea523434ac4717d939e54fbb0a0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 21 May 2014 13:05:40 +0100 Subject: [PATCH 0078/1256] Keep .smex-items in ~/.emacs.d rather than home dir --- lisp/init-ido.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-ido.el b/lisp/init-ido.el index 7a530d6178..eac4b5789a 100644 --- a/lisp/init-ido.el +++ b/lisp/init-ido.el @@ -14,6 +14,8 @@ ;; Use smex to handle M-x (when (eval-when-compile (>= emacs-major-version 24)) (require-package 'smex) + ;; Change path for ~/.smex-items + (setq smex-save-file (expand-file-name ".smex-items" user-emacs-directory)) (global-set-key [remap execute-extended-command] 'smex)) (require-package 'idomenu) From 5e24c786668043047b0fde8f759be1bfaf003ef2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 21 May 2014 16:59:17 +0100 Subject: [PATCH 0079/1256] Ignore ~/.emacs.d/.smex-items --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a2ce1e1bd1..6b67336422 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ site-lisp/package/ /helm-adaptive-history /thumbs/ /emms/ +/.smex-items From e1eedf15d158d285fe82ffc84bc1f6cc24629e20 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 21 May 2014 16:59:51 +0100 Subject: [PATCH 0080/1256] Restore auto-compile now upstream fix is available for #181 This reverts commit 19bf8ec0479ec86555afeff4fe54f5e312341f76. --- lisp/init-lisp.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 8cf7296998..2c512d08dc 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -64,9 +64,9 @@ ;; Automatic byte compilation ;; ---------------------------------------------------------------------------- -;; (require-package 'auto-compile) -;; (auto-compile-on-save-mode 1) -;; (auto-compile-on-load-mode 1) +(require-package 'auto-compile) +(auto-compile-on-save-mode 1) +(auto-compile-on-load-mode 1) ;; ---------------------------------------------------------------------------- ;; Highlight current sexp From 5fe8acbbaa1a36f7f6baaa59b0ba9e6c3d4379ec Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 31 May 2014 10:16:32 +0100 Subject: [PATCH 0081/1256] Remove local nxml patch for ERB: we're using mmm-mode instead anyway --- lisp/init-site-lisp.el | 2 +- site-lisp/README | 3 + site-lisp/nxml-mode/xmltok.el | 1937 --------------------------------- 3 files changed, 4 insertions(+), 1938 deletions(-) create mode 100644 site-lisp/README delete mode 100644 site-lisp/nxml-mode/xmltok.el diff --git a/lisp/init-site-lisp.el b/lisp/init-site-lisp.el index 6a1df7f1cf..a5bf0bf38f 100644 --- a/lisp/init-site-lisp.el +++ b/lisp/init-site-lisp.el @@ -27,7 +27,7 @@ (let ((dir (site-lisp-dir-for name))) (message "Downloading %s from %s" name url) (unless (file-directory-p dir) - (make-directory dir)) + (make-directory dir t)) (add-to-list 'load-path dir) (let ((el-file (site-lisp-library-el-path name))) (url-copy-file url el-file t nil) diff --git a/site-lisp/README b/site-lisp/README new file mode 100644 index 0000000000..bb606c79f1 --- /dev/null +++ b/site-lisp/README @@ -0,0 +1,3 @@ +This is a place for 3rd party code which isn't available in MELPA or +other package repositories. This directory and its immediate subdirectories +will be added to load-path at start-up time. \ No newline at end of file diff --git a/site-lisp/nxml-mode/xmltok.el b/site-lisp/nxml-mode/xmltok.el deleted file mode 100644 index 3ea226f5a0..0000000000 --- a/site-lisp/nxml-mode/xmltok.el +++ /dev/null @@ -1,1937 +0,0 @@ -;;; xmltok.el --- XML tokenization - -;; Copyright (C) 2003, 2007-2012 Free Software Foundation, Inc. - -;; Author: James Clark -;; Keywords: XML - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see . - -;;; Commentary: - -;; This implements an XML 1.0 parser. It also implements the XML -;; Namespaces Recommendation. It is designed to be conforming, but it -;; works a bit differently from a normal XML parser. An XML document -;; consists of the prolog and an instance. The prolog is parsed as a -;; single unit using `xmltok-forward-prolog'. The instance is -;; considered as a sequence of tokens, where a token is something like -;; a start-tag, a comment, a chunk of data or a CDATA section. The -;; tokenization of the instance is stateless: the tokenization of one -;; part of the instance does not depend on tokenization of the -;; preceding part of the instance. This allows the instance to be -;; parsed incrementally. The main entry point is `xmltok-forward': -;; this can be called at any point in the instance provided it is -;; between tokens. The other entry point is `xmltok-forward-special' -;; which skips over tokens other comments, processing instructions or -;; CDATA sections (i.e. the constructs in an instance that can contain -;; less than signs that don't start a token). -;; -;; This is a non-validating XML 1.0 processor. It does not resolve -;; parameter entities (including the external DTD subset) and it does -;; not resolve external general entities. -;; -;; It is non-conformant by design in the following respects. -;; -;; 1. It expects the client to detect aspects of well-formedness that -;; are not internal to a single token, specifically checking that -;; end-tags match start-tags and that the instance contains exactly -;; one element. -;; -;; 2. It expects the client to detect duplicate attributes. Detection -;; of duplicate attributes after expansion of namespace prefixes -;; requires the namespace processing state. Detection of duplicate -;; attributes before expansion of namespace prefixes does not, but is -;; redundant given that the client will do detection of duplicate -;; attributes after expansion of namespace prefixes. -;; -;; 3. It allows the client to recover from well-formedness errors. -;; This is essential for use in applications where the document is -;; being parsed during the editing process. -;; -;; 4. It does not support documents that do not conform to the lexical -;; requirements of the XML Namespaces Recommendation (e.g. a document -;; with a colon in an entity name). -;; -;; There are also a number of things that have not yet been -;; implemented that make it non-conformant. -;; -;; 1. It does not implement default attributes. ATTLIST declarations -;; are parsed, but no checking is done on the content of attribute -;; value literals specifying default attribute values, and default -;; attribute values are not reported to the client. -;; -;; 2. It does not implement internal entities containing elements. If -;; an internal entity is referenced and parsing its replacement text -;; yields one or more tags, then it will skip the reference and -;; report this to the client. -;; -;; 3. It does not check the syntax of public identifiers in the DTD. -;; -;; 4. It allows some non-ASCII characters in certain situations where -;; it should not. For example, it only enforces XML 1.0's -;; restrictions on name characters strictly for ASCII characters. The -;; problem here is XML's character model is based squarely on Unicode, -;; whereas Emacs's is not (as of version 21). It is not clear what -;; the right thing to do is. - -;;; Code: - -(defvar xmltok-type nil) -(defvar xmltok-start nil) -(defvar xmltok-name-colon nil) -(defvar xmltok-name-end nil) -(defvar xmltok-replacement nil - "String containing replacement for a character or entity reference.") - -(defvar xmltok-attributes nil - "List containing attributes of last scanned element. -Each member of the list is a vector representing an attribute, which -can be accessed using the functions `xmltok-attribute-name-start', -`xmltok-attribute-name-colon', `xmltok-attribute-name-end', -`xmltok-attribute-value-start', `xmltok-attribute-value-end', -`xmltok-attribute-raw-normalized-value', `xmltok-attribute-refs'.") - -(defvar xmltok-namespace-attributes nil - "List containing namespace declarations of last scanned element. -List has same format as `xmltok-attributes'.") - -(defvar xmltok-dtd nil - "Information about the DTD used by `xmltok-forward'. -`xmltok-forward-prolog' sets this up. - -It consists of an alist of general entity names vs definitions. The -first member of the alist is t if references to entities not in the -alist are well-formed \(e.g. because there's an external subset that -wasn't parsed). - -Each general entity name is a string. The definition is either nil, -a symbol, a string, a cons cell. If the definition is nil, then it -means that it's an internal entity but the result of parsing it is -unknown. If it is a symbol, then the symbol is either `unparsed', -meaning the entity is an unparsed entity, `external', meaning the -entity is or references an external entity, `element', meaning the -entity includes one or more elements, or `not-well-formed', meaning -the replacement text is not well-formed. If the definition is a -string, then the replacement text of the entity is that string; this -happens only during the parsing of the prolog. If the definition is -a cons cell \(ER . AR), then ER specifies the string that results -from referencing the entity in element content and AR is either nil, -meaning the replacement text included a <, or a string which is the -normalized attribute value.") - -(defvar xmltok-dependent-regions nil - "List of descriptors of regions that a parsed token depends on. - -A token depends on a region if the region occurs after the token and a -change in the region may require the token to be reparsed. This only -happens with markup that is not well-formed. For example, if a , then the then the buffer must be reparsed from the space-count 0) - (setq xmltok-type 'space)) - (t - (forward-char 1) - (xmltok-scan-after-lt)))) - ((eq ch ?\&) - (cond ((> space-count 0) - (setq xmltok-type 'space)) - (t - (forward-char 1) - (xmltok-scan-after-amp 'xmltok-handle-entity)))) - ((re-search-forward "[<&]\\|\\(]]>\\)" nil t) - (cond ((not (match-beginning 1)) - (goto-char (match-beginning 0)) - ;; must have got a non-space char - (setq xmltok-type 'data)) - ((= (match-beginning 1) xmltok-start) - (xmltok-add-error "Found `]]>' not closing a CDATA section") - (setq xmltok-type 'not-well-formed)) - (t - (goto-char (match-beginning 0)) - (setq xmltok-type - (if (= (point) (+ xmltok-start space-count)) - 'space - 'data))))) - ((eq ch nil) - (setq xmltok-type - (if (> space-count 0) - 'space - nil))) - (t - (goto-char (point-max)) - (setq xmltok-type 'data))))) - -(defun xmltok-forward-special (bound) - "Scan forward past the first special token starting at or after point. -Return nil if there is no special token that starts before BOUND. -CDATA sections, processing instructions and comments (and indeed -anything starting with < following by ? or !) count as special. -Return the type of the token." - (when (re-search-forward "<[?!]" (1+ bound) t) - (setq xmltok-start (match-beginning 0)) - (goto-char (1+ xmltok-start)) - (let ((case-fold-search nil)) - (xmltok-scan-after-lt)))) - -(eval-when-compile - - ;; A symbolic regexp is represented by a list whose CAR is the string - ;; containing the regexp and whose cdr is a list of symbolic names - ;; for the groups in the string. - - ;; Construct a symbolic regexp from a regexp. - (defun xmltok-r (str) - (cons str nil)) - - ;; Concatenate zero of more regexps and symbolic regexps. - (defun xmltok+ (&rest args) - (let (strs names) - (while args - (let ((arg (car args))) - (if (stringp arg) - (setq strs (cons arg strs)) - (setq strs (cons (car arg) strs)) - (setq names (cons (cdr arg) names))) - (setq args (cdr args)))) - (cons (apply 'concat (nreverse strs)) - (apply 'append (nreverse names)))))) - -(eval-when-compile - ;; Make a symbolic group named NAME from the regexp R. - ;; R may be a symbolic regexp or an ordinary regexp. - (defmacro xmltok-g (name &rest r) - (let ((sym (make-symbol "r"))) - `(let ((,sym (xmltok+ ,@r))) - (if (stringp ,sym) - (cons (concat "\\(" ,sym "\\)") (cons ',name nil)) - (cons (concat "\\(" (car ,sym) "\\)") (cons ',name (cdr ,sym))))))) - - (defun xmltok-p (&rest r) (xmltok+ "\\(?:" - (apply 'xmltok+ r) - "\\)")) - - ;; Get the group index of ELEM in a LIST of symbols. - (defun xmltok-get-index (elem list) - (or elem - (error "Missing group name")) - (let ((found nil) - (i 1)) - (while list - (cond ((eq elem (car list)) - (setq found i) - (setq list nil)) - (t - (setq i (1+ i)) - (setq list (cdr list))))) - (or found - (error "Bad group name %s" elem)))) - - ;; Define a macro SYM using a symbolic regexp R. - ;; SYM can be called in three ways: - ;; (SYM regexp) - ;; expands to the regexp in R - ;; (SYM start G) - ;; expands to - ;; (match-beginning N) - ;; where N is the group index of G in R. - ;; (SYM end G) - ;; expands to - ;; (match-end N) - ;; where N is the group index of G in R. - (defmacro xmltok-defregexp (sym r) - `(defalias ',sym - (let ((r ,r)) - `(macro lambda (action &optional group-name) - (cond ((eq action 'regexp) - ,(car r)) - ((or (eq action 'start) (eq action 'beginning)) - (list 'match-beginning (xmltok-get-index group-name - ',(cdr r)))) - ((eq action 'end) - (list 'match-end (xmltok-get-index group-name - ',(cdr r)))) - ((eq action 'string) - (list 'match-string - (xmltok-get-index group-name ',(cdr r)))) - ((eq action 'string-no-properties) - (list 'match-string-no-properties - (xmltok-get-index group-name ',(cdr r)))) - (t (error "Invalid action: %s" action)))))))) - - -(eval-when-compile - (let* ((or "\\|") - (open "\\(?:") - (gopen "\\(") - (close "\\)") - (name-start-char "[_[:alpha:]]") - (name-continue-not-start-char "[-.[:digit:]]") - (name-continue-char "[-._[:alnum:]]") - (* "*") - (+ "+") - (opt "?") - (question "\\?") - (s "[ \r\t\n]") - (s+ (concat s +)) - (s* (concat s *)) - (ncname (concat name-start-char name-continue-char *)) - (entity-ref - (xmltok+ (xmltok-g entity-name ncname) - (xmltok-g entity-ref-close ";") opt)) - (decimal-ref - (xmltok+ (xmltok-g decimal "[0-9]" +) - (xmltok-g decimal-ref-close ";") opt)) - (hex-ref - (xmltok+ "x" open - (xmltok-g hex "[0-9a-fA-F]" +) - (xmltok-g hex-ref-close ";") opt - close opt)) - (char-ref - (xmltok+ (xmltok-g number-sign "#") - open decimal-ref or hex-ref close opt)) - (start-tag-close - (xmltok+ open (xmltok-g start-tag-close s* ">") - or open (xmltok-g empty-tag-slash s* "/") - (xmltok-g empty-tag-close ">") opt close - or (xmltok-g start-tag-s s+) - close)) - (start-tag - (xmltok+ (xmltok-g start-tag-name - ncname (xmltok-g start-tag-colon ":" ncname) opt) - start-tag-close opt)) - (end-tag - (xmltok+ (xmltok-g end-tag-slash "/") - open (xmltok-g end-tag-name - ncname - (xmltok-g end-tag-colon ":" ncname) opt) - (xmltok-g end-tag-close s* ">") opt - close opt)) - (comment - (xmltok+ (xmltok-g markup-declaration "!") - (xmltok-g comment-first-dash "-" - (xmltok-g comment-open "-") opt) opt)) - (erb-section - (xmltok+ "%" - (xmltok-g erb-section-open "[^%]") opt)) - (cdata-section - (xmltok+ "!" - (xmltok-g marked-section-open "\\[") - open "C" - open "D" - open "A" - open "T" - open "A" - (xmltok-g cdata-section-open "\\[" ) opt - close opt ; A - close opt ; T - close opt ; A - close opt ; D - close opt)) ; C - (processing-instruction - (xmltok-g processing-instruction-question question))) - - (xmltok-defregexp xmltok-ncname (xmltok+ open ncname close)) - - (xmltok-defregexp xmltok-after-amp - (xmltok+ entity-ref or char-ref)) - (xmltok-defregexp xmltok-after-lt - (xmltok+ start-tag - or end-tag - ;; cdata-section must come before comment - ;; because we treat "))) - (xmltok-defregexp - xmltok-prolog - (let* ((single-char (xmltok-g single-char "[[|,(\"'>]")) - (internal-subset-close (xmltok-g internal-subset-close - "][ \t\r\n]*>")) - (starts-with-close-paren - (xmltok-g close-paren - ")" - (xmltok-p - (xmltok-g close-paren-occur "[+?]") - or - (xmltok-g close-paren-star "\\*")) - opt)) - (starts-with-percent - (xmltok-g percent - "%" (xmltok-g param-entity-ref - ncname - (xmltok-g param-entity-ref-close - ";") opt) opt)) - (starts-with-nmtoken-not-name - (xmltok-g nmtoken - (xmltok-p name-continue-not-start-char or ":") - (xmltok-p name-continue-char or ":") *)) - (nmtoken-after-colon - (xmltok+ - (xmltok-p name-continue-not-start-char or ":") - (xmltok-p name-continue-char or ":") * - or - name-start-char - name-continue-char * - ":" - (xmltok-p name-continue-char or ":") *)) - (after-ncname - (xmltok+ (xmltok-g ncname-nmtoken - ":" (xmltok-p nmtoken-after-colon)) - or (xmltok-p (xmltok-g colon ":" ncname) - (xmltok-g colon-name-occur "[?+*]") opt) - or (xmltok-g ncname-occur "[?+*]") - or (xmltok-g ncname-colon ":"))) - (starts-with-name - (xmltok-g name ncname (xmltok-p after-ncname) opt)) - (starts-with-hash - (xmltok-g pound - "#" (xmltok-g hash-name ncname))) - (markup-declaration - (xmltok-g markup-declaration - "!" (xmltok-p (xmltok-g comment-first-dash "-" - (xmltok-g comment-open "-") opt) - or (xmltok-g named-markup-declaration - ncname)) opt)) - (after-lt - (xmltok+ markup-declaration - or (xmltok-g processing-instruction-question - question) - or (xmltok-g instance-start - ncname))) - (starts-with-lt (xmltok-g less-than "<" (xmltok-p after-lt) opt))) - (xmltok+ starts-with-lt - or single-char - or starts-with-close-paren - or starts-with-percent - or starts-with-name - or starts-with-nmtoken-not-name - or starts-with-hash - or internal-subset-close))))) - -(defconst xmltok-ncname-regexp (xmltok-ncname regexp)) - -(defun xmltok-scan-after-lt () - (cond ((not (looking-at (xmltok-after-lt regexp))) - (xmltok-add-error "`<' that is not markup must be entered as `<'") - (setq xmltok-type 'not-well-formed)) - (t - (goto-char (match-end 0)) - (cond ((xmltok-after-lt start start-tag-close) - (setq xmltok-name-end - (xmltok-after-lt end start-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start start-tag-colon)) - (setq xmltok-attributes nil) - (setq xmltok-namespace-attributes nil) - (setq xmltok-type 'start-tag)) - ((xmltok-after-lt start end-tag-close) - (setq xmltok-name-end - (xmltok-after-lt end end-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start end-tag-colon)) - (setq xmltok-type 'end-tag)) - ((xmltok-after-lt start start-tag-s) - (setq xmltok-name-end - (xmltok-after-lt end start-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start start-tag-colon)) - (setq xmltok-namespace-attributes nil) - (setq xmltok-attributes nil) - (xmltok-scan-attributes) - xmltok-type) - ((xmltok-after-lt start empty-tag-close) - (setq xmltok-name-end - (xmltok-after-lt end start-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start start-tag-colon)) - (setq xmltok-attributes nil) - (setq xmltok-namespace-attributes nil) - (setq xmltok-type 'empty-element)) - ((xmltok-after-lt start cdata-section-open) - (setq xmltok-type - (if (search-forward "]]>" nil t) - 'cdata-section - (xmltok-add-error "No closing ]]>") - (xmltok-add-dependent 'xmltok-unclosed-reparse-p - nil - nil - "]]>") - 'not-well-formed))) - ((xmltok-after-lt start erb-section-open) - (setq xmltok-type - (if (re-search-forward "[^%]%>" nil t) - 'erb-section - (xmltok-add-error "No closing %>") - (xmltok-add-dependent 'xmltok-unclosed-reparse-p - nil - nil - "%>") - 'not-well-formed))) - ((xmltok-after-lt start processing-instruction-question) - (xmltok-scan-after-processing-instruction-open)) - ((xmltok-after-lt start comment-open) - (xmltok-scan-after-comment-open)) - ((xmltok-after-lt start empty-tag-slash) - (setq xmltok-name-end - (xmltok-after-lt end start-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start start-tag-colon)) - (setq xmltok-attributes nil) - (setq xmltok-namespace-attributes nil) - (xmltok-add-error "Expected `/>'" (1- (point))) - (setq xmltok-type 'partial-empty-element)) - ((xmltok-after-lt start start-tag-name) - (xmltok-add-error "Missing `>'" - nil - (1+ xmltok-start)) - (setq xmltok-name-end - (xmltok-after-lt end start-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start start-tag-colon)) - (setq xmltok-namespace-attributes nil) - (setq xmltok-attributes nil) - (setq xmltok-type 'partial-start-tag)) - ((xmltok-after-lt start end-tag-name) - (setq xmltok-name-end (xmltok-after-lt end end-tag-name)) - (setq xmltok-name-colon - (xmltok-after-lt start end-tag-colon)) - (cond ((and (not xmltok-name-colon) - (eq (char-after) ?:)) - (goto-char (1+ (point))) - (xmltok-add-error "Expected name following `:'" - (1- (point)))) - (t - (xmltok-add-error "Missing `>'" - nil - (1+ xmltok-start)))) - (setq xmltok-type 'partial-end-tag)) - ((xmltok-after-lt start end-tag-slash) - (xmltok-add-error "Expected name following `) in unclosed PI -(defun xmltok-scan-after-processing-instruction-open () - (cond ((not (search-forward "?>" nil t)) - (xmltok-add-error "No closing ?>" - xmltok-start - (+ xmltok-start 2)) - (xmltok-add-dependent 'xmltok-unclosed-reparse-p - nil - nil - "?>") - (setq xmltok-type 'not-well-formed)) - (t - (cond ((not (save-excursion - (goto-char (+ 2 xmltok-start)) - (and (looking-at (xmltok-ncname regexp)) - (setq xmltok-name-end (match-end 0))))) - (setq xmltok-name-end (+ xmltok-start 2)) - (xmltok-add-error "") - (xmltok-add-dependent 'xmltok-unclosed-reparse-p - nil - nil - ;; not --> because - ;; -- is not allowed - ;; in comments in XML - "--") - 'not-well-formed) - ((eq (char-after) ?>) - (goto-char (1+ (point))) - 'comment) - (t - (xmltok-add-dependent - 'xmltok-semi-closed-reparse-p - nil - (point) - "--" - 2) - ;; just include the