Преглед изворни кода

Fix org-babel whitespace in emacs.org and some minor cleanup

This *may* not be 100% I flipped a lot of (progn ...)'s to :custom etc in
use-package declarations.
master
Mitch Tishmack пре 6 година
родитељ
комит
7ea539e923
1 измењених фајлова са 756 додато и 760 уклоњено
  1. +756
    -760
      emacs.org

+ 756
- 760
emacs.org Прегледај датотеку

@@ -19,16 +19,16 @@ Startup related tasks/setup that might be used later on.
Setup the builtin emacs package manager. Setup the builtin emacs package manager.


#+BEGIN_SRC emacs-lisp :tangle tmp/.emacs.d/init.el :mkdirp yes #+BEGIN_SRC emacs-lisp :tangle tmp/.emacs.d/init.el :mkdirp yes
(require 'package)
(package-initialize)
(require 'package)
(package-initialize)
#+END_SRC #+END_SRC


Add in the standard package archive urls. Add in the standard package archive urls.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t)
#+END_SRC #+END_SRC


*** tangle functions *** tangle functions
@@ -39,21 +39,21 @@ TODO: make this stuff work sanely in emacs org mode and
via external tangling. Not tangled for now. via external tangling. Not tangled for now.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defun tangle/yn (p) (if (bound-and-true-p p) "yes" "no"))
(defun tangle/file (file p) (if (bound-and-true-p p) (concat "tmp/" file) "no"))
(defun tangle/yn (p) (if (bound-and-true-p p) "yes" "no"))
(defun tangle/file (file p) (if (bound-and-true-p p) (concat "tmp/" file) "no"))
#+END_SRC #+END_SRC


*** emacs gc speedup *** emacs gc speedup


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defun my-minibuffer-setup-hook ()
(setq gc-cons-threshold most-positive-fixnum))
(defun my-minibuffer-setup-hook ()
(setq gc-cons-threshold most-positive-fixnum))


(defun my-minibuffer-exit-hook ()
(setq gc-cons-threshold 8000000))
(defun my-minibuffer-exit-hook ()
(setq gc-cons-threshold 8000000))


(add-hook 'minibuffer-setup-hook #'my-minibuffer-setup-hook)
(add-hook 'minibuffer-exit-hook #'my-minibuffer-exit-hook)
(add-hook 'minibuffer-setup-hook #'my-minibuffer-setup-hook)
(add-hook 'minibuffer-exit-hook #'my-minibuffer-exit-hook)
#+END_SRC #+END_SRC


