A bunch of changes...
This commit is contained in:
parent
eb06ac12c4
commit
5d72a0905e
1 changed files with 58 additions and 78 deletions
136
emacs/init.el
136
emacs/init.el
|
@ -5,22 +5,24 @@
|
|||
(require 'uniquify)
|
||||
|
||||
(eval-when-compile
|
||||
(package-initialize)
|
||||
|
||||
(require 'cl)
|
||||
(require 'esh-io)
|
||||
(require 'esh-proc)
|
||||
(require 'dash))
|
||||
|
||||
(autoload 'define-slime-contrib "slime")
|
||||
(autoload 'gtags-mode "gtags" nil t)
|
||||
(autoload 'jabber-connect "jabber" nil t)
|
||||
(autoload 'jabber-message-libnotify "jabber-libnotify")
|
||||
(autoload 'jabber-muc-libnotify "jabber-libnotify")
|
||||
(autoload 'jabber-send-message "jabber-chat")
|
||||
(autoload 'notifications-notify "notifications")
|
||||
(autoload 'php-mode "php-mode" nil t)
|
||||
(autoload 'po-mode "po-mode" nil t)
|
||||
(autoload 'pony-mode "pony-mode" nil t)
|
||||
(autoload 'sawfish-mode "sawfish" nil t)
|
||||
(autoload 'server-running-p "server")
|
||||
(autoload 'slime-js-minor-mode "slime-js" nil t)
|
||||
(autoload 'tagedit-mode "tagedit" nil t)
|
||||
(autoload 'w3m-bookmark-view "w3m" nil t)
|
||||
(autoload 'w3m-goto-url "w3m" nil t)
|
||||
|
@ -95,7 +97,7 @@ FEATURE may be an unquoted feature symbol or a file name, see
|
|||
(mark-defun)
|
||||
(indent-region (region-beginning) (region-end))))
|
||||
|
||||
(eval-when-compile
|
||||
(eval-and-compile
|
||||
(defun level (lst)
|
||||
(let ((lsts (mapcar (lambda (l) (if (listp l) l (list l))) lst)))
|
||||
(apply #'append lsts))))
|
||||
|
@ -175,6 +177,9 @@ Also change directories to current working directory."
|
|||
(interactive)
|
||||
(revert-buffer nil t nil))
|
||||
|
||||
(defun set-emacs-lisp-keys ()
|
||||
(local-set-key (kbd "C-.") 'find-function))
|
||||
|
||||
(defun set-smartparens-keys ()
|
||||
(local-set-key [remap backward-delete-char] 'sp-backward-delete-char)
|
||||
(local-set-key [remap delete-char] 'sp-delete-char)
|
||||
|
@ -211,6 +216,20 @@ Also change directories to current working directory."
|
|||
(stante-after "bindings"
|
||||
(setq mode-line-default-help-echo ""))
|
||||
|
||||
(stante-after auto-complete
|
||||
(add-to-list 'ac-modes 'slime-repl-mode)
|
||||
(setq-default ac-sources '(ac-source-imenu
|
||||
ac-source-gtags
|
||||
ac-source-abbrev
|
||||
ac-source-yasnippet
|
||||
ac-source-words-in-buffer
|
||||
ac-source-words-in-same-mode-buffers
|
||||
ac-source-dictionary
|
||||
ac-source-functions
|
||||
ac-source-symbols
|
||||
ac-source-variables
|
||||
ac-source-features)))
|
||||
|
||||
(stante-after browse-url
|
||||
(setq browse-url-browser-function 'browse-url-generic)
|
||||
(setq browse-url-generic-program (getenv "BROWSER")))
|
||||
|
@ -246,7 +265,8 @@ Also change directories to current working directory."
|
|||
"dailies" "work" "tasks"
|
||||
(or "bookmarks.org"
|
||||
"contacts.org")) eol))
|
||||
(rx (or "*ielm*" "*-jabber-roster-*" "*eshell*"))
|
||||
(rx (or "*ielm*" "*-jabber-roster-*" "*eshell*"
|
||||
"*ansi-term*"))
|
||||
(rx (and "*" (or "magit" "scratch-") (1+ anything)
|
||||
"*")))
|
||||
desktop-clear-preserve-buffers))
|
||||
|
@ -259,6 +279,12 @@ Also change directories to current working directory."
|
|||
(setq eap-music-library "/mnt/music")
|
||||
(setq eap-playlist-library "~/music/playlists"))
|
||||
|
||||
(stante-after ediff-wind
|
||||
(setq ediff-window-setup-function 'ediff-setup-windows-plain))
|
||||
|
||||
(stante-after eltuki
|
||||
(setq eltuki-blog-dir "~/documents/blog"))
|
||||
|
||||
(stante-after em-prompt
|
||||
(setq eshell-highlight-prompt nil)
|
||||
(setq eshell-prompt-function 'oni-eshell-prompt)
|
||||
|
@ -348,11 +374,15 @@ Also change directories to current working directory."
|
|||
(setq ido-ubiquitous-command-exceptions
|
||||
'(org-refile org-capture-refile)))
|
||||
|
||||
(stante-after imenu
|
||||
(setq imenu-auto-rescan t))
|
||||
|
||||
(stante-after jabber
|
||||
(remove-hook 'jabber-alert-presence-hooks 'jabber-presence-echo)
|
||||
(setq jabber-account-list
|
||||
`((,(concat "tom@ryuslash.org/" (hostname))
|
||||
(:connection-type . ssl)))))
|
||||
(:connection-type . ssl))
|
||||
(,(concat "ryuslash@ninthfloor.org/" (hostname))))))
|
||||
|
||||
(stante-after jabber-avatar
|
||||
(setq jabber-avatar-cache-directory "~/.emacs.d/jabber-avatars/"))
|
||||
|
@ -363,7 +393,7 @@ Also change directories to current working directory."
|
|||
(setq jabber-chat-local-prompt-format "%t %u/%r >\n")
|
||||
(setq jabber-chat-buffer-show-avatar nil))
|
||||
|
||||
(stante-after jabber-chat-states
|
||||
(stante-after jabber-chatstates
|
||||
(setq jabber-chatstates-confirm nil))
|
||||
|
||||
(stante-after jabber-history
|
||||
|
@ -392,7 +422,10 @@ Also change directories to current working directory."
|
|||
(setq jit-lock-defer-time 0.2))
|
||||
|
||||
(stante-after magit
|
||||
(setq magit-repo-dirs '("~/projects/")))
|
||||
(setq magit-repo-dirs '("~/projects/"))
|
||||
(setq magit-default-tracking-name-function
|
||||
'magit-default-tracking-name-branch-only)
|
||||
(setq magit-diff-refine-hunk 'all))
|
||||
|
||||
(stante-after message
|
||||
(setq message-send-mail-function 'message-send-mail-with-sendmail)
|
||||
|
@ -401,6 +434,9 @@ Also change directories to current working directory."
|
|||
(stante-after minibuf-eldef
|
||||
(setq minibuffer-eldef-shorten-default t))
|
||||
|
||||
(stante-after mouse
|
||||
(setq mouse-yank-at-point t))
|
||||
|
||||
(stante-after org
|
||||
(setq org-special-ctrl-a/e t))
|
||||
|
||||
|
@ -433,6 +469,9 @@ Also change directories to current working directory."
|
|||
(stante-after slime
|
||||
(setq inferior-lisp-program "sbcl --noinform --no-linedit"))
|
||||
|
||||
(stante-after smartparens
|
||||
(setq sp-cancel-autoskip-on-backward-movement nil))
|
||||
|
||||
(stante-after smex
|
||||
(setq smex-key-advice-ignore-menu-bar t)
|
||||
(setq smex-save-file "~/.emacs.d/smex-items"))
|
||||
|
@ -482,22 +521,26 @@ Also change directories to current working directory."
|
|||
((css) rainbow-mode)
|
||||
((emacs-lisp go html lua php python rst ruby rust sh) flycheck-mode)
|
||||
((emacs-lisp ielm) eldoc-mode)
|
||||
((emacs-lisp ielm) set-emacs-lisp-keys)
|
||||
((eshell) buffer-disable-undo)
|
||||
((html org prog) yas-minor-mode)
|
||||
((html prog) fci-mode)
|
||||
((python) smartparens-mode)
|
||||
((html) tagedit-mode)
|
||||
((js2) slime-js-minor-mode)
|
||||
((jabber-chat) visual-line-mode)
|
||||
((js2 python) smartparens-mode)
|
||||
((markdown python) whitespace-mode)
|
||||
((prog text) auto-fill-mode)
|
||||
((prog) rainbow-delimiters-mode)
|
||||
((python) jedi:setup)
|
||||
((slime slime-repl) set-up-slime-ac)
|
||||
((smartparens) set-smartparens-keys)
|
||||
((tagedit) tagedit-add-experimental-features)
|
||||
((tagedit) tagedit-add-paredit-like-keybindings)
|
||||
((text) flyspell-mode)
|
||||
((vala) oni:vala-mode-func))
|
||||
|
||||
|
||||
|
||||
(add-hook 'emacs-startup-hook 'pretty-control-l-mode)
|
||||
(add-hook 'after-make-frame-functions
|
||||
'(lambda (arg) (pretty-control-l-mode)))
|
||||
|
@ -515,7 +558,7 @@ Also change directories to current working directory."
|
|||
(vertical-scroll-bars . nil)
|
||||
(menu-bar-lines . nil)
|
||||
(tool-bar-lines . nil)
|
||||
(font . "Envy Code R:pixelsize=16")))
|
||||
(font . "Liberation Mono:pixelsize=16")))
|
||||
(setq frame-title-format '(:eval (concat "emacs: " (buffer-name))))
|
||||
(setq inhibit-local-menu-bar-menus t)
|
||||
(setq message-log-max 1000)
|
||||
|
@ -523,6 +566,7 @@ Also change directories to current working directory."
|
|||
(setq use-dialog-box nil)
|
||||
(setq user-full-name "Tom Willemse")
|
||||
(setq window-combination-resize t)
|
||||
(setq scroll-preserve-screen-position t)
|
||||
(add-to-list 'debug-ignored-errors "^Can't shift all lines enough")
|
||||
;; Can't be put in an eval-after-load or such because by then it will
|
||||
;; be too late.
|
||||
|
@ -596,7 +640,7 @@ Also change directories to current working directory."
|
|||
(global-set-key (kbd "C-c c") 'org-capture)
|
||||
(global-set-key (kbd "C-c d c") 'desktop-clear)
|
||||
(global-set-key (kbd "C-c d d") 'desktop-registry-change-desktop)
|
||||
(global-set-key (kbd "C-c d s") 'desktop-save)
|
||||
(global-set-key (kbd "C-c d s") 'desktop-save-in-desktop-dir)
|
||||
(global-set-key (kbd "C-c i p") 'identica-update-status-interactive)
|
||||
(global-set-key (kbd "C-c p") 'oni:show-buffer-position)
|
||||
(global-set-key (kbd "C-c t") 'oni:raise-ansi-term)
|
||||
|
@ -608,9 +652,9 @@ Also change directories to current working directory."
|
|||
(global-set-key (kbd "M-2") 'split-window-below)
|
||||
(global-set-key (kbd "M-3") 'split-window-right)
|
||||
(global-set-key (kbd "M-4") 'split-window-horizontally)
|
||||
(global-set-key (kbd "M-n") 'helm-imenu)
|
||||
(global-set-key (kbd "M-n") 'idomenu)
|
||||
(global-set-key (kbd "M-o") 'other-window)
|
||||
(global-set-key (kbd "M-x") 'smex)
|
||||
(global-set-key (kbd "M-x") 'smex)
|
||||
(global-set-key (kbd "\"") 'oni:self-insert-dwim)
|
||||
(global-set-key [remap move-beginning-of-line] 'move-beginning-of-dwim)
|
||||
|
||||
|
@ -630,29 +674,6 @@ Also change directories to current working directory."
|
|||
(help-at-pt-set-timer)
|
||||
(windmove-default-keybindings)
|
||||
|
||||
;;; Popping up multiple frames out of the blue does not usually play
|
||||
;;; well with (manual) tiling window managers.
|
||||
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
|
||||
|
||||
;;; Not being able to find newly written functions in imenu is a pain.
|
||||
(setq imenu-auto-rescan t)
|
||||
|
||||
;;; Yanking at click makes not sense to me. I normally have my cursor
|
||||
;;; where it needs to point and if I *have* to use the mouse I prefer
|
||||
;;; just clicking it wherever it lands, without having to drag it all
|
||||
;;; the way to the proper place.
|
||||
(setq mouse-yank-at-point t)
|
||||
|
||||
;;; Always having to move the cursor around so much after scrolling
|
||||
;;; gets annoying.
|
||||
(setq scroll-preserve-screen-position t)
|
||||
|
||||
;;; I store my blog posts in `~/documents/blog', not the default
|
||||
;;; `~/Blog'.
|
||||
(setq eltuki-blog-dir "~/documents/blog")
|
||||
|
||||
(setq sp-cancel-autoskip-on-backward-movement nil)
|
||||
|
||||
(defun oni:scroll-down-or-prev-page (arg)
|
||||
"Either scroll down or go to the previous page.
|
||||
|
||||
|
@ -684,31 +705,9 @@ Depending on the value of `buffer-narrowed-p'."
|
|||
(global-set-key (kbd "<prior>") 'oni:scroll-down-or-prev-page)
|
||||
(global-set-key (kbd "<next>") 'oni:scroll-up-or-next-page)
|
||||
|
||||
;;;; Auto-complete
|
||||
|
||||
(setq-default ac-sources '(ac-source-imenu
|
||||
ac-source-gtags
|
||||
ac-source-abbrev
|
||||
ac-source-yasnippet
|
||||
ac-source-words-in-buffer
|
||||
ac-source-words-in-same-mode-buffers
|
||||
ac-source-dictionary
|
||||
ac-source-functions
|
||||
ac-source-symbols
|
||||
ac-source-variables
|
||||
ac-source-features))
|
||||
|
||||
;;;; Magit
|
||||
|
||||
(setq magit-default-tracking-name-function
|
||||
'magit-default-tracking-name-branch-only)
|
||||
(setq magit-diff-refine-hunk 'all)
|
||||
|
||||
;;; Finally, load any `customize' settings.
|
||||
(load custom-file)
|
||||
|
||||
(autoload 'notifications-notify "notifications")
|
||||
(autoload 'jabber-send-message "jabber-chat")
|
||||
|
||||
(defmacro oni:email (user at host dot com)
|
||||
"Turn arguments into an email address.
|
||||
|
@ -719,7 +718,6 @@ DOT are intentionally being skipped."
|
|||
|
||||
(defun oni:after-save-func ()
|
||||
"Function for `after-save-hook'."
|
||||
(oni:compile-el)
|
||||
(executable-make-buffer-file-executable-if-script-p)
|
||||
(let* ((dom-dir (locate-dominating-file (buffer-file-name) "Makefile"))
|
||||
(TAGSp (not (string= "" (shell-command-to-string
|
||||
|
@ -765,15 +763,6 @@ DOT are intentionally being skipped."
|
|||
"Generate a hex color by taking the first 6 characters of OBJECT's MD5 sum."
|
||||
(format "#%s" (substring (md5 object) 0 6)))
|
||||
|
||||
(defun oni:compile-el ()
|
||||
"Compile the current buffer file if it is an .el file."
|
||||
(let* ((full-file-name (buffer-file-name))
|
||||
(file-name (file-name-nondirectory full-file-name))
|
||||
(suffix (file-name-extension file-name)))
|
||||
(if (and (not (string-equal file-name ".dir-locals.el"))
|
||||
(string-equal suffix "el"))
|
||||
(byte-compile-file full-file-name))))
|
||||
|
||||
(defun oni:css-mode-func ()
|
||||
"Function for `css-mode-hook'."
|
||||
(local-set-key "\C-j" 'oni:newline-and-indent))
|
||||
|
@ -867,8 +856,7 @@ If COUNT has been specified indent by that much, otherwise look at
|
|||
|
||||
(defun oni:js2-mode-func ()
|
||||
"Function for `js2-mode-hook'."
|
||||
(oni:js-mode-func)
|
||||
(local-set-key (kbd "<f5>") #'slime-js-reload))
|
||||
(oni:js-mode-func))
|
||||
|
||||
(defun oni:lua-mode-func()
|
||||
"Function for `lua-mode-hook'."
|
||||
|
@ -1146,11 +1134,3 @@ If no direction is given, don't split."
|
|||
(define-key yas-minor-mode-map (kbd "TAB") nil)
|
||||
(define-key yas-minor-mode-map [(tab)] nil)
|
||||
(define-key yas-minor-mode-map (kbd "C-\\") 'yas-expand))
|
||||
|
||||
(defvar oni:mailbox-map
|
||||
'("top" ("menu"
|
||||
("ryulash.org" . "ryuslash")
|
||||
("ninthfloor" . "ninthfloor")
|
||||
("gmail" . "gmail")
|
||||
("aethon" . "aethon")))
|
||||
"A mailbox map for use with `tmm-prompt'.")
|
||||
|
|
Loading…
Reference in a new issue