#+BEGIN_SRC emacs-lisp
(add-to-list 'load-path '"~/lib/emacs_el/")
- (add-to-list 'load-path '"~/lib/emacs_el/helm")
(add-to-list 'load-path '"~/lib/emacs_el/tiny-tools/lisp/tiny")
(add-to-list 'load-path '"~/lib/emacs_el/tiny-tools/lisp/other")
- (add-to-list 'load-path '"~/lib/emacs_el/auctex/lisp")
- (add-to-list 'load-path '"~/lib/emacs_el/auctex")
- (add-to-list 'load-path '"~/lib/emacs_el/ESS/lisp")
- (add-to-list 'load-path '"~/lib/emacs_el/org-mode/lisp")
- (add-to-list 'load-path '"~/lib/emacs_el/auctex-beamer")
(add-to-list 'load-path '"~/lib/emacs_el/magit-annex")
- (add-to-list 'load-path '"~/lib/emacs_el/polymode")
#+END_SRC
* Package management
** package repositories and package manager
#+BEGIN_SRC emacs-lisp
+ (require 'package)
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")
("org" . "http://orgmode.org/elpa/") ))
- (package-initialize)
#+END_SRC
** [[https://github.com/jwiegley/use-package/][use-package]]
#+BEGIN_SRC emacs-lisp
(require 'use-package)
+ (package-initialize)
+#+END_SRC
+** Paradox
+#+BEGIN_SRC emacs-lisp
+ (package-initialize)
+ (use-package paradox
+ :ensure paradox
+ )
#+END_SRC
-
* Misc functions
** with-library
#+BEGIN_SRC emacs-lisp
(add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook)
#+END_SRC
* Modules
+** Flyspell 🐝
+#+BEGIN_SRC emacs-lisp
+ (use-package flyspell
+ :ensure t
+ :diminish flyspell-mode 🐝
+ :config
+ (add-hook 'message-mode-hook 'turn-on-flyspell)
+ (add-hook 'text-mode-hook 'turn-on-flyspell)
+ (add-hook 'c-mode-common-hook 'flyspell-prog-mode)
+ (add-hook 'cperl-mode-hook 'flyspell-prog-mode)
+ (add-hook 'tcl-mode-hook 'flyspell-prog-mode)
+ :init
+ (setq ispell-program-name "ispell")
+ )
+
+#+END_SRC
** Winnermode
#+BEGIN_SRC emacs-lisp
-(winner-mode 1)
+ (winner-mode 1)
+#+END_SRC
+** Eyebrowse
+
+#+BEGIN_SRC emacs-lisp
+ ;; (use-package eyebrowse
+ ;; :ensure t
+ ;; :diminish eyebrowse-mode
+ ;; :init (setq eyebrowse-keymap-prefix (kbd "C-c C-\\"))
+ ;; :config (progn
+ ;; (setq eyebrowse-wrap-around t)
+ ;; (eyebrowse-mode t)
+ ;;
+ ;; (defun my/eyebrowse-new-window-config ()
+ ;; (interactive)
+ ;; (let ((done nil))
+ ;; (dotimes (i 10)
+ ;; ;; start at 1 run till 0
+ ;; (let ((j (mod (+ i 1) 10)))
+ ;; (when (and (not done)
+ ;; (not (eyebrowse--window-config-present-p j)))
+ ;; (eyebrowse-switch-to-window-config j)
+ ;; (call-interactively 'eyebrowse-rename-window-config2 j)
+ ;; (setq done t)
+ ;; ))
+ ;; )))
+ ;;
+ ;; ;; I don't use latex-preview-pane
+ ;; ;; (require 'latex-preview-pane)
+ ;; ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
+ ;; ;; ;; latex-preview-pane uses window-parameters which are
+ ;; ;; ;; not preserved by eyebrowse, so we close the preview
+ ;; ;; ;; pane before switching, it will be regenerated when we
+ ;; ;; ;; edit the TeX file.
+ ;; ;; (when (lpp/window-containing-preview)
+ ;; ;; (delete-window (lpp/window-containing-preview))))
+ ;;
+ ;; ;; (add-to-list 'eyebrowse-pre-window-switch-hook
+ ;; ;; #'my/close-latex-preview-pane-before-eyebrowse-switch)
+ ;;
+ ;; ;; (my/set-menu-key "[" #'my/eyebrowse-new-window-config)
+ ;; ;; (my/set-menu-key ";" #'eyebrowse-prev-window-config)
+ ;; ;; (my/set-menu-key "'" #'eyebrowse-next-window-config)
+ ;; ;; (my/set-menu-key "]" #'eyebrowse-close-window-config)
+ ;; ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config)
+ ;; )
+ ;; )
+#+END_SRC
+
+** Window handling
+
+*** Splitting
+#+BEGIN_SRC emacs-lisp
+ (defun my/vsplit-last-buffer ()
+ "Split the window vertically and display the previous buffer."
+ (interactive)
+ (split-window-vertically)
+ (other-window 1 nil)
+ (switch-to-next-buffer))
+
+ (defun my/hsplit-last-buffer ()
+ "Split the window horizontally and display the previous buffer."
+ (interactive)
+ (split-window-horizontally)
+ (other-window 1 nil)
+ (switch-to-next-buffer))
+
+ (bind-key "C-x 2" 'my/vsplit-last-buffer)
+ (bind-key "C-x 3" 'my/hsplit-last-buffer)
+
+ (setq split-width-threshold 100)
+ (setq split-height-threshold 60)
+
+ (defun my/split-window-prefer-vertically (window)
+ "If there's only one window (excluding any possibly active
+ minibuffer), then split the current window horizontally."
+ (if (and (one-window-p t)
+ (not (active-minibuffer-window))
+ ( < (frame-width) (frame-height))
+ )
+ (let ((split-width-threshold nil))
+ (split-window-sensibly window))
+ (split-window-sensibly window)))
+
+ (setq split-window-preferred-function #'my/split-window-prefer-vertically)
+ (setq window-combination-resize t)
+#+END_SRC
+
+*** Compilation window
+
+If there is no compilation window, open one at the bottom, spanning
+the complete width of the frame. Otherwise, reuse existing window. In
+the former case, if there was no error the window closes
+automatically.
+
+#+BEGIN_SRC emacs-lisp
+ (add-to-list 'display-buffer-alist
+ `(,(rx bos "*compilation*" eos)
+ (display-buffer-reuse-window
+ display-buffer-in-side-window)
+ (reusable-frames . visible)
+ (side . bottom)
+ (window-height . 0.4)))
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp
+ (defun my/compilation-exit-autoclose (status code msg)
+ ;; If M-x compile exists with a 0
+ (when (and (eq status 'exit) (zerop code))
+ ;; and delete the *compilation* window
+ (let ((compilation-window (get-buffer-window (get-buffer "*compilation*"))))
+ (when (and (not (window-at-side-p compilation-window 'top))
+ (window-at-side-p compilation-window 'left)
+ (window-at-side-p compilation-window 'right))
+ (delete-window compilation-window))))
+ ;; Always return the anticipated result of compilation-exit-message-function
+ (cons msg code))
+
+ ;; Specify my function (maybe I should have done a lambda function)
+ (setq compilation-exit-message-function #'my/compilation-exit-autoclose)
+#+END_SRC
+
+If you change the variable ~compilation-scroll-output~ to a ~non-nil~
+value, the compilation buffer scrolls automatically to follow the
+output. If the value is ~first-error~, scrolling stops when the first
+error appears, leaving point at that error. For any other non-nil
+value, scrolling continues until there is no more output.
+
+#+BEGIN_SRC emacs-lisp
+ (setq compilation-scroll-output 'first-error)
+#+END_SRC
+
+** Mode line cleaning
+*** Diminish
+#+BEGIN_SRC emacs-lisp
+ (use-package diminish
+ :ensure t)
#+END_SRC
+
+*** Delight
+#+BEGIN_SRC emacs-lisp
+ (use-package delight
+ :ensure t)
+#+END_SRC
+
+** Jumping
+*** Avy
+#+BEGIN_SRC emacs-lisp
+(use-package avy
+ :ensure t
+ :bind ("C-c C-SPC" . avy-goto-word-1)
+ :config (progn
+ (setq avy-background t)
+ (key-chord-define-global "jj" #'avy-goto-word-1)))
+#+END_SRC
+
+** Snippets
+
+*** Yasnippet
+#+BEGIN_SRC emacs-lisp
+ (use-package yasnippet
+ :ensure t
+ :diminish yas-minor-mode
+ :config (progn
+ (yas-global-mode)
+ (setq yas-verbosity 1)
+ (define-key yas-minor-mode-map (kbd "<tab>") nil)
+ (define-key yas-minor-mode-map (kbd "TAB") nil)
+ (define-key yas-minor-mode-map (kbd "<backtab>") 'yas-expand)
+ ))
+#+END_SRC
+
+** Helm Flx
+
+[[https://github.com/PythonNut/helm-flx][helm-flx]] implements intelligent helm fuzzy sorting, provided by [[https://github.com/lewang/flx][flx]].
+
+#+BEGIN_SRC emacs-lisp
+(use-package helm-flx
+ :ensure t
+ :config (progn
+ ;; these are helm configs, but they kind of fit here nicely
+ (setq helm-M-x-fuzzy-match t
+ helm-bookmark-show-location t
+ helm-buffers-fuzzy-matching t
+ helm-completion-in-region-fuzzy-match t
+ helm-file-cache-fuzzy-match t
+ helm-imenu-fuzzy-match t
+ helm-mode-fuzzy-match t
+ helm-locate-fuzzy-match nil
+ helm-quick-update t
+ helm-recentf-fuzzy-match nil
+ helm-semantic-fuzzy-match t)
+ (helm-flx-mode +1)))
+#+END_SRC
+
+
** Tinyprocmail
#+BEGIN_SRC emacs-lisp
;; load tinyprocmail
- (with-library 'tinyprocmail
- ; (setq tinyprocmail--procmail-version "v3.22")
- (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
+ (use-package tinyprocmail
+ :ensure f
+ :config (with-library 'tinyprocmail
+ ;; (setq tinyprocmail--procmail-version "v3.22")
+ (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
+ )
#+END_SRC
** Magit
#+BEGIN_SRC emacs-lisp :tangle don-configuration.el
- ; don't verify where we are pushing
- (setq magit-push-always-verify nil)
- ;; refine diffs always (hilight words)
- (setq magit-diff-refine-hunk 'all)
- ;; load magit-annex
- (setq load-path
- (append '("~/lib/emacs_el/magit-annex")
- load-path))
- (require 'magit-annex)
+ (use-package magit
+ :ensure t
+ :bind (("C-x g" . magit-status)
+ ("C-x C-g" . magit-status))
+ :config
+ ;; don't verify where we are pushing
+ (setq magit-push-always-verify nil)
+ ;; refine diffs always (hilight words)
+ (setq magit-diff-refine-hunk nil)
+ ;; load magit-annex
+ (setq load-path
+ (append '("~/lib/emacs_el/magit-annex")
+ load-path))
+ ;; load magit-vcsh
+ (setq load-path
+ (append '("~/lib/emacs_el/magit-vcsh")
+ load-path))
+ )
+ (use-package magit-annex
+ :ensure t
+ )
+ (use-package magit-vcsh
+ :ensure f ; currently not in melpa, so don't try to install
+ )
#+END_SRC
** Perl
** Helm
#+BEGIN_SRC emacs-lisp
-(require 'don-helm)
+ (use-package helm
+ :ensure t
+ :config
+ (helm-mode 1)
+ (define-key global-map [remap find-file] 'helm-find-files)
+ (define-key global-map [remap occur] 'helm-occur)
+ (define-key global-map [remap list-buffers] 'helm-buffers-list)
+ (define-key global-map [remap dabbrev-expand] 'helm-dabbrev)
+ (global-set-key (kbd "M-x") 'helm-M-x)
+ (unless (boundp 'completion-in-region-function)
+ (define-key lisp-interaction-mode-map [remap completion-at-point] 'helm-lisp-completion-at-point)
+ (define-key emacs-lisp-mode-map [remap completion-at-point] 'helm-lisp-completion-at-point))
+ (add-hook 'kill-emacs-hook #'(lambda () (and (file-exists-p "$TMP") (delete-file "$TMP"))))
+ )
#+END_SRC
** Hydra
#+BEGIN_SRC emacs-lisp :tangle don-configuration.el
(tramp-remote-shell-args
("-c"))))
#+END_SRC
+** Reftex
+#+BEGIN_SRC emacs-lisp
+ (use-package reftex
+ :ensure t
+ :config
+ (setq-default reftex-default-bibliography
+ '("~/projects/research/references.bib")))
+#+END_SRC
** LaTeX
#+BEGIN_SRC emacs-lisp
- (load "auctex.el" nil t t)
- (load "preview-latex.el" nil t t)
- (load "latex.el" nil t t)
-
- ;; this is in the very newest auctex; avoid for now
- (add-to-list 'LaTeX-fill-excluded-macros
- '("Sexpr"))
- ;; REFTEX (much enhanced management of cross-ref, labels, etc)
- ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/
- (autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t)
- (autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
- (autoload 'reftex-citation "reftex-cite" "Make citation" nil)
- (autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
- (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
- (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
- (add-hook 'LaTeX-mode-hook 'outline-minor-mode) ; with AUCTeX LaTeX mode
- (add-hook 'latex-mode-hook 'outline-minor-mode) ; with Emacs latex mode
-
- ; use smart quotes by default instead of `` and ''
- ; taken from http://kieranhealy.org/esk/kjhealy.html
- (setq TeX-open-quote "“")
- (setq TeX-close-quote "”")
-
- ;; (TeX-add-style-hook
- ;; "latex"
- ;; (lambda ()
- ;; (TeX-add-symbols
- ;; '("DLA" 1))))
- ;; (custom-set-variables
- ;; '(font-latex-user-keyword-classes
- ;; '(("fixme"
- ;; ("DLA" "RZ")
- ;; font-lock-function-name-face 2 (command 1 t))))
- ;; )
-
- (require 'font-latex)
- (setq font-latex-match-reference-keywords
- '(
- ("fref" "{")
- ("Fref" "{")
- ("citep" "{")
- ("citet" "{")
- ("acs" "{")
- ("acsp" "{")
- ("ac" "{")
- ("acp" "{")
- ("acl" "{")
- ("aclp" "{")
- ("acsu" "{")
- ("aclu" "{")
- ("acused" "{")
- ; ))
- ; (setq font-latex-match-warning-keywords
- ; '(
- ("DLA" "{")
- ("RZ" "{")
- ("OM" "{")
- ("DL" "{")
- ("fixme" "{")))
-
- (setq-default TeX-parse-self t)
- (setq-default TeX-auto-save t)
- (setq-default TeX-master nil)
- (eval-after-load
- "latex"
- '(TeX-add-style-hook
- "cleveref"
- (lambda ()
- (if (boundp 'reftex-ref-style-alist)
- (add-to-list
- 'reftex-ref-style-alist
- '("Cleveref" "cleveref"
- (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D)))))
- (reftex-ref-style-activate "Cleveref")
- (TeX-add-symbols
- '("cref" TeX-arg-ref)
- '("Cref" TeX-arg-ref)
- '("cpageref" TeX-arg-ref)
- '("Cpageref" TeX-arg-ref)))))
- ;; this doesn't seem to work; not currently sure why
- ; (setq font-latex-user-keyword-classes
- ; '(("my-warning-commands"
- ; (("DLA" "{")
- ; ("RZ" "{")
- ; ("OM" "{")
- ; ("DL" "{")
- ; ("fixme" "{")
- ; )
- ; (:foreground "red" :weight bold :underline (:color foreground-color :style line)))
- ; ))
-
- (setq-default reftex-default-bibliography
- '("~/projects/research/references.bib"))
-
+ (use-package tex
+ :defer t
+ :ensure auctex
+ :config
+ ; (add-to-list 'TeX-style-path '"/home/don/lib/emacs_el/auctex/style")
+ ;; REFTEX (much enhanced management of cross-ref, labels, etc)
+ ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/
+ ; (autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t)
+ ; (autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
+ ; (autoload 'reftex-citation "reftex-cite" "Make citation" nil)
+ ; (autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
+ (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
+ (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
+ (add-hook 'LaTeX-mode-hook 'outline-minor-mode) ; with AUCTeX LaTeX mode
+ (add-hook 'latex-mode-hook 'outline-minor-mode) ; with Emacs latex mode
+
+ (setq-default reftex-plug-into-AUCTeX t)
+ ;; support fake section headers
+ (setq TeX-outline-extra
+ '(("%chapter" 1)
+ ("%section" 2)
+ ("%subsection" 3)
+ ("%subsubsection" 4)
+ ("%paragraph" 5)))
+ ;; add font locking to the headers
+ (font-lock-add-keywords
+ 'latex-mode
+ '(("^%\\(chapter\\|\\(sub\\|subsub\\)?section\\|paragraph\\)"
+ 0 'font-lock-keyword-face t)
+ ("^%chapter{\\(.*\\)}" 1 'font-latex-sectioning-1-face t)
+ ("^%section{\\(.*\\)}" 1 'font-latex-sectioning-2-face t)
+ ("^%subsection{\\(.*\\)}" 1 'font-latex-sectioning-3-face t)
+ ("^%subsubsection{\\(.*\\)}" 1 'font-latex-sectioning-4-face t)
+ ("^%paragraph{\\(.*\\)}" 1 'font-latex-sectioning-5-face t)))
+
+ ;; use smart quotes by default instead of `` and ''
+ ;; taken from http://kieranhealy.org/esk/kjhealy.html
+ (setq TeX-open-quote "“")
+ (setq TeX-close-quote "”")
+
+ ;; (TeX-add-style-hook
+ ;; "latex"
+ ;; (lambda ()
+ ;; (TeX-add-symbols
+ ;; '("DLA" 1))))
+ ;; (custom-set-variables
+ ;; '(font-latex-user-keyword-classes
+ ;; '(("fixme"
+ ;; ("DLA" "RZ")
+ ;; font-lock-function-name-face 2 (command 1 t))))
+ ;; )
+ (setq-default TeX-parse-self t)
+ (setq-default TeX-auto-save t)
+ (setq-default TeX-master nil)
+ (eval-after-load
+ "latex"
+ '(TeX-add-style-hook
+ "cleveref"
+ (lambda ()
+ (if (boundp 'reftex-ref-style-alist)
+ (add-to-list
+ 'reftex-ref-style-alist
+ '("Cleveref" "cleveref"
+ (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D)))))
+ (reftex-ref-style-activate "Cleveref")
+ (TeX-add-symbols
+ '("cref" TeX-arg-ref)
+ '("Cref" TeX-arg-ref)
+ '("cpageref" TeX-arg-ref)
+ '("Cpageref" TeX-arg-ref)))))
+ (eval-after-load
+ "latex"
+ '(add-to-list 'LaTeX-fill-excluded-macros
+ '("Sexpr")))
+
+ (use-package font-latex
+ :config
+ (setq font-latex-match-reference-keywords
+ '(
+ ("fref" "{")
+ ("Fref" "{")
+ ("citep" "{")
+ ("citet" "{")
+ ("acs" "{")
+ ("acsp" "{")
+ ("ac" "{")
+ ("acp" "{")
+ ("acl" "{")
+ ("aclp" "{")
+ ("acsu" "{")
+ ("aclu" "{")
+ ("acused" "{")
+ ("DLA" "{")
+ ("RZ" "{")
+ ("OM" "{")
+ ("DL" "{")
+ ("fixme" "{"))
+ )
+ )
+ )
#+END_SRC
** Org
#+BEGIN_SRC emacs-lisp
(require 'org-mode-configuration)
#+END_SRC
+*** Org-Gcal
+#+BEGIN_SRC emacs-lisp
+ (use-package calfw
+ :ensure f
+ )
+ (use-package calfw-org
+ :ensure f
+ )
+ (use-package org-gcal
+ :ensure f
+ :config '((if (file-readable-p "~/.hide/org_gcal.el")
+ (load-file "~/.hide/org_gcal.el"))
+ )
+ )
+#+END_SRC
** ESS
#+BEGIN_SRC emacs-lisp
- (require 'ess_configuration)
+ (use-package ess
+ :ensure t
+ :config (require 'ess_configuration))
#+END_SRC
+** Rainbowmode
+From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colorizes color strings
+
+#+BEGIN_SRC emacs-lisp
+ (use-package rainbow-mode
+ ;; add ess to the x major mode
+ :config (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[S])
+ (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[R])
+ )
+#+END_SRC
** Polymode
#+BEGIN_SRC emacs-lisp
- (setq load-path
- (append '("~/lib/emacs_el/polymode/modes")
- load-path))
- (require 'polymode)
- (require 'poly-R)
- (require 'poly-noweb)
- (require 'poly-markdown)
- (add-to-list 'auto-mode-alist '("\\.Snw" . poly-noweb+r-mode))
- (add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
- (add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
+ (use-package polymode
+ :config
+ (use-package poly-R)
+ (use-package poly-noweb)
+ (use-package poly-markdown)
+ :mode ("\\.Snw" . poly-noweb+r-mode)
+ :mode ("\\.Rnw" . poly-noweb+r-mode)
+ :mode ("\\.Rmd" . poly-markdown+r-mode)
+ )
#+END_SRC
+** Outlining
+*** Outline magic
+#+BEGIN_SRC emacs-lisp
+ (use-package outline-magic)
+#+END_SRC
+** Writeroom Mode
+#+BEGIN_SRC emacs-lisp
+ (use-package writeroom-mode
+ :config (add-hook 'writeroom-mode-hook 'auto-fill-mode)
+ )
+#+END_SRC
+** GhostText/Atomic Chrome
+#+BEGIN_SRC emacs-lisp
+ (use-package atomic-chrome
+ :config (atomic-chrome-start-server)
+ )
+#+END_SRC
* Keybindings
** Override other things
#+BEGIN_SRC emacs-lisp
; use iedit everywhere
(define-key my-keys-minor-mode-map (kbd "C-;") 'iedit-mode)
;; use outline mode keybindings everywhere
- (define-key my-keys-minor-mode-map (kbd "C-;") 'my/mydra-outline/body)
+ ;; (define-key my-keys-minor-mode-map (kbd "C-;") 'my/mydra-outline/body)
(define-minor-mode my-keys-minor-mode
"A minor mode so that my key settings override annoying major modes."
; (require 'google-weather)
; (require 'org-google-weather)
; (setq-default org-google-weather-format "%i %c, [%l,%h] %s %C")
-
- ; http://julien.danjou.info/projects/emacs-packages#rainbow-mode
- ; this colorizes color strings
- (require 'rainbow-mode)
- ; add ess to the x major mode
- (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[S])
- (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[R])
-
+
(global-set-key "\C-xp" 'server-edit)
(setq-default auto-mode-alist (cons '("\.wml$" .
)
(column-number-mode t)
- (setq-default reftex-plug-into-AUCTeX t)
(server-start)
(put 'downcase-region 'disabled nil)
(put 'narrow-to-region 'disabled nil)
-
- (autoload 'flyspell-mode "flyspell" "On-the-fly spelling checker." t)
- (add-hook 'message-mode-hook 'turn-on-flyspell)
- (add-hook 'text-mode-hook 'turn-on-flyspell)
- (add-hook 'c-mode-common-hook 'flyspell-prog-mode)
- (add-hook 'cperl-mode-hook 'flyspell-prog-mode)
- (add-hook 'tcl-mode-hook 'flyspell-prog-mode)
; (defun turn-on-flyspell ()
; "Force flyspell-mode on using a positive arg. For use in hooks."
; (interactive)
; fix up tmux xterm keys
; stolen from http://unix.stackexchange.com/questions/24414/shift-arrow-not-working-in-emacs-within-tmux
- (if (getenv "TMUX")
- (progn
- (let ((x 2) (tkey ""))
- (while (<= x 8)
- ;; shift
- (if (= x 2)
- (setq tkey "S-"))
- ;; alt
- (if (= x 3)
- (setq tkey "M-"))
- ;; alt + shift
- (if (= x 4)
- (setq tkey "M-S-"))
- ;; ctrl
- (if (= x 5)
- (setq tkey "C-"))
- ;; ctrl + shift
- (if (= x 6)
- (setq tkey "C-S-"))
- ;; ctrl + alt
- (if (= x 7)
- (setq tkey "C-M-"))
- ;; ctrl + alt + shift
- (if (= x 8)
- (setq tkey "C-M-S-"))
-
- ;; arrows
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
- ;; home
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
- ;; end
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
- ;; page up
- (define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
- ;; page down
- (define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
- ;; insert
- (define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
- ;; delete
- (define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
- ;; f1
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
- ;; f2
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
- ;; f3
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
- ;; f4
- (define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
- ;; f5
- (define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
- ;; f6
- (define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
- ;; f7
- (define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
- ;; f8
- (define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
- ;; f9
- (define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
- ;; f10
- (define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
- ;; f11
- (define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
- ;; f12
- (define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
- ;; f13
- (define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
- ;; f14
- (define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
- ;; f15
- (define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
- ;; f16
- (define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
- ;; f17
- (define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
- ;; f18
- (define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
- ;; f19
- (define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
- ;; f20
- (define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))
-
- (setq x (+ x 1))
- ))
+ (defun fix-up-tmux-keys ()
+ "Fix up tmux xterm keys"
+ (if (getenv "TMUX")
+ (progn
+ (let ((x 2) (tkey ""))
+ (while (<= x 8)
+ ;; shift
+ (if (= x 2)
+ (setq tkey "S-"))
+ ;; alt
+ (if (= x 3)
+ (setq tkey "M-"))
+ ;; alt + shift
+ (if (= x 4)
+ (setq tkey "M-S-"))
+ ;; ctrl
+ (if (= x 5)
+ (setq tkey "C-"))
+ ;; ctrl + shift
+ (if (= x 6)
+ (setq tkey "C-S-"))
+ ;; ctrl + alt
+ (if (= x 7)
+ (setq tkey "C-M-"))
+ ;; ctrl + alt + shift
+ (if (= x 8)
+ (setq tkey "C-M-S-"))
+
+ ;; arrows
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
+ ;; home
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
+ ;; end
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
+ ;; page up
+ (define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
+ ;; page down
+ (define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
+ ;; insert
+ (define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
+ ;; delete
+ (define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
+ ;; f1
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
+ ;; f2
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
+ ;; f3
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
+ ;; f4
+ (define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
+ ;; f5
+ (define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
+ ;; f6
+ (define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
+ ;; f7
+ (define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
+ ;; f8
+ (define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
+ ;; f9
+ (define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
+ ;; f10
+ (define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
+ ;; f11
+ (define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
+ ;; f12
+ (define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
+ ;; f13
+ (define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
+ ;; f14
+ (define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
+ ;; f15
+ (define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
+ ;; f16
+ (define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
+ ;; f17
+ (define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
+ ;; f18
+ (define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
+ ;; f19
+ (define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
+ ;; f20
+ (define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))
+
+ (setq x (+ x 1))
+ ))
+ )
)
- )
+ )
+ ; (add-hook 'tty-setup-hook 'fix-up-tmux-keys)
; procmailmode configuration
(load "procmail_mode")