#+BEGIN_SRC emacs-lisp
(setq debug-on-event 'siguser2)
#+END_SRC
-* Add library paths
-
+* Initial startup stuff
+** Disable startup screen
#+BEGIN_SRC emacs-lisp
- (add-to-list 'load-path '"~/lib/emacs_el/")
- (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/magit-annex")
+ (setq inhibit-startup-screen t)
+#+END_SRC
+** Disable cluter
+#+BEGIN_SRC emacs-lisp
+ ; (if (fboundp 'menu-bar-mode) (menu-bar-mode -1))
+ (if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+ (if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
+#+END_SRC
+** Fullscreen
+#+BEGIN_SRC emacs-lisp
+ (setq frame-resize-pixelwise t)
+ (add-to-list 'default-frame-alist '(fullscreen . maximixed))
#+END_SRC
-
* Package management
** package repositories and package manager
+Borrowed from https://github.com/nilcons/emacs-use-package-fast/ to
+load [[https://github.com/jwiegley/use-package/][use-package]] even faster
#+BEGIN_SRC emacs-lisp
- (require 'package)
+ (setq package-enable-at-startup nil)
+ (setq package--init-file-ensured t)
+ (eval-and-compile
+ (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file))))
+ (mapc #'(lambda (add) (add-to-list 'load-path add))
+ (eval-when-compile
+ (package-initialize)
+ (unless (package-installed-p 'use-package)
+ (package-refresh-contents)
+ (package-install 'use-package))
+ (let ((package-user-dir-real (file-truename package-user-dir)))
+ ;; The reverse is necessary, because outside we mapc
+ ;; add-to-list element-by-element, which reverses.
+ (nreverse (apply #'nconc
+ ;; Only keep package.el provided loadpaths.
+ (mapcar #'(lambda (path)
+ (if (string-prefix-p package-user-dir-real path)
+ (list path)
+ nil))
+ load-path))))))
+
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
- ("melpa" . "https://melpa.org/packages/")
- ("org" . "http://orgmode.org/elpa/") ))
-#+END_SRC
-** [[https://github.com/jwiegley/use-package/][use-package]]
-#+BEGIN_SRC emacs-lisp
- (package-initialize)
+ ("melpa" . "https://melpa.org/packages/")
+ ("org" . "http://orgmode.org/elpa/") ))
(require 'use-package)
+ (require 'diminish)
+ (require 'bind-key)
#+END_SRC
** Paradox
#+BEGIN_SRC emacs-lisp
(use-package paradox
:ensure paradox
- )
+ :commands (paradox-upgrade-packages paradox-list-packages)
+ :config (setq paradox-execute-asynchronously t)
+ )
+#+END_SRC
+* Add library paths
+
+#+BEGIN_SRC emacs-lisp
+ (add-to-list 'load-path '"~/lib/emacs_el/")
+ (add-to-list 'load-path '"~/lib/emacs_el/magit-annex")
#+END_SRC
* Disable custom-vars
#+BEGIN_SRC emacs-lisp
(add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook)
#+END_SRC
* Modules
+** Hippie Expand
+#+BEGIN_SRC emacs-lisp
+ (use-package hippie-expand
+ :bind* (("M-<SPC>" . hippie-expand))
+ )
+#+END_SRC
** 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)
)
#+END_SRC
+** Flymake
+#+begin_src emacs-lisp :tangle yes
+ (use-package flymake
+ :diminish "Φ")
+#+end_src
+
** Winnermode
#+BEGIN_SRC emacs-lisp
(winner-mode 1)
** 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)
- ;; )
- ;; )
+ (use-package eyebrowse
+ :ensure t
+ :diminish eyebrowse-mode
+ :init (setq eyebrowse-keymap-prefix (kbd "C-c e"))
+ :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
** 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)))
+ (use-package avy
+ :ensure t
+ :bind (("C-c C-<SPC>" . avy-goto-word-or-subword-1)
+ ("C-c j j" . avy-goto-word-or-subword-1)
+ ("M-g g" . avy-goto-line))
+ :config (progn (setq avy-background t))
+ )
+#+END_SRC
+*** Ace-link (jumping to links)
+#+BEGIN_SRC emacs-lisp
+ (use-package ace-link
+ :ensure t
+ ; bind o in most modes
+ :config (ace-link-setup-default))
+#+END_SRC
+*** Jumping through edit points (goto-chg)
+#+BEGIN_SRC emacs-lisp
+ (use-package goto-chg
+ :ensure t
+ :bind (("C-c j ," . goto-last-change)
+ ("C-c j ." . goto-last-change-reverse))
+ )
+#+END_SRC
+*** Jumping to bookmarks (visible bookmarks, bm)
+#+BEGIN_SRC emacs-lisp
+ (use-package bm
+ :ensure t
+ :bind (("C-c j b ." . bm-next)
+ ("C-c j b ," . bm-previous)
+ ("C-c j b SPC" . bm-toggle)))
#+END_SRC
** Snippets
)
)
#+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
(use-package tinyprocmail
- :ensure f
- :config (with-library 'tinyprocmail
- ;; (setq tinyprocmail--procmail-version "v3.22")
- (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
- )
+ :load-path "~/lib/emacs_el/tiny-tools/lisp/tiny"
+ :mode (".procmailrc" . turn-on-tinyprocmail-mode)
+ )
#+END_SRC
** Magit
: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
- )
+ :load-path "~/lib/emacs_el/magit-annex/"
+ )
(use-package magit-vcsh
:ensure f ; currently not in melpa, so don't try to install
- )
+ :load-path "~/lib/emacs_el/magit-vcsh/"
+ )
#+END_SRC
** Perl
#+BEGIN_SRC emacs-lisp
- (require 'cperl-mode)
- ;; Use c-mode for perl .xs files
- (add-to-list 'auto-mode-alist '("\\.xs\\'" . c-mode))
- (add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
- (add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
- (add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
- (add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
- (setq cperl-hairy t
- cperl-indent-level 4
- cperl-auto-newline nil
- cperl-auto-newline-after-colon nil
- cperl-continued-statement-offset 4
- cperl-brace-offset -1
- cperl-continued-brace-offset 0
- cperl-label-offset -4
- cperl-highlight-variables-indiscriminately t
- cperl-electric-lbrace-space nil
- cperl-indent-parens-as-block nil
- cperl-close-paren-offset -1
- cperl-tab-always-indent t)
- ;(add-hook 'cperl-mode-hook (lambda () (cperl-set-style "PerlStyle")))
+ (use-package cperl-mode
+ :config
+ (progn
+ ;; Use c-mode for perl .xs files
+ (add-to-list 'auto-mode-alist '("\\.xs\\'" . c-mode))
+ (add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
+ (add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
+ (add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
+ (add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
+ (setq cperl-hairy t
+ cperl-indent-level 4
+ cperl-auto-newline nil
+ cperl-auto-newline-after-colon nil
+ cperl-continued-statement-offset 4
+ cperl-brace-offset -1
+ cperl-continued-brace-offset 0
+ cperl-label-offset -4
+ cperl-highlight-variables-indiscriminately t
+ cperl-electric-lbrace-space nil
+ cperl-indent-parens-as-block nil
+ cperl-close-paren-offset -1
+ cperl-tab-always-indent t)
+ ;;(add-hook 'cperl-mode-hook (lambda () (cperl-set-style "PerlStyle")))
+ ))
#+END_SRC
** Helm
#+BEGIN_SRC emacs-lisp
+ (defun malb/helm-omni (&rest arg)
+ ;; just in case someone decides to pass an argument, helm-omni won't fail.
+ (interactive)
+ (unless helm-source-buffers-list
+ (setq helm-source-buffers-list
+ (helm-make-source "Buffers" 'helm-source-buffers)))
+ (helm-other-buffer
+ (append
+
+ (if (projectile-project-p)
+ '(helm-source-projectile-buffers-list
+ helm-source-buffers-list)
+ '(helm-source-buffers-list)) ;; list of all open buffers
+
+ `(((name . "Virtual Workspace")
+ (candidates . ,(--map (cons (eyebrowse-format-slot it) (car it))
+ (eyebrowse--get 'window-configs)))
+ (action . (lambda (candidate)
+ (eyebrowse-switch-to-window-config candidate)))))
+
+ (if (projectile-project-p)
+ '(helm-source-projectile-recentf-list
+ helm-source-recentf)
+ '(helm-source-recentf)) ;; all recent files
+
+ ;; always make some common files easily accessible
+ ;;'(((name . "Common Files")
+ ;; (candidates . malb/common-file-targets)
+ ;; (action . (("Open" . (lambda (x) (find-file (eval x))))))))
+
+ '(helm-source-files-in-current-dir
+ helm-source-locate
+ helm-source-bookmarks
+ helm-source-buffer-not-found ;; ask to create a buffer otherwise
+ ))
+ "*Helm all the things*"))
(use-package helm
- :ensure t
+ :ensure helm
+ :diminish helm-mode
+ :bind (("M-x" . helm-M-x)
+ ("C-x C-f" . helm-find-files)
+ ("C-x b" . helm-buffers-list) ; malb/helm-omni)
+ ("C-x C-b" . helm-buffers-list) ; malb/helm-omni)
+ ("C-c <SPC>" . helm-all-mark-rings))
:config
+ (require 'helm-config)
+ (require 'helm-for-files)
+ (require 'helm-bookmark)
+
(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
+*** 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
+*** Helm Swoop
+#+BEGIN_SRC emacs-lisp
+
+ ;;; stolen from https://github.com/malb/emacs.d/blob/master/malb.org
+ (defun malb/helm-swoop-pre-fill ()
+ (thing-at-point 'symbol))
+ (defvar malb/helm-swoop-ignore-major-mode "List of major modes to ignore for helm-swoop")
+ (setq malb/helm-swoop-ignore-major-mode '(dired-mode
+ paradox-menu-mode doc-view-mode pdf-view-mode
+ mu4e-headers-mode org-mode markdown-mode latex-mode
+ ein:notebook-multilang-mode))
+
+ (defun malb/swoop-or-search ()
+ (interactive)
+ (if (or (> (buffer-size) 1048576) ;; helm-swoop can be slow on big buffers
+ (memq major-mode malb/helm-swoop-ignore-major-mode))
+ (isearch-forward)
+ (helm-swoop)))
+
+ (use-package helm-swoop
+ :ensure t
+ :commands helm-swoop
+ :bind (("C-c o" . helm-multi-swoop-org)
+ ("C-s" . malb/swoop-or-search)
+ ("C-M-s" . helm-multi-swoop-all))
+ :config (progn
+
+ (setq helm-swoop-pre-input-function #'malb/helm-swoop-pre-fill
+ helm-swoop-split-with-multiple-windows nil
+ helm-swoop-split-direction #'split-window-horizontally
+ helm-swoop-split-window-function 'helm-default-display-buffer
+ helm-swoop-speed-or-color t)
+
+ ;; https://emacs.stackexchange.com/questions/28790/helm-swoop-how-to-make-it-behave-more-like-isearch
+ (defun malb/helm-swoop-C-s ()
+ (interactive)
+ (if (boundp 'helm-swoop-pattern)
+ (if (equal helm-swoop-pattern "")
+ (previous-history-element 1)
+ (helm-next-line))
+ (helm-next-line)))
+
+ (bind-key "C-S-s" #'helm-swoop-from-isearch isearch-mode-map)
+ (bind-key "C-S-s" #'helm-multi-swoop-all-from-helm-swoop helm-swoop-map)
+ (bind-key "C-r" #'helm-previous-line helm-swoop-map)
+ (bind-key "C-s" #'malb/helm-swoop-C-s helm-swoop-map)
+ (bind-key "C-r" #'helm-previous-line helm-multi-swoop-map)
+ (bind-key "C-s" #'malb/helm-swoop-C-s helm-multi-swoop-map))
+ )
+
+#+END_SRC
+*** Helm Ag
+#+BEGIN_SRC emacs-lisp
+(use-package helm-ag
+ :ensure t
+ :config (setq helm-ag-base-command "ag --nocolor --nogroup"
+ helm-ag-command-option "--all-text"
+ helm-ag-insert-at-point 'symbol
+ helm-ag-fuzzy-match t
+ helm-ag-use-temp-buffer t
+ helm-ag-use-grep-ignore-list t
+ helm-ag-use-agignore t))
+#+END_SRC
+*** Helm Descbinds
+#+BEGIN_SRC emacs-lisp
+ (use-package helm-descbinds
+ :ensure t
+ :bind ("C-h b" . helm-descbinds)
+ :init (fset 'describe-bindings 'helm-descbinds))
+#+END_SRC
+
+*** Helm YaSnippet
+#+BEGIN_SRC emacs-lisp
+ (use-package helm-c-yasnippet
+ :ensure t
+ :bind ("C-c h y" . helm-yas-complete)
+ :config (progn
+ (setq helm-yas-space-match-any-greedy t)))
+#+END_SRC
+*** Helm Org Rifle
+#+BEGIN_SRC emacs-lisp
+ (use-package helm-org-rifle
+ :ensure t
+ :config (progn
+ (defun malb/helm-org-rifle-agenda-files (arg)
+ (interactive "p")
+ (let ((current-prefix-arg nil))
+ (cond
+ ((equal arg 4) (call-interactively #'helm-org-rifle-agenda-files nil))
+ ((equal arg 16) (helm-org-rifle-occur-agenda-files))
+ (t (helm-org-agenda-files-headings)))))))
+#+END_SRC
+*** Helm Google
+This can be used to link things pretty quickly if necessary
+#+BEGIN_SRC emacs-lisp
+ (use-package helm-google
+ :ensure t
+ :bind ("C-c h g" . helm-google)
+ :config
+ (progn (add-to-list 'helm-google-actions
+ '("Copy URL" . (lambda (candidate)
+ (let ((url
+ (replace-regexp-in-string
+ "https://.*q=\\(.*\\)\&sa=.*"
+ "\\1" candidate)))
+ (kill-new url))))
+ t
+ )
+
+ (add-to-list 'helm-google-actions
+ '("Org Store Link" . (lambda (candidate)
+ (let ((title (car (split-string candidate "[\n]+")))
+ (url
+ (replace-regexp-in-string
+ "https://.*q=\\(.*\\)\&sa=.*"
+ "\\1" candidate)))
+ (push (list url title) org-stored-links))))
+ t)
+ ))
+#+END_SRC
+
+** Projectile -- Project management
+#+begin_src emacs-lisp
+ (use-package projectile
+ :ensure t
+ :bind (("<f5>" . projectile-compile-project)
+ ("<f6>" . next-error))
+ :config (progn
+ (use-package magit :ensure t)
+ (require 'helm-projectile)
+ (helm-projectile-on)
+
+ (setq projectile-make-test-cmd "make check"
+ projectile-switch-project-action 'helm-projectile
+ projectile-mode-line '(:eval (format "»{%s}" (projectile-project-name))))
+
+ (projectile-global-mode)))
+#+end_src
+
+*** helm integration
+#+begin_src emacs-lisp
+ (use-package helm-projectile
+ :ensure t
+ :config (progn
+ (defvar malb/helm-source-file-not-found
+ (helm-build-dummy-source
+ "Create file"
+ :action 'find-file))
+
+ (add-to-list
+ 'helm-projectile-sources-list
+ malb/helm-source-file-not-found t)
+
+ (helm-delete-action-from-source
+ "Grep in projects `C-s'"
+ helm-source-projectile-projects)
+
+ (helm-add-action-to-source
+ "Grep in projects `C-s'"
+ 'helm-do-ag helm-source-projectile-projects 4)))
+#+end_src
+** Zap to char
+#+BEGIN_SRC emacs-lisp
+ (use-package avy-zap
+ :ensure t
+ :bind ("M-z" . avy-zap-up-to-char-dwim))
+#+END_SRC
** Hydra
-#+BEGIN_SRC emacs-lisp :tangle don-configuration.el
-(require 'don-hydra)
+#+BEGIN_SRC emacs-lisp
+ (use-package hydra
+ :bind (("C-c 2" . my/hydra-orgmodes/body)
+ ("C-c @" . my/hydra-orgmodes/body)
+ ("C-c #" . my/hydra-outline/body)
+ ("C-c 3" . my/hydra-outline/body)
+ )
+ :config
+ (defhydra my/hydra-orgmodes (:color blue :hint nil)
+ "
+ _n_: notes _c_: chaim _w_: wildman _o_: ool
+ _u_: uddin _s_: steve _r_: refile _f_: fh
+ _p_: read papers _R_: paper notes
+ _h_: hpcbio
+ _q_: quit
+ _z_: quit
+ "
+ ("n" (find-file "~/projects/org-notes/notes.org"))
+ ("c" (find-file "~/projects/org-notes/chaim.org"))
+ ("w" (find-file "~/projects/org-notes/wildman.org"))
+ ("u" (find-file "~/projects/org-notes/uddin.org"))
+ ("o" (find-file "~/projects/org-notes/ool.org"))
+ ("f" (find-file "~/projects/org-notes/fh.org"))
+ ("s" (find-file "~/projects/org-notes/sndservers.org"))
+ ("r" (find-file "~/projects/org-notes/refile.org"))
+ ("p" (find-file "~/projects/research/papers_to_read.org"))
+ ("R" (find-file "~/projects/research/paper_notes.org"))
+ ("h" (find-file "~/projects/org-notes/hpcbio.org"))
+ ("q" nil "quit")
+ ("z" nil "quit")
+ )
+
+ ;; from https://github.com/abo-abo/hydra/wiki/Emacs
+ (defhydra my/hydra-outline (:color pink :hint nil)
+ "
+ ^Hide^ ^Show^ ^Move
+ ^^^^^^------------------------------------------------------
+ _q_: sublevels _a_: all _u_: up
+ _t_: body _e_: entry _n_: next visible
+ _o_: other _i_: children _p_: previous visible
+ _c_: entry _k_: branches _f_: forward same level
+ _l_: leaves _s_: subtree _b_: backward same level
+ _d_: subtree
+
+ "
+ ;; Hide
+ ("q" outline-hide-sublevels) ; Hide everything but the top-level headings
+ ("t" outline-hide-body) ; Hide everything but headings (all body lines)
+ ("o" outline-hide-other) ; Hide other branches
+ ("c" outline-hide-entry) ; Hide this entry's body
+ ("l" outline-hide-leaves) ; Hide body lines in this entry and sub-entries
+ ("d" outline-hide-subtree) ; Hide everything in this entry and sub-entries
+ ;; Show
+ ("a" outline-show-all) ; Show (expand) everything
+ ("e" outline-show-entry) ; Show this heading's body
+ ("i" outline-show-children) ; Show this heading's immediate child sub-headings
+ ("k" outline-show-branches) ; Show all sub-headings under this heading
+ ("s" outline-show-subtree) ; Show (expand) everything in this heading & below
+ ;; Move
+ ("u" outline-up-heading) ; Up
+ ("n" outline-next-visible-heading) ; Next
+ ("p" outline-previous-visible-heading) ; Previous
+ ("f" outline-forward-same-level) ; Forward - same level
+ ("b" outline-backward-same-level) ; Backward - same level
+ ("z" nil "leave"))
+ )
#+END_SRC
** Tramp
(setq-default reftex-default-bibliography
'("~/projects/research/references.bib")))
#+END_SRC
+** BibTex
+#+BEGIN_SRC emacs-lisp
+ (use-package bibtex
+ :config (setq bibtex-user-optional-fields
+ (quote (("annote" "Personal annotation (ignored)")
+ ("abstract" "")
+ ("pmid" "")
+ ("doi" ""))))
+ )
+
+#+END_SRC
** LaTeX
#+BEGIN_SRC emacs-lisp
(use-package tex
("fixme" "{"))
)
)
+ (setq font-latex-fontify-script nil)
+ (setq font-latex-fontify-sectioning (quote color))
+ (setq font-latex-script-display (quote (nil)))
)
#+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
(use-package ess
** Writeroom Mode
#+BEGIN_SRC emacs-lisp
(use-package writeroom-mode
- :config (add-hook 'writeroom-mode-hook 'auto-fill-mode)
+ :config
+ (defun my/writing-mode ()
+ "Start my writing mode; enable visual-line-mode and auto-fill-mode"
+ (interactive)
+ (if writeroom-mode
+ (progn
+ (writeroom-mode -1)
+ (visual-line-mode -1)
+ (auto-fill-mode -1)
+ (visual-fill-column-mode -1)
+ )
+ (visual-line-mode 1)
+ (auto-fill-mode 1)
+ (visual-fill-column-mode 1)
+ (writeroom-mode 1))
+ )
)
#+END_SRC
** GhostText/Atomic Chrome
#+BEGIN_SRC emacs-lisp
(use-package atomic-chrome
- :config (atomic-chrome-start-server)
+ :config
+ (ignore-errors (atomic-chrome-start-server))
(setq atomic-chrome-buffer-open-style 'full)
)
#+END_SRC
("C-S-c C-S-c" . mc/edit-lines))
)
#+END_SRC
+** Web Mode
+#+BEGIN_SRC emacs-lisp
+ (use-package web-mode
+ :config
+ (add-to-list 'auto-mode-alist '("\\.tmpl\\'" . web-mode))
+ (setq web-mode-enable-engine-detection t)
+ (setq web-mode-engines-alist
+ '(("template-toolkit" . "\\.tmpl\\'")))
+ )
+#+END_SRC
+** Spamassassin Mode
+#+BEGIN_SRC emacs-lisp
+ (use-package spamassassin-mode
+ :defer
+ :ensure f
+ )
+#+END_SRC
+** Password Store
+#+BEGIN_SRC emacs-lisp
+ (use-package password-store
+ :ensure f
+ :commands password-store-edit password-store-create
+ )
+#+END_SRC
+* Email
+** Mutt
+*** Message-mode
+#+BEGIN_SRC emacs-lisp
+ (use-package message
+ :ensure f
+ :diminish "✉"
+ :mode "muttng-[a-z0-9]+-[0-9]+-"
+ :mode "mutt-[a-z0-9]+-[0-9]+-"
+ :hook 'my/message-mode-settings
+ :hook 'turn-on-flyspell
+ :bind (:map message-mode-map
+ ("C-c C-a" . my/post-attach-file))
+ :config
+ (defun my/message-mode-settings ()
+ (font-lock-add-keywords nil
+ '(("^[ \t]*>[ \t]*>[ \t]*>.*$"
+ (0 'message-multiply-quoted-text-face))
+ ("^[ \t]*>[ \t]*>.*$"
+ (0 'message-double-quoted-text-face))))
+ )
+
+ (defun my/post-attach-file ()
+ "Prompt for an attachment."
+ (interactive)
+ (let ((file (read-file-name "Attach file: " nil nil t nil))
+ (description (string-read "Description: ")))
+ (my/header-attach-file file description)))
+
+ (defun my/header-attach-file (file description)
+ "Attach a FILE to the current message (works with Mutt).
+ Argument DESCRIPTION MIME description."
+ (interactive "fAttach file: \nsDescription: ")
+ (when (> (length file) 0)
+ (save-excursion
+ (save-match-data
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (search-forward-regexp "^$")
+ (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " "
+ description "\n"))
+ (message (concat "Attached '" file "'."))
+ (setq post-has-attachment t))))))
+
+ (setq mail-yank-prefix "> ")
+ )
+#+END_SRC
+*** Muttrc mode
+#+BEGIN_SRC emacs-lisp
+ (use-package muttrc-mode
+ :mode "muttngrc"
+ :mode "muttrc"
+ )
+
+#+END_SRC
+* Base emacs
+** Reverting buffers
+#+BEGIN_SRC emacs-lisp
+ (setq global-auto-revert-non-file-buffers t
+ global-auto-revert-ignore-modes '(pdf-view-mode)
+ auto-revert-verbose nil)
+ (global-auto-revert-mode 1)
+#+END_SRC
* Org Mode
** Use-package and load things
#+BEGIN_SRC emacs-lisp
#+END_SRC
** Agenda Configuration
#+BEGIN_SRC emacs-lisp
- ;; The following lines are always needed. Choose your own keys.
- (add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
- (global-set-key "\C-cl" 'org-store-link)
- (global-set-key "\C-ca" 'org-agenda)
- (global-set-key "\C-cb" 'org-iswitchb)
+ :mode ("\\.\\(org\\|org_archive\\|txt\\)\\'" . org-mode)
+ :bind (("C-c l" . org-store-link)
+ ("C-c a" . org-agenda)
+ ("C-c b" . org-iswitchb))
+ :config
(setq-default org-log-done 'time)
(setq-default org-agenda-ndays 5)
"~/projects/org-notes/wildman.org"
"~/projects/org-notes/uddin.org"
"~/projects/org-notes/reviews.org"
- "~/projects/org-notes/hpcbio.org"
"~/org-mode/from-mobile.org"
"~/projects/org-notes/fh.org")))
(with-temp-buffer
(dolist (org-agenda-file org-agenda-files)
(insert-file-contents org-agenda-file nil)
- (end-of-buffer)
+ (goto-char (point-max))
(newline))
(write-file "/tmp/timeline.org")
(org-agenda arg "L")))
(define-key org-mode-map (kbd "C-c t") 'org-agenda-timeline-all)
- ;; add automatic reminders for appointments
- (defadvice org-agenda-redo (after org-agenda-redo-add-appts)
- "Pressing `r' on the agenda will also add appointments."
- (progn
- (setq appt-time-msg-list nil)
- (org-agenda-to-appt)))
#+END_SRC
** General config
(setq org-columns-default-format "%40ITEM(Task) %6Effort{:} %CLOCKSUM %PRIORITY %TODO %13SCHEDULED %13DEADLINE %TAGS")
(setq org-default-notes-file "~/projects/org-notes/notes.org")
- (setq org-id-link-to-org-use-id t)
+ (setq org-id-link-to-org-use-id 'use-existing)
#+END_SRC
** Capture Templates
#+BEGIN_SRC emacs-lisp
; org mode configuration from http://doc.norang.ca/org-mode.html
;; Custom Key Bindings
(global-set-key (kbd "<f12>") 'org-agenda)
- (global-set-key (kbd "<f5>") 'bh/org-todo)
+ ; (global-set-key (kbd "<f5>") 'bh/org-todo)
(global-set-key (kbd "<S-f5>") 'bh/widen)
(global-set-key (kbd "<f7>") 'bh/set-truncate-lines)
(global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
(org-add-link-type "mutt" 'open-mail-in-mutt)
(defun my-org-mode-setup ()
- (load-library "reftex")
+ ; (load-library "reftex")
(and (buffer-file-name)
(file-exists-p (buffer-file-name))
(progn
- (reftex-parse-all)
+ ; (reftex-parse-all)
(reftex-set-cite-format
'((?b . "[[bib:%l][%l-bib]]")
(?n . "[[notes:%l][%l-notes]]")
(setq org-icalendar-timezone "America/Los_Angeles")
(setq org-icalendar-use-scheduled '(todo-start event-if-todo))
;; we already add the id manually
- ;; (setq org-icalendar-store-UID t)
+ (setq org-icalendar-store-UID t)
#+END_SRC
** General Org Babel Configuration
(min (1+ (match-end 0)) end)))
(unless (bolp) (insert "\n"))))))))))))
+#+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
+** appt integration
+#+BEGIN_SRC emacs-lisp
+ (use-package appt
+ :ensure f
+ :config
+ ;; Show notification 10 minutes before event
+ (setq appt-message-warning-time 10)
+ ;; Disable multiple reminders
+ (setq appt-display-interval appt-message-warning-time)
+ (setq appt-display-mode-line nil)
+
+ ;; add automatic reminders for appointments
+ (defun my/org-agenda-to-appt ()
+ (interactive)
+ (setq appt-time-msg-list nil)
+ (org-agenda-to-appt))
+ ;; add reminders when starting emacs
+ (my/org-agenda-to-appt)
+ ;; when rebuilding the agenda
+ (defadvice org-agenda-redo (after org-agenda-redo-add-appts)
+ "Pressing `r' on the agenda will also add appointments."
+ (my/org-agenda-to-appt)
+ )
+ ;; when saving all org buffers
+ (defadvice org-save-all-org-buffers (after org-save-all-org-buffers-add-appts)
+ "Re-add appts after saving all org buffers"
+ (my/org-agenda-to-appt))
+ ;; Display appointments as a window manager notification
+ (setq appt-disp-window-function 'my/appt-display)
+ (setq appt-delete-window-function (lambda () t))
+
+ (setq my/appt-notification-app (concat (getenv "HOME") "/bin/appt_notification"))
+
+ (defun my/appt-display (min-to-app new-time msg)
+ (if (atom min-to-app)
+ (start-process "my/appt-notification-app" nil my/appt-notification-app min-to-app msg)
+ (dolist (i (number-sequence 0 (1- (length min-to-app))))
+ (start-process "my/appt-notification-app" nil my/appt-notification-app
+ (nth i min-to-app) (nth i msg))))
+ )
+ )
+
+
#+END_SRC
** End use-package
#+BEGIN_SRC emacs-lisp
)
#+END_SRC
* Keybindings
-** Override other things
+** Goto line
#+BEGIN_SRC emacs-lisp
- ; apparently things like to step on C-;, so we'll use a hack from
- ; http://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs/5340797#5340797 to fix this
-
- (defvar my-keys-minor-mode-map (make-keymap) "my-keys-minor-mode keymap.")
-
- ; 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-minor-mode my-keys-minor-mode
- "A minor mode so that my key settings override annoying major modes."
- t " my-keys" 'my-keys-minor-mode-map)
-
- (my-keys-minor-mode 1)
- (defun my-minibuffer-setup-hook ()
- (my-keys-minor-mode 0))
-
- (add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)
- (defadvice load (after give-my-keybindings-priority)
- "Try to ensure that my keybindings always have priority."
- (if (not (eq (car (car minor-mode-map-alist)) 'my-keys-minor-mode))
- (let ((mykeys (assq 'my-keys-minor-mode minor-mode-map-alist)))
- (assq-delete-all 'my-keys-minor-mode minor-mode-map-alist)
- (add-to-list 'minor-mode-map-alist mykeys))))
- (ad-activate 'load)
+ (global-unset-key "\M-g")
+ (global-set-key (kbd "M-g l") 'goto-line)
+#+END_SRC
+* Debian
+** debian-changelog
+#+BEGIN_SRC emacs-lisp
+ (use-package debian-changelog
+ :ensure f
+ :mode "debian/changelog"
+ :config
+ (setq debian-changelog-mailing-address "don@debian.org")
+ (setq debian-changelog-full-name "Don Armstrong"))
#+END_SRC
-
* Misc (uncharacterized)
#+BEGIN_SRC emacs-lisp
- (setq bibtex-user-optional-fields (quote (("annote" "Personal annotation (ignored)") ("abstract" "") ("pmid" "") ("doi" ""))))
- (setq calendar-latitude 40.11)
- (setq calendar-longitude -88.24)
+ (setq calendar-latitude 38.6)
+ (setq calendar-longitude -121.5)
(setq case-fold-search t)
(setq confirm-kill-emacs (quote y-or-n-p))
(setq cperl-lazy-help-time nil)
- (setq debian-changelog-mailing-address "don@debian.org")
(display-time)
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(display-time-mode 1)
- (setq font-latex-fontify-script nil)
- (setq font-latex-fontify-sectioning (quote color))
- (setq font-latex-script-display (quote (nil)))
- (global-auto-revert-mode 1)
(global-font-lock-mode 1)
(icomplete-mode 1)
(setq log-edit-keep-buffer t)
(setq markdown-enable-math t)
(setq markdown-follow-wiki-link-on-enter nil)
(setq mutt-alias-file-list (quote ("~/.mutt/aliases" "~/.mail_aliases")))
- (setq post-email-address "don@donarmstrong.com")
- (setq post-kill-quoted-sig nil)
- (setq post-mail-message "mutt\\(ng\\|\\)-[a-z0-9]+-[0-9]+-.*")
- (setq post-uses-fill-mode nil)
(setq ps-footer-font-size (quote (8 . 10)))
(setq ps-header-font-size (quote (8 . 10)))
(setq ps-header-title-font-size (quote (10 . 10)))
(require 'vcl-mode)
- (require 'tex-site)
- ;;(require 'psvn)
- ;;(require 'ecasound)
- ;;(require 'emacs-wiki)
- (require 'bibtex)
- (require 'post)
- ;;(require 'fixme)
- ; (require 'google-weather)
- ; (require 'org-google-weather)
- ; (setq-default org-google-weather-format "%i %c, [%l,%h] %s %C")
-
(global-set-key "\C-xp" 'server-edit)
(setq-default auto-mode-alist (cons '("\.wml$" .
;; tramp configuration
(setq tramp-use-ssh-controlmaster-options nil)
- ; mail configuration
- (add-to-list 'auto-mode-alist '("muttng-[a-z0-9]+-[0-9]+-" . message-mode))
- (add-to-list 'auto-mode-alist '("muttngrc" . muttrc-mode))
-
- (add-to-list 'auto-mode-alist '("mutt-[a-z0-9]+-[0-9]+-" . message-mode))
- (add-to-list 'auto-mode-alist '("muttrc" . muttrc-mode))
- (defun my-message-mode-settings ()
- (font-lock-add-keywords nil
- '(("^[ \t]*>[ \t]*>[ \t]*>.*$"
- (0 'message-multiply-quoted-text-face))
- ("^[ \t]*>[ \t]*>.*$"
- (0 'message-double-quoted-text-face))))
- (local-set-key (kbd "C-c C-a") 'my-post-attach-file)
- )
- (add-hook 'message-mode-hook 'my-message-mode-settings)
-
- (defun my-post-attach-file ()
- "Prompt for an attachment."
- (interactive)
- (let ((file (read-file-name "Attach file: " nil nil t nil))
- (description (string-read "Description: ")))
- (my-header-attach-file file description)))
-
- (symbol-function 'my-post-attach-file)
-
- (defun my-header-attach-file (file description)
- "Attach a FILE to the current message (works with Mutt).
- Argument DESCRIPTION MIME description."
- (interactive "fAttach file: \nsDescription: ")
- (when (> (length file) 0)
- (save-excursion
- (save-match-data
- (save-restriction
- (widen)
- (goto-char (point-min))
- (search-forward-regexp "^$")
- (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " "
- description "\n"))
- (message (concat "Attached '" file "'."))
- (setq post-has-attachment t))))))
-
-
-
- (setq mail-yank-prefix "> ")
-
- (global-unset-key "\M-g")
- (global-set-key "\M-g" 'goto-line)
-
- ;; self-insert-command hack.
- ;; Without this, "if<SP>" expands to
- ;; if ( -!-) {
- ;; }
- ;; which really should be,
- ;; if (-!-) {
- ;; }
-
-
-
- ;(load-library "php-mode")
-
(setq-default c-indent-level 4)
(setq-default c-brace-imaginary-offset 0)
(setq-default c-brace-offset -4)
)
(column-number-mode t)
-
- (server-start)
-
- ; (require 'mode-compile)
-
- (defadvice server-process-filter (after post-mode-message first activate)
- "If the buffer is in post mode, overwrite the server-edit
- message with a post-save-current-buffer-and-exit message."
- (if (eq major-mode 'post-mode)
- (message
- (substitute-command-keys "Type \\[describe-mode] for help composing; \\[post-save-current-buffer-and-exit] when done."))))
- ; This is also needed to see the magic message. Set to a higher
- ; number if you have a faster computer or read slower than me.
- '(font-lock-verbose 1000)
- ;(setq-default server-temp-file-regexp "mutt\(-\|ng-\)")
- ; (add-hook 'server-switch-hook
- ; (function (lambda()
- ; (cond ((string-match "Post" mode-name)
- ; (post-goto-body)))
- ; set-buffer-file-coding-system 'utf-8
- ; )))
- ;
-
- (add-hook 'post-mode-hook
- (auto-fill-mode nil)
- )
+
; abbrev mode settings
; load abbreviations from
(setq abbrev-file-name
; for now, use abbrev mode everywhere
(setq default-abbrev-mode t)
-
- (defun insert-function-documentation ()
- "Insert function documentation"
- (interactive)
- (insert-file-contents "/home/don/lib/templates/perl_function_documentation" nil))
- (global-set-key "\M-f" 'insert-function-documentation)
-
- (eval-after-load "lilypond-mode"
- '(progn
- (load-library "lyqi-mode")
- (define-key LilyPond-mode-map "\C-cq" 'lyqi-mode)))
-
- (autoload 'spamassassin-mode "spamassassin-mode" nil t)
-
(desktop-load-default)
(desktop-read)
'(icomplete-mode on)
; Outline-minor-mode key map
(define-prefix-command 'cm-map nil "Outline-")
; HIDE
- (define-key cm-map "q" 'hide-sublevels) ; Hide everything but the top-level headings
- (define-key cm-map "t" 'hide-body) ; Hide everything but headings (all body lines)
- (define-key cm-map "o" 'hide-other) ; Hide other branches
- (define-key cm-map "c" 'hide-entry) ; Hide this entry's body
- (define-key cm-map "l" 'hide-leaves) ; Hide body lines in this entry and sub-entries
- (define-key cm-map "d" 'hide-subtree) ; Hide everything in this entry and sub-entries
+ (define-key cm-map "q" 'outline-hide-sublevels) ; Hide everything but the top-level headings
+ (define-key cm-map "t" 'outline-hide-body) ; Hide everything but headings (all body lines)
+ (define-key cm-map "o" 'outline-hide-other) ; Hide other branches
+ (define-key cm-map "c" 'outline-hide-entry) ; Hide this entry's body
+ (define-key cm-map "l" 'outline-hide-leaves) ; Hide body lines in this entry and sub-entries
+ (define-key cm-map "d" 'outline-hide-subtree) ; Hide everything in this entry and sub-entries
; SHOW
- (define-key cm-map "a" 'show-all) ; Show (expand) everything
- (define-key cm-map "e" 'show-entry) ; Show this heading's body
- (define-key cm-map "i" 'show-children) ; Show this heading's immediate child sub-headings
- (define-key cm-map "k" 'show-branches) ; Show all sub-headings under this heading
- (define-key cm-map "s" 'show-subtree) ; Show (expand) everything in this heading & below
+ (define-key cm-map "a" 'outline-show-all) ; Show (expand) everything
+ (define-key cm-map "e" 'outline-show-entry) ; Show this heading's body
+ (define-key cm-map "i" 'outline-show-children) ; Show this heading's immediate child sub-headings
+ (define-key cm-map "k" 'outline-show-branches) ; Show all sub-headings under this heading
+ (define-key cm-map "s" 'outline-show-subtree) ; Show (expand) everything in this heading & below
; MOVE
(define-key cm-map "u" 'outline-up-heading) ; Up
(define-key cm-map "n" 'outline-next-visible-heading) ; Next
(define-key cm-map "b" 'outline-backward-same-level) ; Backward - same level
(global-set-key "\M-o" cm-map)
-
- ; debian stuff
- (setq-default debian-changelog-mailing-address "don@debian.org")
- (setq-default debian-changelog-full-name "Don Armstrong")
-
; ediff configuration
; don't use the multi-window configuration
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5"))
(multi-web-global-mode 1)
- ;;; alias the new `flymake-report-status-slim' to
- ;;; `flymake-report-status'
- (defalias 'flymake-report-status 'flymake-report-status-slim)
- (defun flymake-report-status-slim (e-w &optional status)
- "Show \"slim\" flymake status in mode line."
- (when e-w
- (setq flymake-mode-line-e-w e-w))
- (when status
- (setq flymake-mode-line-status status))
- (let* ((mode-line " Φ"))
- (when (> (length flymake-mode-line-e-w) 0)
- (setq mode-line (concat mode-line ":" flymake-mode-line-e-w)))
- (setq mode-line (concat mode-line flymake-mode-line-status))
- (setq flymake-mode-line mode-line)
- (force-mode-line-update)))
-
; load sql-indent when sql is loaded
(eval-after-load "sql"
'(load-library "sql-indent"))
)
; (add-hook 'tty-setup-hook 'fix-up-tmux-keys)
- ; procmailmode configuration
- (load "procmail_mode")
-
- (load "mode-line-cleaner")
-
(defadvice ask-user-about-supersession-threat (around ask-user-about-supersession-threat-if-necessary)
"Call ask-user-about-supersession-threat only if the buffer is actually obsolete."
(if (or (buffer-modified-p)
(clear-visited-file-modtime)
(not-modified)))
(ad-activate 'ask-user-about-supersession-threat)
+#+END_SRC
- ; apparently things like to step on C-;, so we'll use a hack from
- ; http://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs/5340797#5340797 to fix this
-
- (defvar my-keys-minor-mode-map (make-keymap) "my-keys-minor-mode keymap.")
-
- ; use iedit everywhere
- (define-key my-keys-minor-mode-map (kbd "C-;") 'mc/mark-all-dwim)
-
- (define-minor-mode my-keys-minor-mode
- "A minor mode so that my key settings override annoying major modes."
- t " my-keys" 'my-keys-minor-mode-map)
-
- (my-keys-minor-mode 1)
- (defun my-minibuffer-setup-hook ()
- (my-keys-minor-mode 0))
+* Server
+#+BEGIN_SRC emacs-lisp
+ (unless (server-running-p)
+ (server-start))
+#+END_SRC
- (add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)
- (defadvice load (after give-my-keybindings-priority)
- "Try to ensure that my keybindings always have priority."
- (if (not (eq (car (car minor-mode-map-alist)) 'my-keys-minor-mode))
- (let ((mykeys (assq 'my-keys-minor-mode minor-mode-map-alist)))
- (assq-delete-all 'my-keys-minor-mode minor-mode-map-alist)
- (add-to-list 'minor-mode-map-alist mykeys))))
- (ad-activate 'load)
- (global-set-key "\M- " 'hippie-expand)
-#+END_SRC
* END
#+BEGIN_SRC emacs-lisp