*** use-package/diminish bootstrap *** use-package/diminish bootstrap
@@ -62,30 +62,37 @@ This configuration is using *use-package* extensively. Install it and diminish
straight away so we can use it elsewhere. straight away so we can use it elsewhere.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(unless (package-installed-p 'use-package)
(progn
(package-refresh-contents)
(package-install 'use-package)
(package-initialize)))
(package-refresh-contents)
(unless (package-installed-p 'use-package)
(progn
(package-refresh-contents)
(package-install 'use-package)
(package-initialize)))


(require 'use-package)
(setq use-package-verbose t)
(use-package diminish :ensure t)
;; diminish away builtin modes right away as well
(diminish 'flyspell-mode)
(diminish 'whitespace-mode)
(diminish 'visual-line-mode)
(require 'use-package)
(setq use-package-verbose t)
(use-package diminish :ensure t)
#+END_SRC

FIXME Diminish away builtin modes right away as well

Move this to the dimish use-package setup

#+BEGIN_SRC emacs-lisp
(diminish 'flyspell-mode)
(diminish 'whitespace-mode)
(diminish 'visual-line-mode)
#+END_SRC #+END_SRC


*** match end of string function *** match end of string function


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defun string/ends-with (string suffix)
"Return t if STRING ends with SUFFIX."
(and (string-match (rx-to-string `(: ,suffix eos) t)
string)
t)
)
(defun string/ends-with (string suffix)
"Return t if STRING ends with SUFFIX."
(and (string-match (rx-to-string `(: ,suffix eos) t)
string)
t)
)
#+END_SRC #+END_SRC


*** debug on error *** debug on error
@@ -93,7 +100,7 @@ straight away so we can use it elsewhere.
Not having to start *emacs* with *--debug-init* is useful. Not having to start *emacs* with *--debug-init* is useful.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq debug-on-error t)
(setq debug-on-error t)
#+END_SRC #+END_SRC


*** emacs server *** emacs server
@@ -101,8 +108,8 @@ Not having to start *emacs* with *--debug-init* is useful.
Start up the emacs server if it isn't running. Start up the emacs server if it isn't running.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(load "server")
(unless (server-running-p) (server-start))
(load "server")
(unless (server-running-p) (server-start))
#+END_SRC #+END_SRC


*** theme *** theme
@@ -110,7 +117,7 @@ Start up the emacs server if it isn't running.
Solarized light is decent. I'll just use that. Note, to prevent flicker this is setup early in startup. Solarized light is decent. I'll just use that. Note, to prevent flicker this is setup early in startup.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package solarized-theme :ensure t :init (load-theme 'solarized-light 't))
(use-package solarized-theme :ensure t :init (load-theme 'solarized-light 't))
#+END_SRC #+END_SRC


*** os detection *** os detection
@@ -118,12 +125,12 @@ Solarized light is decent. I'll just use that. Note, to prevent flicker this is
Make it easier to determine what os we're running on. Make it easier to determine what os we're running on.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defvar on-mswindows (string-match "windows" (symbol-name system-type))
"Am I running under windows?")
(defvar on-osx (string-match "darwin" (symbol-name system-type))
"Am I running under osx?")
(defvar on-linux (string-match "gnu/linux" (symbol-name system-type))
"Am I running under linux?")
(defvar on-mswindows (string-match "windows" (symbol-name system-type))
"Am I running under windows?")
(defvar on-osx (string-match "darwin" (symbol-name system-type))
"Am I running under osx?")
(defvar on-linux (string-match "gnu/linux" (symbol-name system-type))
"Am I running under linux?")
#+END_SRC #+END_SRC


*** disable pointless startup stuff *** disable pointless startup stuff
@@ -143,18 +150,18 @@ Like the startup screen and the echo hooey.
Keep temporary stuff isolated from everyone else. It infects everything otherwise. As bad as the .DS_Store files on osx. Keep temporary stuff isolated from everyone else. It infects everything otherwise. As bad as the .DS_Store files on osx.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables
'(temporary-file-directory "/tmp")
'(backup-directory-alist `((".*" . ,temporary-file-directory)))
'(auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))
'(create-lockfiles nil)
'(make-backup-files nil)
'(auto-save-default nil)
'(backup-by-copying t)
'(auto-save-list-file-prefix temporary-file-directory)
'(backup-directory-alist `((".*" . ,temporary-file-directory)))
'(auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))
)
(custom-set-variables
'(temporary-file-directory "/tmp")
'(backup-directory-alist `((".*" . ,temporary-file-directory)))
'(auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))
'(create-lockfiles nil)
'(make-backup-files nil)
'(auto-save-default nil)
'(backup-by-copying t)
'(auto-save-list-file-prefix temporary-file-directory)
'(backup-directory-alist `((".*" . ,temporary-file-directory)))
'(auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))
)
#+END_SRC #+END_SRC


*** auto revert *** auto revert
@@ -162,7 +169,7 @@ Keep temporary stuff isolated from everyone else. It infects everything otherwis
Update files in open buffers as they're changed on disk, freaking annoying without this on. Update files in open buffers as they're changed on disk, freaking annoying without this on.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables '(global-auto-revert-mode t))
(custom-set-variables '(global-auto-revert-mode t))
#+END_SRC #+END_SRC


*** dired *** dired
@@ -170,7 +177,7 @@ Update files in open buffers as they're changed on disk, freaking annoying witho
Use dired-x. Use dired-x.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'dired-load-hook (function (lambda () (load "dired-x"))))
(add-hook 'dired-load-hook (function (lambda () (load "dired-x"))))
#+END_SRC #+END_SRC


*** ediff *** ediff
@@ -178,8 +185,8 @@ Use dired-x.
For those rare times I use it, make it a bit less derp on output. For those rare times I use it, make it a bit less derp on output.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
#+END_SRC #+END_SRC


*** always remove trailing whitespace *** always remove trailing whitespace
@@ -187,7 +194,7 @@ For those rare times I use it, make it a bit less derp on output.
Trailing whitespace is not normally useful. Remove it always on save in the *before-save-hook*. Trailing whitespace is not normally useful. Remove it always on save in the *before-save-hook*.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(add-hook 'before-save-hook 'delete-trailing-whitespace)
#+END_SRC #+END_SRC


*** chmod u+x on save for scripts *** chmod u+x on save for scripts
@@ -195,12 +202,12 @@ Trailing whitespace is not normally useful. Remove it always on save in the *bef
Because its derp to have to chmod 755 stuff after I save. Honestly, do it for me kthxbai. Because its derp to have to chmod 755 stuff after I save. Honestly, do it for me kthxbai.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
#+END_SRC #+END_SRC


*** misc text related *** misc text related
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(put 'upcase-region 'disabled nil)
(put 'upcase-region 'disabled nil)
#+END_SRC #+END_SRC
*** line wrap *** line wrap


@@ -209,8 +216,8 @@ Line wrapping is useful. Enable it globally for a start.
Need word-wrap so kill line kills the line, not the displayed line. Need word-wrap so kill line kills the line, not the displayed line.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(global-visual-line-mode t)
(custom-set-variables '(word-wrap t))
(global-visual-line-mode t)
(custom-set-variables '(word-wrap t))
#+END_SRC #+END_SRC


*** default major mode *** default major mode
@@ -218,7 +225,7 @@ Need word-wrap so kill line kills the line, not the displayed line.
So if we don't know, call it text-mode. So if we don't know, call it text-mode.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables '(default-major-mode 'text-mode))
(custom-set-variables '(default-major-mode 'text-mode))
#+END_SRC #+END_SRC


*** encoding *** encoding
@@ -226,11 +233,11 @@ So if we don't know, call it text-mode.
utf8 is the best. Default to it. utf8 is the best. Default to it.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables '(locale-coding-system 'utf-8))
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(custom-set-variables '(locale-coding-system 'utf-8))
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
#+END_SRC #+END_SRC


*** text selection *** text selection
@@ -238,14 +245,14 @@ utf8 is the best. Default to it.
If I selected text, delete the selection, I probably meant it emacs. If I selected text, delete the selection, I probably meant it emacs.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(delete-selection-mode 1)
(delete-selection-mode 1)
#+END_SRC #+END_SRC
*** line width *** line width


80 char line columns not 72. 80 char line columns not 72.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables '(fill-column 80))
(custom-set-variables '(fill-column 80))
#+END_SRC #+END_SRC


*** we aren't banging rocks together anymore emacs *** we aren't banging rocks together anymore emacs
@@ -253,7 +260,7 @@ If I selected text, delete the selection, I probably meant it emacs.
Double spacing after a line isn't needed. We aren't animals emacs, we have computers. Double spacing after a line isn't needed. We aren't animals emacs, we have computers.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(set-default 'sentence-end-double-space nil)
(set-default 'sentence-end-double-space nil)
#+END_SRC #+END_SRC


*** sentence end *** sentence end
@@ -261,10 +268,10 @@ Double spacing after a line isn't needed. We aren't animals emacs, we have compu
Semi related to the above, make the sentence endings a bit more code-ish. Semi related to the above, make the sentence endings a bit more code-ish.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables
'(sentence-end "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*")
'(sentence-end-double-space nil)
)
(custom-set-variables
'(sentence-end "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*")
'(sentence-end-double-space nil)
)
#+END_SRC #+END_SRC


*** default tab-width *** default tab-width
@@ -274,7 +281,7 @@ Two seems sensible, cause well, tabs are evil incarnate.
Lets use a tab width of 2 by default. Lets use a tab width of 2 by default.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables '(default-tab-width 2))
(custom-set-variables '(default-tab-width 2))
#+END_SRC #+END_SRC


*** whitespace *** whitespace
@@ -302,21 +309,20 @@ I have no idea how to label these.
Highlight parens. Highlight parens.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(show-paren-mode)
(show-paren-mode)
#+END_SRC #+END_SRC


Typing out *yes* or *no* is stupid. Typing out *yes* or *no* is stupid.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(fset 'yes-or-no-p 'y-or-n-p)
(fset 'yes-or-no-p 'y-or-n-p)
#+END_SRC #+END_SRC


Disable the stupid prompt added in 23.2 that asks if you want to kill a buffer with a process attached. Yes, obviously, shut up and do it. Disable the stupid prompt added in 23.2 that asks if you want to kill a buffer with a process attached. Yes, obviously, shut up and do it.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq kill-buffer-query-functions
(remq 'process-kill-buffer-query-function
kill-buffer-query-functions))
(setq kill-buffer-query-functions
(remq 'process-kill-buffer-query-function kill-buffer-query-functions))
#+END_SRC #+END_SRC


TESTING tooltip mode TESTING tooltip mode
@@ -324,9 +330,9 @@ TESTING tooltip mode
Puts all tooltips in the echo arear. Puts all tooltips in the echo arear.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(tooltip-mode -1)
(custom-set-variables
'(tooltip-use-echo-area t))
(tooltip-mode -1)
(custom-set-variables
'(tooltip-use-echo-area t))
#+END_SRC #+END_SRC


TESTING redisplay TESTING redisplay
@@ -334,8 +340,8 @@ TESTING redisplay
Have emacs not redraw the display before processing input events. Have emacs not redraw the display before processing input events.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(custom-set-variables
'(redisplay-dont-pause t))
(custom-set-variables
'(redisplay-dont-pause t))
#+END_SRC #+END_SRC


*** osx specific *** osx specific
@@ -345,16 +351,16 @@ Have emacs not redraw the display before processing input events.
On osx, don't ever display the gui dialog box. Taken from http://superuser.com/questions/125569/how-to-fix-emacs-popup-dialogs-on-mac-os-x On osx, don't ever display the gui dialog box. Taken from http://superuser.com/questions/125569/how-to-fix-emacs-popup-dialogs-on-mac-os-x


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(when (and on-osx (window-system))
(defadvice yes-or-no-p (around prevent-dialog activate)
"Prevent yes-or-no-p from activating a dialog"
(let ((use-dialog-box nil))
ad-do-it))
(defadvice y-or-n-p (around prevent-dialog-yorn activate)
"Prevent y-or-n-p from activating a dialog"
(let ((use-dialog-box nil))
ad-do-it))
)
(when (and on-osx (window-system))
(defadvice yes-or-no-p (around prevent-dialog activate)
"Prevent yes-or-no-p from activating a dialog"
(let ((use-dialog-box nil))
ad-do-it))
(defadvice y-or-n-p (around prevent-dialog-yorn activate)
"Prevent y-or-n-p from activating a dialog"
(let ((use-dialog-box nil))
ad-do-it))
)
#+END_SRC #+END_SRC


**** make osx gui emacs keyboard setup match console **** make osx gui emacs keyboard setup match console
@@ -362,15 +368,15 @@ On osx, don't ever display the gui dialog box. Taken from http://superuser.com/q
Command should be meta on cocoa emacs like the old carbon/macports version. Command should be meta on cocoa emacs like the old carbon/macports version.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(when (and on-osx (window-system))
(custom-set-variables
'(mac-command-key-is-meta t)
'(mac-option-key-is-meta nil)
'(mac-command-key-is-meta t)
'(mac-command-modifier 'meta)
'(mac-option-modifier 'none)
)
)
(when (and on-osx (window-system))
(custom-set-variables
'(mac-command-key-is-meta t)
'(mac-option-key-is-meta nil)
'(mac-command-key-is-meta t)
'(mac-command-modifier 'meta)
'(mac-option-modifier 'none)
)
)
#+END_SRC #+END_SRC


*** global key bindings *** global key bindings
@@ -385,12 +391,12 @@ Global key bindings.
*** x copy/paste *** x copy/paste


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(when (and on-linux (window-system))
(progn
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
(setq x-select-enable-clipboard t)
)
(when (and on-linux (window-system))
(progn
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
(setq x-select-enable-clipboard t)
) )
)
#+END_SRC #+END_SRC
* appearance * appearance
*** gui *** gui
@@ -402,11 +408,11 @@ Basically, never show the tool bar or the scroll bar in gui or tty. In gui its o
Also have the scratch buffer be empty instead of have the derp message I never read anyway. Also have the scratch buffer be empty instead of have the derp message I never read anyway.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(tool-bar-mode -1)
(scroll-bar-mode -1)
(when (not window-system)
(menu-bar-mode -1))
(custom-set-variables '(initial-scratch-message nil))
(tool-bar-mode -1)
(scroll-bar-mode -1)
(when (not window-system)
(menu-bar-mode -1))
(custom-set-variables '(initial-scratch-message nil))
#+END_SRC #+END_SRC


*** fonts *** fonts
@@ -414,28 +420,29 @@ Also have the scratch buffer be empty instead of have the derp message I never r
List of fonts in order of preference. Set preferred font list when we're in a List of fonts in order of preference. Set preferred font list when we're in a
gui emacs session. gui emacs session.


FIXME
FIXME This doesn't loop through the gui fonts right and set based on the alist
order.


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(defvar my/gui-fonts
'(
"ComicCode"
"Comic Code"
"PragmataPro"
"Pragmata Pro" ;; Seems to register differently on osx than X
"Source Code Pro"
"Menlo"
"Monaco"
)
(defvar my/gui-fonts
'(
"ComicCode"
"Comic Code"
"PragmataPro"
"Pragmata Pro" ;; Seems to register differently on osx than X
"Source Code Pro"
"Menlo"
"Monaco"
) )
(with-no-warnings
(when window-system
(if (find-font (font-spec :name (car my/gui-fonts)))
(progn (set-frame-font (car my/gui-fonts))
(set-face-attribute 'default nil :height 180))
(progn (set-gui-font (cdr my/gui-fonts))))
)
)
(with-no-warnings
(when window-system
(if (find-font (font-spec :name (car my/gui-fonts)))
(progn (set-frame-font (car my/gui-fonts))
(set-face-attribute 'default nil :height 180))
(progn (set-gui-font (cdr my/gui-fonts))))
) )
)
#+END_SRC #+END_SRC


*** tty *** tty
@@ -443,17 +450,17 @@ FIXME
Enable mouse mode for the console and use the mousewheel if possible. Enable mouse mode for the console and use the mousewheel if possible.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(unless window-system
(require 'mouse)
(xterm-mouse-mode t)
(global-set-key [mouse-4] '(lambda ()
(interactive)
(scroll-down 1)))
(global-set-key [mouse-5] '(lambda ()
(interactive)
(scroll-up 1)))
(defun track-mouse (e))
)
(unless window-system
(require 'mouse)
(xterm-mouse-mode t)
(global-set-key [mouse-4] '(lambda ()
(interactive)
(scroll-down 1)))
(global-set-key [mouse-5] '(lambda ()
(interactive)
(scroll-up 1)))
(defun track-mouse (e))
)
#+END_SRC #+END_SRC


* packages * packages
@@ -465,48 +472,47 @@ All the packages I use.
If editorconfig is around use it. If editorconfig is around use it.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package editorconfig
:ensure t
:config
(editorconfig-mode 1))
(use-package editorconfig
:ensure t
:config
(editorconfig-mode 1))
#+END_SRC #+END_SRC


*** tramp *** tramp


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package tramp
:defer t
:config
(progn
(custom-set-variables '(tramp-default-method "ssh"))
(add-to-list 'tramp-default-proxies-alist '(".*" "\`root\'" "/ssh:%h:")))
)
(use-package tramp
:defer t
:custom
(tramp-default-method "ssh")
:config
(add-to-list 'tramp-default-proxies-alist '(".*" "\`root\'" "/ssh:%h:"))
)
#+END_SRC #+END_SRC


(add-to-list 'tramp-default-proxies-alist '(".*" "\`root\'" "/ssh:%h:")))
*** exec-path-from-shell *** exec-path-from-shell


Turns out that someone wrote this exact thing already. Yay get to drop my own crap. Turns out that someone wrote this exact thing already. Yay get to drop my own crap.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package exec-path-from-shell
:ensure t
:init (if on-osx (exec-path-from-shell-initialize))
)
(use-package exec-path-from-shell
:ensure t
:init (if on-osx (exec-path-from-shell-initialize))
)
#+END_SRC #+END_SRC


*** osx-clipboard-mode *** osx-clipboard-mode


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(when on-osx
(use-package osx-clipboard
:ensure t
:config
(progn
(osx-clipboard-mode +1)
)
(when on-osx
(use-package osx-clipboard
:ensure t
:config
(progn
(osx-clipboard-mode +1)
) )
) )
)
#+END_SRC #+END_SRC


*** spaceline theme *** spaceline theme
@@ -514,55 +520,53 @@ Turns out that someone wrote this exact thing already. Yay get to drop my own cr
Just use the silly spacemacs smart modeline theme cause I'm lazy. Just use the silly spacemacs smart modeline theme cause I'm lazy.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package spaceline :ensure t :init (progn (require 'spaceline-config) (spaceline-spacemacs-theme)))
(use-package spaceline :ensure t :init (progn (require 'spaceline-config) (spaceline-spacemacs-theme)))
#+END_SRC #+END_SRC


*** yasnippet *** yasnippet
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package yasnippet
:diminish yas-minor-mode
:ensure t
:init
(progn
(setq yas-snippet-dirs
'("~/.emacs.d/snippets"
"~/.emacs.d/snippets-upstream"
)))
(use-package yasnippet
:diminish yas-minor-mode
:ensure t
:init
(setq yas-snippet-dirs
'("~/.emacs.d/snippets"
"~/.emacs.d/snippets-upstream"
))
:config :config
(progn
(yas/reload-all)
(add-hook 'prog-mode-hook
'(lambda ()
(yas-minor-mode)))
(add-hook 'org-mode-hook
'(lambda ()
(yas-minor-mode))))
(yas/reload-all)
(add-hook 'prog-mode-hook
'(lambda ()
(yas-minor-mode)))
(add-hook 'org-mode-hook
'(lambda ()
(yas-minor-mode)))
) )
#+END_SRC #+END_SRC


*** semantic *** semantic


Note that not all these functions are defined at package install time

#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package semantic
:ensure t
:config
(progn
(custom-set-variables
'(global-semantic-decoration-mode t)
'(global-semantic-highlight-func-mode t)
'(global-semantic-idle-scheduler-mode t)
'(global-semantic-idle-local-symbol-highlight-mode t)
'(global-semantic-stickyfunc-mode f)
)
)
:init (semantic-mode t)
)
(use-package semantic
:ensure t
:config
;; (add-to-list 'semantic-default-submodes 'global-semantic-stickyfunc-mode)
(custom-set-variables
'(global-semantic-decoration-mode t)
'(global-semantic-highlight-func-mode t)
'(global-semantic-idle-scheduler-mode t)
'(global-semantic-idle-local-symbol-highlight-mode t)
)
:init (semantic-mode t)
)
#+END_SRC #+END_SRC


*** expand-region *** expand-region


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package expand-region :ensure t :bind ("C-]" . er/expand-region))
(use-package expand-region :ensure t :bind ("C-]" . er/expand-region))
#+END_SRC #+END_SRC


*** ivy/swiper *** ivy/swiper
@@ -570,32 +574,39 @@ Just use the silly spacemacs smart modeline theme cause I'm lazy.
Switching to ivy mode+swiper Switching to ivy mode+swiper


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package counsel
:ensure t
:bind (("C-x C-f" . counsel-find-file)
("C-c g" . counsel-git)
("C-c j" . counsel-git-grep)
("C-c k" . counsel-ag)
("C-x l" . counsel-locate)
("C-S-o" . counsel-rhythmbox)
("C-c C-r" . ivy-resume))
:config (custom-set-variables '(counsel-find-file-at-point t)))
(use-package swiper
:ensure t
:diminish ivy-mode
:bind (("C-s" . swiper)
("M-x" . counsel-M-x))
:config (progn
(custom-set-variables
'(projectile-completion-system 'ivy)
'(magit-completing-read-function 'ivy-completing-read)
'(ivy-use-virtual-buffers t)
'(ivy-height 10)
'(ivy-count-format "(%d/%d) ")
)
(ivy-mode 1)
)
)
(use-package projectile
:diminish projectile-mode
:ensure t
:init (projectile-global-mode)
)

(use-package counsel
:ensure t
:bind (("C-x C-f" . counsel-find-file)
("C-c g" . counsel-git)
("C-c j" . counsel-git-grep)
("C-c k" . counsel-ag)
("C-x l" . counsel-locate)
("C-S-o" . counsel-rhythmbox)
("C-c C-r" . ivy-resume))
:custom
(counsel-find-file-at-point t)
)

(use-package swiper
:ensure t
:diminish ivy-mode
:bind (("C-s" . swiper)
("M-x" . counsel-M-x))
:config
(ivy-mode 1)
:custom
(projectile-completion-system 'ivy)
(magit-completing-read-function 'ivy-completing-read)
(ivy-use-virtual-buffers t)
(ivy-height 10)
(ivy-count-format "(%d/%d) ")
)
#+END_SRC #+END_SRC


*** magit *** magit
@@ -603,29 +614,27 @@ Switching to ivy mode+swiper
Make git not ass to use. At least in emacs. magit is the best git interface... in the world. Make git not ass to use. At least in emacs. magit is the best git interface... in the world.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package magit
:diminish magit-mode
:ensure t
:commands (magit-init
magit-status
magit-diff
magit-commit)
:bind ("C-x m" . magit-status)
:config
(progn
(custom-set-variables
'(magit-auto-revert-mode nil)
'(magit-last-seen-setup-instructions "1.4.0")
)
(defadvice magit-status (around magit-fullscreen activate)
(window-configuration-to-register :magit-fullscreen)
ad-do-it
(delete-other-windows))

(defadvice magit-quit-window (around magit-restore-screen activate)
ad-do-it
(jump-to-register :magit-fullscreen)))
)
(use-package magit
:diminish magit-mode
:ensure t
:commands (magit-init
magit-status
magit-diff
magit-commit)
:bind ("C-x m" . magit-status)
:custom
(magit-auto-revert-mode nil)
(magit-last-seen-setup-instructions "1.4.0")
:config
(defadvice magit-status (around magit-fullscreen activate)
(window-configuration-to-register :magit-fullscreen)
ad-do-it
(delete-other-windows))

(defadvice magit-quit-window (around magit-restore-screen activate)
ad-do-it
(jump-to-register :magit-fullscreen))
)
#+END_SRC #+END_SRC


*** workgroups2 *** workgroups2
@@ -633,19 +642,15 @@ Make git not ass to use. At least in emacs. magit is the best git interface... i
Save workgroup layouts. Similar..ish to desktop-save. Save workgroup layouts. Similar..ish to desktop-save.


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package workgroups2
:ensure t
:diminish (workgroups-mode . "")
:config
(progn
(custom-set-variables
'(wg-session-file "~/.emacs.d/workgroups")
'(wg-prefix-key (kbd "C-c C-w"))
'(wg-mode-line-display-on nil)
)
)
:init (workgroups-mode 1)
)
(use-package workgroups2
:ensure t
:diminish (workgroups-mode . "")
:custom
(wg-session-file "~/.emacs.d/workgroups")
(wg-prefix-key (kbd "C-c C-w"))
(wg-mode-line-display-on nil)
:init (workgroups-mode 1)
)
#+END_SRC #+END_SRC


*** autopair *** autopair
@@ -653,11 +658,11 @@ Save workgroup layouts. Similar..ish to desktop-save.
Highlight matching ()'s []'s etc... Highlight matching ()'s []'s etc...


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package autopair
:ensure t
:config
(progn (custom-set-variables '(autopair-blink 'nil)))
)
(use-package autopair
:ensure t
:custom
(autopair-blink 'nil)
)
#+END_SRC #+END_SRC


*** org-mode *** org-mode
@@ -665,103 +670,110 @@ Highlight matching ()'s []'s etc...
Org-mode keybindings and settings, pretty sparse really. Org-mode keybindings and settings, pretty sparse really.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org
:bind (("C-c a" . org-agenda)
("C-c b" . org-iswitchb)
("C-c c" . org-capture)
("C-c l" . org-store-link)
("C-c p" . org-latex-export-to-pdf))
:config
(progn
(custom-set-variables
'(org-log-done t)
'(org-hide-leading-stars t)
'(org-hide-emphasis-markers t)
'(org-confirm-babel-evaluate nil)
'(org-src-strip-leading-and-trailing-blank-lines t)
'(org-src-preserve-indentation t)
'(org-capture-templates
'(("t" "Todo" entry (file+headline "~/src/org/gtd.org" "Tasks")
"* TODO %?\n %i\n %a")
("n" "Note" entry (file+datetree "~/src/org/notes.org")
"* %?\nRandom Note entered on %U\n %i\n %a")
("m" "Todo from email" entry (file+headline "~/src/org/gtd.org" "INBOX")
"* TODO %?, Link: %a")
("u" "Url" entry (file+headline "~/src/org/urls.org" "Urls")
"* %u\n\n %i" :prepend t)
))
)
(use-package org
:ensure t
:bind (("C-c a" . org-agenda)
("C-c b" . org-iswitchb)
("C-c c" . org-capture)
("C-c l" . org-store-link)
("C-c p" . org-latex-export-to-pdf))
:custom
(org-log-done t)
(org-hide-leading-stars t)
(org-hide-emphasis-markers t)
(org-confirm-babel-evaluate nil)
(org-src-strip-leading-and-trailing-blank-lines t)
(org-src-preserve-indentation t)
(org-capture-templates
'(("t" "Todo" entry (file+headline "~/src/org/gtd.org" "Tasks")
"* TODO %?\n %i\n %a")
("n" "Note" entry (file+datetree "~/src/org/notes.org")
"* %?\nRandom Note entered on %U\n %i\n %a")
("m" "Todo from email" entry (file+headline "~/src/org/gtd.org" "INBOX")
"* TODO %?, Link: %a")
("u" "Url" entry (file+headline "~/src/org/urls.org" "Urls")
"* %u\n\n %i" :prepend t)
))
:config
(add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("hs" "#+BEGIN_SRC haskell\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("pl" "#+BEGIN_SRC perl\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("py" "#+BEGIN_SRC python\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("sh" "#+BEGIN_SRC sh\n?\n#+END_SRC" ""))
(org-babel-do-load-languages 'org-babel-load-languages
(append org-babel-load-languages
'(
(C . t)
(ditaa . t)
(emacs-lisp . t)
(haskell . t)
(latex . t)
(perl . t)
(python . t)
(ruby . t)
(shell . t)
)))
(add-hook 'after-init-hook (lambda () (org-reload)))
)
#+END_SRC


;; typing stuff like the mode for a snippet is for chumps
(add-to-list 'org-structure-template-alist '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("hs" "#+BEGIN_SRC haskell\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("pl" "#+BEGIN_SRC perl\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("py" "#+BEGIN_SRC python\n?\n#+END_SRC" ""))
(add-to-list 'org-structure-template-alist '("sh" "#+BEGIN_SRC sh\n?\n#+END_SRC" ""))

(org-babel-do-load-languages 'org-babel-load-languages
(append org-babel-load-languages
'(
(C . t)
(ditaa . t)
(emacs-lisp . t)
(haskell . t)
(latex . t)
(perl . t)
(python . t)
(ruby . t)
(shell . t)
)))
(add-hook 'after-init-hook (lambda () (org-reload)))
)
#+BEGIN_SRC emacs-lisp
(use-package org-roam
:after org-plus-contrib
:defer t
:hook
(after-init . org-roam-mode)
:custom
(org-roam-directory "~/.emacs.d")
:bind (:map org-roam-mode-map
(("C-c n l" . org-roam)
("C-c n f" . org-roam-find-file)
("C-c n j" . org-roam-jump-to-index)
("C-c n b" . org-roam-switch-to-buffer)
("C-c n g" . org-roam-graph))
:map org-mode-map
(("C-c n i" . org-roam-insert))))
;;(use-package ob-async :after org-plus-contrib :ensure t)
#+END_SRC

#+BEGIN_SRC emacs-lisp
(use-package ob-async :after org-plus-contrib :ensure t)
#+END_SRC

#+BEGIN_SRC emacs-lisp
(use-package org-bullets
:after org-plus-contrib
:ensure t
:custom
(org-bullets-bullet-list '("・" "◦" "•" "◉"))
:config
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
(when window-system
(let* ((variable-tuple (cond ((x-list-fonts "Source Sans Pro") '(:font "Source Sans Pro"))
((x-list-fonts "Lucida Grande") '(:font "Lucida Grande"))
((x-list-fonts "Verdana") '(:font "Verdana"))
((x-family-fonts "Sans Serif") '(:family "Sans Serif"))
(nil (warn "Cannot find a Sans Serif Font."))))
(base-font-color (face-foreground 'default nil 'default))
(headline `(:inherit default :weight bold :foreground ,base-font-color)))
(custom-theme-set-faces 'user
`(org-level-8 ((t (,@headline ,@variable-tuple))))
`(org-level-7 ((t (,@headline ,@variable-tuple))))
`(org-level-6 ((t (,@headline ,@variable-tuple))))
`(org-level-5 ((t (,@headline ,@variable-tuple))))
`(org-level-4 ((t (,@headline ,@variable-tuple :height 1.1))))
`(org-level-3 ((t (,@headline ,@variable-tuple :height 1.25))))
`(org-level-2 ((t (,@headline ,@variable-tuple :height 1.5))))
`(org-level-1 ((t (,@headline ,@variable-tuple :height 1.75))))
`(org-document-title ((t (,@headline ,@variable-tuple :height 1.5 :underline nil)))))))
(font-lock-add-keywords 'org-mode
'(("^ +\\([-*]\\) "
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
) )
(use-package org-bullets
:ensure t
:init
(custom-set-variables '(org-bullets-bullet-list '("・" "◦" "•" "◉")))
:config
(progn
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
(when window-system
(let* ((variable-tuple (cond ((x-list-fonts "Source Sans Pro") '(:font "Source Sans Pro"))
((x-list-fonts "Lucida Grande") '(:font "Lucida Grande"))
((x-list-fonts "Verdana") '(:font "Verdana"))
((x-family-fonts "Sans Serif") '(:family "Sans Serif"))
(nil (warn "Cannot find a Sans Serif Font."))))
(base-font-color (face-foreground 'default nil 'default))
(headline `(:inherit default :weight bold :foreground ,base-font-color)))
(custom-theme-set-faces 'user
`(org-level-8 ((t (,@headline ,@variable-tuple))))
`(org-level-7 ((t (,@headline ,@variable-tuple))))
`(org-level-6 ((t (,@headline ,@variable-tuple))))
`(org-level-5 ((t (,@headline ,@variable-tuple))))
`(org-level-4 ((t (,@headline ,@variable-tuple :height 1.1))))
`(org-level-3 ((t (,@headline ,@variable-tuple :height 1.25))))
`(org-level-2 ((t (,@headline ,@variable-tuple :height 1.5))))
`(org-level-1 ((t (,@headline ,@variable-tuple :height 1.75))))
`(org-document-title ((t (,@headline ,@variable-tuple :height 1.5 :underline nil)))))))
(font-lock-add-keywords 'org-mode
'(("^ +\\([-*]\\) "
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
)
)
(use-package org-roam
:after org
:hook
(after-init . org-roam-mode)
:custom
(org-roam-directory "~/.emacs.d")
:bind (:map org-roam-mode-map
(("C-c n l" . org-roam)
("C-c n f" . org-roam-find-file)
("C-c n j" . org-roam-jump-to-index)
("C-c n b" . org-roam-switch-to-buffer)
("C-c n g" . org-roam-graph))
:map org-mode-map
(("C-c n i" . org-roam-insert))))
(use-package ob-async :after org)
#+END_SRC #+END_SRC


FIXME still need/want?

#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(require 'ox-latex) (require 'ox-latex)
ox-latex ox-latex
@@ -781,14 +793,14 @@ nil
Flycheck for on the fly checking of code. Flycheck for on the fly checking of code.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package flycheck
:diminish flycheck-mode
:ensure t
:init
(custom-set-variables '(flycheck-indication-mode 'left-fringe))
:config
(add-hook 'prog-mode-hook 'flycheck-mode)
)
(use-package flycheck
:diminish flycheck-mode
:ensure t
:custom
(flycheck-indication-mode 'left-fringe)
:config
(add-hook 'prog-mode-hook 'flycheck-mode)
)
#+END_SRC #+END_SRC


Need to vet this, used it more when I did more c. But its handy for non standard pkg-config Need to vet this, used it more when I did more c. But its handy for non standard pkg-config
@@ -797,39 +809,40 @@ setups.
Not tangled into the config intentionally. Not tangled into the config intentionally.


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(defun pkg-config-add-lib-cflags (pkg-config-lib)
"This function will add necessary header file path of a
(defun pkg-config-add-lib-cflags (pkg-config-lib)
"This function will add necessary header file path of a
specified by `pkg-config-lib' to `flycheck-clang-include-path', which make it specified by `pkg-config-lib' to `flycheck-clang-include-path', which make it
completionable by auto-complete-clang" completionable by auto-complete-clang"
(interactive "spkg-config lib: ")
(if (executable-find "pkg-config")
(if (= (shell-command
(format "pkg-config %s" pkg-config-lib))
0)
(setq flycheck-clang-include-path
(append flycheck-clang-include-path
(split-string
(shell-command-to-string
(format "pkg-config --cflags-only-I %s"
pkg-config-lib)))))
(message "Error, pkg-config lib %s not found." pkg-config-lib))
(message "Error: pkg-config tool not found.")))
#+END_SRC
*** auto-complete
(interactive "spkg-config lib: ")
(if (executable-find "pkg-config")
(if (= (shell-command
(format "pkg-config %s" pkg-config-lib))
0)
(setq flycheck-clang-include-path
(append flycheck-clang-include-path
(split-string
(shell-command-to-string
(format "pkg-config --cflags-only-I %s"
pkg-config-lib)))))
(message "Error, pkg-config lib %s not found." pkg-config-lib))
(message "Error: pkg-config tool not found.")))
#+END_SRC
*** COMMENT auto-complete


Auto complete functionality is nice to have. Auto complete functionality is nice to have.


FIXME! FIXME!


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package auto-complete
:diminish auto-complete-mode
:ensure t
:init (progn (require 'auto-complete-config)
(ac-config-default)
(global-auto-complete-mode t)
))
(use-package auto-complete
:diminish auto-complete-mode
:ensure t
:init
(require 'auto-complete-config)
(ac-config-default)
(global-auto-complete-mode t)
)
#+END_SRC #+END_SRC


*** smartparens *** smartparens
@@ -837,12 +850,12 @@ FIXME!
Helpfully inserts matching parens, can be a pita too. Helpfully inserts matching parens, can be a pita too.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package smartparens
:diminish smartparens-mode
:ensure t
:config
(add-hook 'prog-mode-hook 'smartparens-mode)
)
(use-package smartparens
:diminish smartparens-mode
:ensure t
:config
(add-hook 'prog-mode-hook 'smartparens-mode)
)
#+END_SRC #+END_SRC


*** rainbow delimiters *** rainbow delimiters
@@ -850,11 +863,11 @@ Helpfully inserts matching parens, can be a pita too.
Makes matching parens easier. Makes matching parens easier.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package rainbow-delimiters
:ensure t
:config
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
)
(use-package rainbow-delimiters
:ensure t
:config
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
)
#+END_SRC #+END_SRC


*** uniquify *** uniquify
@@ -862,8 +875,8 @@ Makes matching parens easier.
Make buffer names unique based on their directory and not have <N> or other nonsense. Make buffer names unique based on their directory and not have <N> or other nonsense.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(require 'uniquify)
(custom-set-variables '(uniquify-buffer-name-style 'post-forward))
(require 'uniquify)
(custom-set-variables '(uniquify-buffer-name-style 'post-forward))
#+END_SRC #+END_SRC


*** desktop-save *** desktop-save
@@ -871,21 +884,21 @@ Make buffer names unique based on their directory and not have <N> or other nons
Desktop saving of session information handy to keep the same buffers between sessions. Desktop saving of session information handy to keep the same buffers between sessions.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(require 'desktop)
(require 'desktop)


(desktop-save-mode 1)
(desktop-save-mode 1)


(custom-set-variables
'(desktop-restore-eager 5)
'(desktop-path '("~/.emacs.d"))
'(desktop-dirname "~/.emacs.d")
'(desktop-base-file-name "desktop")
)
(custom-set-variables
'(desktop-restore-eager 5)
'(desktop-path '("~/.emacs.d"))
'(desktop-dirname "~/.emacs.d")
'(desktop-base-file-name "desktop")
)


(defun local-desktop-save ()
(interactive)
(if (eq (desktop-owner) (emacs-pid))
(desktop-save desktop-dirname)))
(defun local-desktop-save ()
(interactive)
(if (eq (desktop-owner) (emacs-pid))
(desktop-save desktop-dirname)))
#+END_SRC #+END_SRC


*** TODO super-save *** TODO super-save
@@ -895,14 +908,13 @@ REMOVE ME && TODO IF THIS WORKS
Saves buffers like with auto-save but on focus loss, when idle etc... Saves buffers like with auto-save but on focus loss, when idle etc...


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package super-save
:diminish super-save-mode
:ensure t
:config (progn
(super-save-mode +1)
(setq super-save-auto-save-when-idle t)
(setq auto-save-default nil)
)
(use-package super-save
:diminish super-save-mode
:ensure t
:config
(super-save-mode +1)
(setq super-save-auto-save-when-idle t)
(setq auto-save-default nil)
) )
#+END_SRC #+END_SRC


@@ -911,58 +923,54 @@ Saves buffers like with auto-save but on focus loss, when idle etc...
Highlight TODO/FIXME type messages in comments. Highlight TODO/FIXME type messages in comments.


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package fic-mode
:ensure t
:init
(add-hook 'prog-mode-hook 'turn-on-fic-mode)
)
(use-package fic-mode
:ensure t
:init
(add-hook 'prog-mode-hook 'turn-on-fic-mode)
)
#+END_SRC #+END_SRC


*** projectile *** projectile


FIXME!
FIXME! ??? what is broke here past mitch, you jerk


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package projectile
:diminish projectile-mode
:ensure t
:init (projectile-global-mode)
)

#+END_SRC #+END_SRC


*** git gutter *** git gutter


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package git-gutter
:diminish git-gutter-mode
:ensure t
:config
(progn (global-git-gutter-mode t))
)
(use-package git-gutter
:diminish git-gutter-mode
:ensure t
:config
(global-git-gutter-mode t)
)
#+END_SRC #+END_SRC


*** clang-format *** clang-format


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package clang-format
:ensure t
:bind (([C-M-tab] . clang-format-region))
)
(use-package clang-format
:ensure t
:bind (([C-M-tab] . clang-format-region))
)
#+END_SRC #+END_SRC


*** hideshow *** hideshow


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package hideshow
:ensure t
:bind ("C-c s" . hs-toggle-hiding)
)
(use-package hideshow
:ensure t
:bind ("C-c s" . hs-toggle-hiding)
)
#+END_SRC #+END_SRC


*** ggtags *** ggtags


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package ggtags :ensure t)
(use-package ggtags :ensure t)
#+END_SRC #+END_SRC


*** company-mode *** company-mode
@@ -970,11 +978,11 @@ FIXME!
Completion tips. Completion tips.


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package company-mode
:ensure t
:config
(progn (add-hook 'after-init-hook 'global-company-mode))
)
(use-package company-mode
:ensure t
:config
(add-hook 'after-init-hook 'global-company-mode)
)
#+END_SRC #+END_SRC


*** yaml-mode *** yaml-mode
@@ -982,7 +990,7 @@ Completion tips.
For.. yaml For.. yaml


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package yaml-mode :ensure t)
(use-package yaml-mode :ensure t)
#+END_SRC #+END_SRC


*** writegood-mode *** writegood-mode
@@ -990,57 +998,54 @@ For.. yaml
So I write gooder. Me fail English? Thats unpossible. So I write gooder. Me fail English? Thats unpossible.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package writegood-mode :ensure t)
(use-package writegood-mode :ensure t)
#+END_SRC #+END_SRC


*** rust-mode *** rust-mode


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package rust-mode :commands rust-mode :mode ("\\*.rs\\'" . rust-mode)
:ensure t)
(use-package rust-mode :commands rust-mode :mode ("\\*.rs\\'" . rust-mode)
:defer t)
#+END_SRC #+END_SRC
*** python-mode *** python-mode


Compress down python configuration a bit. Compress down python configuration a bit.


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package python
:commands python-mode
:mode ("\\.py\\'" . python-mode)
:ensure t
:init
(progn
(use-package company-anaconda
:ensure t
:config
(progn
(add-to-list 'company-backends 'company-anaconda)
(add-hook 'python-mode-hook 'anaconda-mode)
)
)
(use-package pytest
:ensure t
:bind ("C-c t" . pytest-one)
)
(use-package pymacs :ensure t)
)
:config
(progn
(add-hook 'python-mode-hook'
(lambda ()
(push '("lambda" . ?λ) prettify-symbols-alist)
(push '("<=" . ?≤) prettify-symbols-alist)
(push '(">=" . ?≥) prettify-symbols-alist)
(push '("==" . ?≡) prettify-symbols-alist)
(push '("/=" . ?≢) prettify-symbols-alist)
(push '("&&" . ?∧) prettify-symbols-alist)
(push '("||" . ?∨) prettify-symbols-alist)
(push '("not" . ?¬) prettify-symbols-alist)
(push '("None" . ?⊥) prettify-symbols-alist)
(prettify-symbols-mode)
)
))
)
(use-package python
:after company-mode
:commands python-mode
:mode ("\\.py\\'" . python-mode)
:config
(add-hook 'python-mode-hook'
(lambda ()
(push '("lambda" . ?λ) prettify-symbols-alist)
(push '("<=" . ?≤) prettify-symbols-alist)
(push '(">=" . ?≥) prettify-symbols-alist)
(push '("==" . ?≡) prettify-symbols-alist)
(push '("/=" . ?≢) prettify-symbols-alist)
(push '("&&" . ?∧) prettify-symbols-alist)
(push '("||" . ?∨) prettify-symbols-alist)
(push '("not" . ?¬) prettify-symbols-alist)
(push '("None" . ?⊥) prettify-symbols-alist)
(prettify-symbols-mode)
)
)
)

(use-package company-anaconda
:after python
:config
(add-to-list 'company-backends 'company-anaconda)
(add-hook 'python-mode-hook 'anaconda-mode)

)
(use-package pytest
:after python
:bind ("C-c t" . pytest-one)
)

(use-package pymacs :after python)
#+END_SRC #+END_SRC


*** haskell-mode *** haskell-mode
@@ -1048,117 +1053,103 @@ Compress down python configuration a bit.
Need to make haskell source be all pretty. Need to make haskell source be all pretty.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package haskell-mode
:diminish haskell-mode
:ensure t
:config
(progn
(use-package dante
:ensure t
:config
(progn
(add-hook 'haskell-mode-hook 'dante-mode)
)
:diminish dante-mode
)
(use-package hindent
:if (executable-find "hindent")
:ensure t
:config
(progn
(add-hook 'haskell-mode-hook 'hindent-mode)
)
:diminish hindent-mode
)
(use-package flycheck-haskell :ensure t)
(use-package flycheck-hdevtools
:ensure t
:config
(progn
(add-hook 'haskell-mode-hook 'flycheck-mode)
)
)
(use-package ghc
:if (executable-find "ghc-mod")
:ensure t
(use-package haskell-mode
:defer t
:diminish haskell-mode
:config
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(add-hook 'haskell-mode-hook'
(lambda ()
(push '("()" . ?∅) prettify-symbols-alist)
(push '("\\" . ?λ) prettify-symbols-alist)
(push '("pi" . ?π) prettify-symbols-alist)
(push '("=>" . ?⇒) prettify-symbols-alist)
(push '("->" . ?→) prettify-symbols-alist)
(push '("<-" . ?←) prettify-symbols-alist)
(push '("<=" . ?≤) prettify-symbols-alist)
(push '(">=" . ?≥) prettify-symbols-alist)
(push '("==" . ?≡) prettify-symbols-alist)
(push '("/=" . ?≢) prettify-symbols-alist)
(push '("!!" . "‼") prettify-symbols-alist)
(push '("&&" . ?∧) prettify-symbols-alist)
(push '("||" . ?∨) prettify-symbols-alist)
(push '("~>" . ?⇝) prettify-symbols-alist)
(push '("-<" . ?↢) prettify-symbols-alist)
(push '("not" . ?¬) prettify-symbols-alist)
(push '("forall" . ?∀) prettify-symbols-alist)
(push '("sqrt" . ?√) prettify-symbols-alist)
(push '("undefined" . ?⊥) prettify-symbols-alist)
(prettify-symbols-mode)
)
)
(add-to-list 'completion-ignored-extensions ".hi")
:custom
(haskell-program-name "ghci")
(haskell-process-type 'cabal-repl)
(haskell-tags-on-save t)
)
(use-package dante
:after haskell-mode
:diminish dante-mode
:config
(add-hook 'haskell-mode-hook 'dante-mode)
)
(use-package hindent
:if (executable-find "hindent")
:diminish hindent-mode
:after haskell-mode
:config
(add-hook 'haskell-mode-hook 'hindent-mode)
)
(use-package flycheck-haskell :after haskell-mode)
(use-package flycheck-hdevtools
:after haskell-mode
:config :config
(progn
(autoload 'ghc-init "ghc" nil t)
(autoload 'ghc-debug "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda ()
(ghc-init)))
)
(add-hook 'haskell-mode-hook 'flycheck-mode)
) )
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(custom-set-variables
'(haskell-program-name "ghci")
'(haskell-process-type 'cabal-repl)
'(haskell-tags-on-save t)
)
(add-to-list 'completion-ignored-extensions ".hi")
(add-hook 'haskell-mode-hook'
(lambda ()
(push '("()" . ?∅) prettify-symbols-alist)
(push '("\\" . ?λ) prettify-symbols-alist)
(push '("pi" . ?π) prettify-symbols-alist)
(push '("=>" . ?⇒) prettify-symbols-alist)
(push '("->" . ?→) prettify-symbols-alist)
(push '("<-" . ?←) prettify-symbols-alist)
(push '("<=" . ?≤) prettify-symbols-alist)
(push '(">=" . ?≥) prettify-symbols-alist)
(push '("==" . ?≡) prettify-symbols-alist)
(push '("/=" . ?≢) prettify-symbols-alist)
(push '("!!" . "‼") prettify-symbols-alist)
(push '("&&" . ?∧) prettify-symbols-alist)
(push '("||" . ?∨) prettify-symbols-alist)
(push '("~>" . ?⇝) prettify-symbols-alist)
(push '("-<" . ?↢) prettify-symbols-alist)
(push '("not" . ?¬) prettify-symbols-alist)
(push '("forall" . ?∀) prettify-symbols-alist)
(push '("sqrt" . ?√) prettify-symbols-alist)
(push '("undefined" . ?⊥) prettify-symbols-alist)
(prettify-symbols-mode)
)
)
)
)
(use-package ghc
:if (executable-find "ghc-mod")
:after haskell-mode
:config
(autoload 'ghc-init "ghc" nil t)
(autoload 'ghc-debug "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
)
#+END_SRC #+END_SRC


*** idris-mode *** idris-mode


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package idris-mode
:ensure t
:config
(progn
(add-to-list 'completion-ignored-extensions ".ibc")
(add-hook 'idris-mode-hook'
(lambda ()
(push '("()" . ?∅) prettify-symbols-alist)
(push '("\\" . ?λ) prettify-symbols-alist)
(push '("pi" . ?π) prettify-symbols-alist)
(push '("=>" . ?⇒) prettify-symbols-alist)
(push '("->" . ?→) prettify-symbols-alist)
(push '("<-" . ?←) prettify-symbols-alist)
(push '("<=" . ?≤) prettify-symbols-alist)
(push '(">=" . ?≥) prettify-symbols-alist)
(push '("==" . ?≡) prettify-symbols-alist)
(push '("/=" . ?≢) prettify-symbols-alist)
(push '("!!" . "‼") prettify-symbols-alist)
(push '("&&" . ?∧) prettify-symbols-alist)
(push '("||" . ?∨) prettify-symbols-alist)
(push '("~>" . ?⇝) prettify-symbols-alist)
(push '("-<" . ?↢) prettify-symbols-alist)
(push '("not" . ?¬) prettify-symbols-alist)
(push '("forall" . ?∀) prettify-symbols-alist)
(push '("sqrt" . ?√) prettify-symbols-alist)
(push '("undefined" . ?⊥) prettify-symbols-alist)
(prettify-symbols-mode)
)
)
)
)
(use-package idris-mode
:defer t
:config
(add-to-list 'completion-ignored-extensions ".ibc")
(add-hook 'idris-mode-hook'
(lambda ()
(push '("()" . ?∅) prettify-symbols-alist)
(push '("\\" . ?λ) prettify-symbols-alist)
(push '("pi" . ?π) prettify-symbols-alist)
(push '("=>" . ?⇒) prettify-symbols-alist)
(push '("->" . ?→) prettify-symbols-alist)
(push '("<-" . ?←) prettify-symbols-alist)
(push '("<=" . ?≤) prettify-symbols-alist)
(push '(">=" . ?≥) prettify-symbols-alist)
(push '("==" . ?≡) prettify-symbols-alist)
(push '("/=" . ?≢) prettify-symbols-alist)
(push '("!!" . "‼") prettify-symbols-alist)
(push '("&&" . ?∧) prettify-symbols-alist)
(push '("||" . ?∨) prettify-symbols-alist)
(push '("~>" . ?⇝) prettify-symbols-alist)
(push '("-<" . ?↢) prettify-symbols-alist)
(push '("not" . ?¬) prettify-symbols-alist)
(push '("forall" . ?∀) prettify-symbols-alist)
(push '("sqrt" . ?√) prettify-symbols-alist)
(push '("undefined" . ?⊥) prettify-symbols-alist)
(prettify-symbols-mode)
)
)
)
#+END_SRC #+END_SRC


*** undo-tree *** undo-tree
@@ -1166,21 +1157,19 @@ Need to make haskell source be all pretty.
Make undo more useful, and treelike. Make undo more useful, and treelike.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package undo-tree
:ensure t
:init
(global-undo-tree-mode)
:config
(progn (defadvice undo-tree-visualize (around undo-tree-split-side-by-side activate)
"Split undo-tree side-by-side"
(let ((split-height-threshold nil)
(split-width-threshold 0))
ad-do-it)
)
)
:bind
("C-x u" . undo-tree-visualize)
(use-package undo-tree
:ensure t
:config
(global-undo-tree-mode)
(defadvice undo-tree-visualize (around undo-tree-split-side-by-side activate)
"Split undo-tree side-by-side"
(let ((split-height-threshold nil)
(split-width-threshold 0))
ad-do-it)
) )
:bind
("C-x u" . undo-tree-visualize)
)
#+END_SRC #+END_SRC


*** color-identifiers-mode *** color-identifiers-mode
@@ -1189,12 +1178,12 @@ Color variables for easy identification, its like a rainbow puked over
everything opened in prog-mode-hook. everything opened in prog-mode-hook.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package color-identifiers-mode
:diminish color-identifiers-mode
:ensure t
:config
(add-hook 'prog-mode-hook 'color-identifiers-mode)
)
(use-package color-identifiers-mode
:defer t
:diminish color-identifiers-mode
:config
(add-hook 'prog-mode-hook 'color-identifiers-mode)
)
#+END_SRC #+END_SRC


*** idle-highlight-mode *** idle-highlight-mode
@@ -1203,12 +1192,12 @@ Highlight a variable when you're selecting it, helps in reviewing code to see
where it exists. where it exists.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package idle-highlight-mode
:diminish idle-highlight-mode
:ensure t
:config
(add-hook 'prog-mode-hook 'idle-highlight-mode)
)
(use-package idle-highlight-mode
:defer t
:diminish idle-highlight-mode
:config
(add-hook 'prog-mode-hook 'idle-highlight-mode)
)
#+END_SRC #+END_SRC


*** nix *** nix
@@ -1216,34 +1205,35 @@ where it exists.
Instead of text might as well get a decent mode hook going here. Instead of text might as well get a decent mode hook going here.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package nixos-options :ensure t)
(use-package company-nixos-options :ensure t)
(use-package nixos-options :defer t)
(use-package company-nixos-options :after company :defer t)
#+END_SRC #+END_SRC


#+BEGIN_SRC emacs-lisp :tangle no #+BEGIN_SRC emacs-lisp :tangle no
(use-package nix-mode :ensure t)
(setq flycheck-command-wrapper-function
(use-package nix-mode
:config
(setq flycheck-command-wrapper-function
(lambda (command) (apply 'nix-shell-command (nix-current-sandbox) command)) (lambda (command) (apply 'nix-shell-command (nix-current-sandbox) command))
flycheck-executable-find
flycheck-executable-find
(lambda (cmd) (nix-executable-find (nix-current-sandbox) cmd))) (lambda (cmd) (nix-executable-find (nix-current-sandbox) cmd)))
(add-to-list 'company-backends 'company-nixos-options)
(add-to-list 'company-backends 'company-nixos-options)
)
#+END_SRC #+END_SRC


*** docker-mode *** docker-mode


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package dockerfile-mode :defer t)
(use-package dockerfile-mode :defer t)
#+END_SRC #+END_SRC


*** cscope *** cscope


FIXME abandon in lieu of rtags?

#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package xcscope
:defer t
:config (progn (cscope-setup))
)
(use-package xcscope
:defer t
:config (cscope-setup))
#+END_SRC #+END_SRC


* mode related * mode related
@@ -1253,43 +1243,45 @@ Common mode defaults I think are sensible.


***** prog-mode hook ***** prog-mode hook


FIXME think this should get use-packaged

#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'prog-mode-hook
'(lambda ()
(interactive)
(hl-line-mode)
(whitespace-mode)
(visual-line-mode)
(flyspell-prog-mode)
(custom-set-variables
'(indent-tabs-mode nil)
'(tab-width 2)
)
(add-hook 'prog-mode-hook
'(lambda ()
(interactive)
(hl-line-mode)
(whitespace-mode)
(visual-line-mode)
(flyspell-prog-mode)
(custom-set-variables
'(indent-tabs-mode nil)
'(tab-width 2)
)
)
) )
)
#+END_SRC #+END_SRC


***** c ***** c


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-to-list 'auto-mode-alist '("\\.[chm]\\'" . c-mode)) (add-to-list 'auto-mode-alist '("\\.[chm]\\'" . c-mode))
(add-hook 'c-mode-common-hook
'(lambda ()
(global-set-key "\C-x\C-m" 'compile)
(setq flycheck-clang-language-standard "c11")
(setq flycheck-idle-change-delay 2)
(setq flycheck-highlighting-mode 'symbols)
(add-hook 'c-mode-common-hook
'(lambda ()
(global-set-key "\C-x\C-m" 'compile)
(setq flycheck-clang-language-standard "c11")
(setq flycheck-idle-change-delay 2)
(setq flycheck-highlighting-mode 'symbols)
;; later... ;; later...
;; (add-hook 'before-save-hook 'clang-format-buffer nil t) ;; (add-hook 'before-save-hook 'clang-format-buffer nil t)
(c-toggle-auto-state 1)
(setq-default c-basic-offset 2
tab-width 2
indent-tabs-mode nil
c-electric-flag t
indent-level 2
c-default-style "bsd"
backward-delete-function nil)
))
(c-toggle-auto-state 1)
(setq-default c-basic-offset 2
tab-width 2
indent-tabs-mode nil
c-electric-flag t
indent-level 2
c-default-style "bsd"
backward-delete-function nil)
))
#+END_SRC #+END_SRC


***** elisp ***** elisp
@@ -1308,152 +1300,156 @@ TODO: fixme
***** python-mode ***** python-mode


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'python-mode-hook
'(lambda ()
(flycheck-select-checker 'python-flake8)
)
)
(add-hook 'python-mode-hook
'(lambda ()
(flycheck-select-checker 'python-flake8)
)
)


#+END_SRC #+END_SRC


***** shell ***** shell


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(autoload 'sh--mode "sh-mode" "mode for shell stuff" t)
(autoload 'sh--mode "sh-mode" "mode for shell stuff" t)


(add-to-list 'auto-mode-alist '("\\.sh$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.[zk]sh$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.bash$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\[.].*shrc$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("sourceme$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.sh$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.[zk]sh$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.bash$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\[.].*shrc$\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("sourceme$\\'" . sh-mode))


(add-hook 'sh-mode-hook
'(lambda ()
(setq sh-basic-offset 2 sh-indentation 4
sh-indent-for-case-label 0 sh-indent-for-case-alt '+)))
(add-hook 'sh-mode-hook
'(lambda ()
(setq sh-basic-offset 2 sh-indentation 4
sh-indent-for-case-label 0 sh-indent-for-case-alt '+)))
#+END_SRC #+END_SRC


***** perl ***** perl


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(fset 'perl-mode 'cperl-mode)
(fset 'perl-mode 'cperl-mode)


(add-hook 'cperl-mode-hook
'(lambda ()
(setq indent-tabs-mode t)
(setq tab-width 8)
(setq cperl-indent-level 4)
(setq tab-stop-list (number-sequence 4 200 4))
(setq cperl-tab-always-indent t)
(setq cperl-indent-parens-as-block t)
)
)
(add-hook 'cperl-mode-hook
'(lambda ()
(setq indent-tabs-mode t)
(setq tab-width 8)
(setq cperl-indent-level 4)
(setq tab-stop-list (number-sequence 4 200 4))
(setq cperl-tab-always-indent t)
(setq cperl-indent-parens-as-block t)
)
)
#+END_SRC #+END_SRC


*** auto-insert-mode new file templates *** auto-insert-mode new file templates


FIXME: review if this is worth keeping around, methinks there should be
something better like yasnippet out there.

Use auto-insert-mode to insert in templates for blank files. Use auto-insert-mode to insert in templates for blank files.


So first up, add auto-insert to *find-file-hooks* so we insert straight away. Also setup the copyright bit to minimally put in name.
So first up, add auto-insert to *find-file-hooks* so we insert straight away. Also
setup the copyright bit to minimally put in name.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'find-file-hooks 'auto-insert)
(defvar auto-insert-copyright (user-full-name))
(add-hook 'find-file-hooks 'auto-insert)
(defvar auto-insert-copyright (user-full-name))
#+END_SRC #+END_SRC


Create *auto-insert-alist* so all the mode lists are the same Create *auto-insert-alist* so all the mode lists are the same


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defvar auto-insert-alist '(()))
(defvar auto-insert-alist '(()))
#+END_SRC #+END_SRC


***** c ***** c


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq auto-insert-alist
(append
'(
((c-mode . "c")
nil
"/*\n"
"File: " (file-name-nondirectory buffer-file-name) "\n"
"Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
"Description: " _ "\n"
"*/\n"
"#include <stdio.h>\n"
"#include <stdlib.h>\n\n"
"int main(int argc, char **argv) {\n"
" return 0;\n"
"}\n"
)
)
auto-insert-alist)
(setq auto-insert-alist
(append
'(
((c-mode . "c")
nil
"/*\n"
"File: " (file-name-nondirectory buffer-file-name) "\n"
"Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
"Description: " _ "\n"
"*/\n"
"#include <stdio.h>\n"
"#include <stdlib.h>\n\n"
"int main(int argc, char **argv) {\n"
" return 0;\n"
"}\n"
) )
)
auto-insert-alist)
)
#+END_SRC #+END_SRC


***** elisp ***** elisp
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq auto-insert-alist
(append
'(
((emacs-lisp-mode . "elisp")
nil
";;-*-mode: emacs-lisp; coding: utf-8;-*-\n"
";; File: " (file-name-nondirectory buffer-file-name) "\n"
";; Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
";; Description: " _ "\n"
)
)
auto-insert-alist)
(setq auto-insert-alist
(append
'(
((emacs-lisp-mode . "elisp")
nil
";;-*-mode: emacs-lisp; coding: utf-8;-*-\n"
";; File: " (file-name-nondirectory buffer-file-name) "\n"
";; Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
";; Description: " _ "\n"
) )
)
auto-insert-alist)
)
#+END_SRC #+END_SRC


***** python ***** python


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq auto-insert-alist
(append
'(((python-mode . "python")
nil
"#!/usr/bin/env python\n"
"# -*-mode: Python; coding: utf-8;-*-\n"
"# File: " (file-name-nondirectory buffer-file-name) "\n"
"# Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
"# Description: " _ "\n\n"
)
)
auto-insert-alist)
)
(setq auto-insert-alist
(append
'(((python-mode . "python")
nil
"#!/usr/bin/env python\n"
"# -*-mode: Python; coding: utf-8;-*-\n"
"# File: " (file-name-nondirectory buffer-file-name) "\n"
"# Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
"# Description: " _ "\n\n"
)
)
auto-insert-alist)
)
#+END_SRC #+END_SRC


***** shell ***** shell


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq auto-insert-alist
(append
'(
((sh-mode . "sh")
nil
"#!/usr/bin/env sh\n"
"#-*-mode: Shell-script; coding: utf-8;-*-\n"
"# File: " (file-name-nondirectory buffer-file-name) "\n"
"# Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
"# Description: " _ "\n"
"export script=$(basename \"$0\")\n"
"export dir=$(cd \"$(dirname \"$0\")\"; pwd)\n"
"export iam=${dir}/${script}\n"
)
)
auto-insert-alist)
)
(setq auto-insert-alist
(append
'(
((sh-mode . "sh")
nil
"#!/usr/bin/env sh\n"
"#-*-mode: Shell-script; coding: utf-8;-*-\n"
"# File: " (file-name-nondirectory buffer-file-name) "\n"
"# Copyright: " (substring (current-time-string) -4) " " auto-insert-copyright "\n"
"# Description: " _ "\n"
"export script=$(basename \"$0\")\n"
"export dir=$(cd \"$(dirname \"$0\")\"; pwd)\n"
"export iam=${dir}/${script}\n"
)
)
auto-insert-alist)
)
#+END_SRC #+END_SRC
* custom * custom


Load this up last to allow for local customization if needed and to keep from custom writing to the init.el file. Load this up last to allow for local customization if needed and to keep from custom writing to the init.el file.


#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror)
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror)
#+END_SRC #+END_SRC


* Load any local definitions * Load any local definitions


Loading…
Откажи
Сачувај