diff options
Diffstat (limited to 'emacs')
| -rw-r--r-- | emacs/init.html | 1333 | ||||
| -rw-r--r-- | emacs/init.org | 44 |
2 files changed, 697 insertions, 680 deletions
diff --git a/emacs/init.html b/emacs/init.html index ee04228..959bd75 100644 --- a/emacs/init.html +++ b/emacs/init.html @@ -4,7 +4,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>mssola's GNU Emacs configuration</title> -<!-- 2017-02-02 Thu 15:56 --> +<!-- 2017-02-03 Fri 10:29 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="generator" content="Org-mode" /> <meta name="author" content="Miquel Sabaté Solà" /> @@ -206,22 +206,22 @@ file <b>always</b>. The initial contents of the <code>init.el</code> are: <div class="org-src-container"> <pre class="src src-elisp"><span class="org-comment-delimiter">;; </span><span class="org-comment">We can't tangle without org!</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">require</span> '<span class="org-constant">org</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">require</span> '<span class="org-constant">org</span>) <span class="org-comment-delimiter">;; </span><span class="org-comment">Follow symlinks</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> vc-follow-symlinks t<span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">setq</span> vc-follow-symlinks t) <span class="org-comment-delimiter">;; </span><span class="org-comment">Open the configuration</span> -<span class="org-rainbow-delimiters-depth-1">(</span>find-file <span class="org-rainbow-delimiters-depth-2">(</span>concat user-emacs-directory <span class="org-string">"init.org"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(find-file (concat user-emacs-directory <span class="org-string">"init.org"</span>)) <span class="org-comment-delimiter">;; </span><span class="org-comment">Tangle it</span> -<span class="org-rainbow-delimiters-depth-1">(</span>org-babel-tangle<span class="org-rainbow-delimiters-depth-1">)</span> +(org-babel-tangle) <span class="org-comment-delimiter">;; </span><span class="org-comment">Load it</span> -<span class="org-rainbow-delimiters-depth-1">(</span>load-file <span class="org-rainbow-delimiters-depth-2">(</span>concat user-emacs-directory <span class="org-string">"init.el"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(load-file (concat user-emacs-directory <span class="org-string">"init.el"</span>)) <span class="org-comment-delimiter">;; </span><span class="org-comment">Finally byte-compile it</span> -<span class="org-rainbow-delimiters-depth-1">(</span>byte-compile-file <span class="org-rainbow-delimiters-depth-2">(</span>concat user-emacs-directory <span class="org-string">"init.el"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(byte-compile-file (concat user-emacs-directory <span class="org-string">"init.el"</span>)) </pre> </div> @@ -244,21 +244,21 @@ on each change, the following function is provided: <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">tangle-init</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">tangle-init</span> () <span class="org-doc">"If the current buffer is 'init.org' the code-blocks are</span> <span class="org-doc"> tangled, and the tangled file is compiled. Morever, an init.html is generated."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">or</span> <span class="org-rainbow-delimiters-depth-4">(</span>equal <span class="org-rainbow-delimiters-depth-5">(</span>buffer-file-name<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>expand-file-name <span class="org-rainbow-delimiters-depth-6">(</span>concat user-emacs-directory <span class="org-string">"init.org"</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>string-suffix-p <span class="org-string">"dotfiles/emacs/init.org"</span> <span class="org-rainbow-delimiters-depth-5">(</span>buffer-file-name<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + (<span class="org-keyword">when</span> (<span class="org-keyword">or</span> (equal (buffer-file-name) + (expand-file-name (concat user-emacs-directory <span class="org-string">"init.org"</span>))) + (string-suffix-p <span class="org-string">"dotfiles/emacs/init.org"</span> (buffer-file-name))) <span class="org-comment-delimiter">;; </span><span class="org-comment">Avoid running hooks when tangling</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>prog-mode-hook nil<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>org-babel-tangle<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>org-html-export-to-html<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>byte-compile-file <span class="org-rainbow-delimiters-depth-5">(</span>concat user-emacs-directory <span class="org-string">"init.el"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">let</span> ((prog-mode-hook nil)) + (org-babel-tangle) + (org-html-export-to-html) + (byte-compile-file (concat user-emacs-directory <span class="org-string">"init.el"</span>))))) -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'after-save-hook 'tangle-init<span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'after-save-hook 'tangle-init) </pre> </div> </div> @@ -274,8 +274,8 @@ individually handled. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">unless</span> <span class="org-rainbow-delimiters-depth-2">(</span>>= emacs-major-version 24<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-warning">error</span> <span class="org-string">"Don't be a cheap bastard and upgrade to at least GNU Emacs 24"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">unless</span> (>= emacs-major-version 24) + (<span class="org-warning">error</span> <span class="org-string">"Don't be a cheap bastard and upgrade to at least GNU Emacs 24"</span>)) </pre> </div> @@ -286,11 +286,11 @@ Temporarily reduce garbage collection so startup time is lower. Idea taken from <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defconst</span> <span class="org-variable-name">mssola-initial-gc-cons-threshold</span> gc-cons-threshold - <span class="org-doc">"Initial value of `</span><span class="org-doc"><span class="org-constant">gc-cons-threshold</span></span><span class="org-doc">' at start-up time."</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> gc-cons-threshold <span class="org-rainbow-delimiters-depth-2">(</span>* 1024 1024 1024<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'after-init-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">setq</span> gc-cons-threshold mssola-initial-gc-cons-threshold<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defconst</span> <span class="org-variable-name">mssola-initial-gc-cons-threshold</span> gc-cons-threshold + <span class="org-doc">"Initial value of `</span><span class="org-doc"><span class="org-constant">gc-cons-threshold</span></span><span class="org-doc">' at start-up time."</span>) +(<span class="org-keyword">setq</span> gc-cons-threshold (* 1024 1024 1024)) +(add-hook 'after-init-hook + (<span class="org-keyword">lambda</span> () (<span class="org-keyword">setq</span> gc-cons-threshold mssola-initial-gc-cons-threshold))) </pre> </div> @@ -300,8 +300,8 @@ User name and email. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> user-full-name <span class="org-string">"Miquel Sabaté Solà"</span> - user-mail-address <span class="org-string">"mikisabate@gmail.com"</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> user-full-name <span class="org-string">"Miquel Sabaté Solà"</span> + user-mail-address <span class="org-string">"mikisabate@gmail.com"</span>) </pre> </div> </div> @@ -325,12 +325,12 @@ name of the buffer is displayed (e.g. "mssola: <b>scratch</b>"). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> frame-title-format - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-builtin">:eval</span> - <span class="org-rainbow-delimiters-depth-4">(</span>concat <span class="org-rainbow-delimiters-depth-5">(</span>user-real-login-name<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-string">": "</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-6">(</span>buffer-file-name<span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-rainbow-delimiters-depth-6">(</span>abbreviate-file-name <span class="org-rainbow-delimiters-depth-7">(</span>buffer-file-name<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-string">"%b"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> frame-title-format + '((<span class="org-builtin">:eval</span> + (concat (user-real-login-name) <span class="org-string">": "</span> + (<span class="org-keyword">if</span> (buffer-file-name) + (abbreviate-file-name (buffer-file-name)) + <span class="org-string">"%b"</span>))))) </pre> </div> @@ -341,21 +341,21 @@ modes. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>menu-bar-mode -1<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-2">(</span>fboundp 'set-scroll-bar-mode<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>set-scroll-bar-mode nil<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-2">(</span>fboundp 'tool-bar-mode<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>tool-bar-mode -1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-2">(</span>fboundp 'tooltip-mode<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>tooltip-mode 0<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(menu-bar-mode -1) +(<span class="org-keyword">when</span> (fboundp 'set-scroll-bar-mode) + (set-scroll-bar-mode nil)) +(<span class="org-keyword">when</span> (fboundp 'tool-bar-mode) + (tool-bar-mode -1)) +(<span class="org-keyword">when</span> (fboundp 'tooltip-mode) + (tooltip-mode 0)) -<span class="org-rainbow-delimiters-depth-1">(</span>line-number-mode 1<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>column-number-mode 1<span class="org-rainbow-delimiters-depth-1">)</span> +(line-number-mode 1) +(column-number-mode 1) <span class="org-comment-delimiter">;; </span><span class="org-comment">Nice scrolling</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> scroll-margin 0 +(<span class="org-keyword">setq</span> scroll-margin 0 scroll-conservatively 100000 - scroll-preserve-screen-position 1<span class="org-rainbow-delimiters-depth-1">)</span> + scroll-preserve-screen-position 1) </pre> </div> </div> @@ -370,11 +370,11 @@ Use UTF-8 <b>always</b>. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>prefer-coding-system 'utf-8<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>set-default-coding-systems 'utf-8<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>set-terminal-coding-system 'utf-8<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>set-keyboard-coding-system 'utf-8<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>set-language-environment 'utf-8<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(prefer-coding-system 'utf-8) +(set-default-coding-systems 'utf-8) +(set-terminal-coding-system 'utf-8) +(set-keyboard-coding-system 'utf-8) +(set-language-environment 'utf-8) </pre> </div> </div> @@ -389,17 +389,17 @@ I'm using "Droid Sans Mono" simply because I've grown used to it. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>set-frame-font <span class="org-string">"Droid Sans Mono Dotted for Powerline-10"</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-to-list 'default-frame-alist '<span class="org-rainbow-delimiters-depth-2">(</span>font . <span class="org-string">"Droid Sans Mono Dotted for Powerline-10"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(set-frame-font <span class="org-string">"Droid Sans Mono Dotted for Powerline-10"</span>) +(add-to-list 'default-frame-alist '(font . <span class="org-string">"Droid Sans Mono Dotted for Powerline-10"</span>)) <span class="org-comment-delimiter">; </span><span class="org-comment">Emacs in daemon mode does not like `set-face-attribute` because this is only</span> <span class="org-comment-delimiter">; </span><span class="org-comment">applied if there is a frame in place, which doesn't happen when starting the</span> <span class="org-comment-delimiter">; </span><span class="org-comment">daemon. Thus, we should call that after the frame has been created (e.g. by</span> <span class="org-comment-delimiter">; </span><span class="org-comment">emacsclient).</span> <span class="org-comment-delimiter">; </span><span class="org-comment">See: https://lists.gnu.org/archive/html/help-gnu-emacs/2015-03/msg00016.html</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'after-make-frame-functions-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> - <span class="org-rainbow-delimiters-depth-3">(</span>set-face-attribute 'default t <span class="org-builtin">:font</span> <span class="org-string">"Droid Sans Mono Dotted for Powerline-10"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'after-make-frame-functions-hook + (<span class="org-keyword">lambda</span> () + (set-face-attribute 'default t <span class="org-builtin">:font</span> <span class="org-string">"Droid Sans Mono Dotted for Powerline-10"</span>))) </pre> </div> @@ -410,7 +410,7 @@ I've hacked my own theme called <a href="https://github.com/mssola/soria">soria< <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>load-theme 'soria t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(load-theme 'soria t) </pre> </div> </div> @@ -425,7 +425,7 @@ Use kill-this-buffer instead of kill-buffer. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>global-set-key <span class="org-rainbow-delimiters-depth-2">(</span>kbd <span class="org-string">"C-x k"</span><span class="org-rainbow-delimiters-depth-2">)</span> 'kill-this-buffer<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(global-set-key (kbd <span class="org-string">"C-x k"</span>) 'kill-this-buffer) </pre> </div> @@ -437,7 +437,7 @@ cannot be loaded due to some error. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>global-unset-key <span class="org-rainbow-delimiters-depth-2">(</span>kbd <span class="org-string">"C-z"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(global-unset-key (kbd <span class="org-string">"C-z"</span>)) </pre> </div> @@ -447,8 +447,8 @@ Disable all the Fn keys. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">dotimes</span> <span class="org-rainbow-delimiters-depth-2">(</span>i 12<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-unset-key <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-rainbow-delimiters-depth-4">(</span>format <span class="org-string">"<f%d>"</span> <span class="org-rainbow-delimiters-depth-5">(</span>+ i 1<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">dotimes</span> (i 12) + (global-unset-key (kbd (format <span class="org-string">"<f%d>"</span> (+ i 1))))) </pre> </div> @@ -458,7 +458,7 @@ Disable overwrite-mode. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>define-key global-map <span class="org-rainbow-delimiters-depth-2">[</span><span class="org-rainbow-delimiters-depth-3">(</span>insert<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">]</span> nil<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(define-key global-map [(insert)] nil) </pre> </div> </div> @@ -473,7 +473,7 @@ Revert buffers automatically when underlying files are changed externally. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>global-auto-revert-mode t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(global-auto-revert-mode t) </pre> </div> @@ -483,7 +483,7 @@ Follow symlinks. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> vc-follow-symlinks t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> vc-follow-symlinks t) </pre> </div> @@ -493,7 +493,7 @@ Remove the initial message from the scratch buffer. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> initial-scratch-message nil<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> initial-scratch-message nil) </pre> </div> @@ -503,11 +503,11 @@ Never kill the scratch buffer, bury it instead. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defadvice</span> <span class="org-function-name">kill-buffer</span> <span class="org-rainbow-delimiters-depth-2">(</span>around kill-buffer-around-advice activate<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>buffer-to-kill <span class="org-rainbow-delimiters-depth-5">(</span>ad-get-arg 0<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-4">(</span>equal buffer-to-kill <span class="org-string">"*scratch*"</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>bury-buffer<span class="org-rainbow-delimiters-depth-4">)</span> - ad-do-it<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defadvice</span> <span class="org-function-name">kill-buffer</span> (around kill-buffer-around-advice activate) + (<span class="org-keyword">let</span> ((buffer-to-kill (ad-get-arg 0))) + (<span class="org-keyword">if</span> (equal buffer-to-kill <span class="org-string">"*scratch*"</span>) + (bury-buffer) + ad-do-it))) </pre> </div> @@ -517,8 +517,8 @@ No backups <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq-default</span> make-backup-files nil<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq-default</span> auto-save-default nil<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq-default</span> make-backup-files nil) +(<span class="org-keyword">setq-default</span> auto-save-default nil) </pre> </div> @@ -528,7 +528,7 @@ No welcome screen <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq-default</span> inhibit-startup-message t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq-default</span> inhibit-startup-message t) </pre> </div> @@ -538,7 +538,7 @@ Enable y/n answers <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>fset 'yes-or-no-p 'y-or-n-p<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(fset 'yes-or-no-p 'y-or-n-p) </pre> </div> @@ -548,7 +548,7 @@ Let flyspell be performant. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defvar</span> <span class="org-variable-name">flyspell-issue-message-flag</span> nil<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defvar</span> <span class="org-variable-name">flyspell-issue-message-flag</span> nil) </pre> </div> @@ -558,9 +558,9 @@ Save custom-variables somewhere else. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> custom-file <span class="org-rainbow-delimiters-depth-2">(</span>expand-file-name <span class="org-string">"custom.el"</span> user-emacs-directory<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-2">(</span>file-exists-p custom-file<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>load custom-file<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> custom-file (expand-file-name <span class="org-string">"custom.el"</span> user-emacs-directory)) +(<span class="org-keyword">if</span> (file-exists-p custom-file) + (load custom-file)) </pre> </div> </div> @@ -576,7 +576,7 @@ We catalans start our weeks on Monday. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defvar</span> <span class="org-variable-name">calendar-week-start-day</span> 1<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defvar</span> <span class="org-variable-name">calendar-week-start-day</span> 1) </pre> </div> @@ -586,7 +586,7 @@ Global key binding. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>global-set-key <span class="org-rainbow-delimiters-depth-2">(</span>kbd <span class="org-string">"C-c c"</span><span class="org-rainbow-delimiters-depth-2">)</span> 'calendar<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(global-set-key (kbd <span class="org-string">"C-c c"</span>) 'calendar) </pre> </div> @@ -596,9 +596,9 @@ Fix some stuff for evil mode. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> <span class="org-string">"evil"</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'calendar-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">evil-define-key</span> 'normal calendar-mode-map +<pre class="src src-elisp">(<span class="org-keyword">with-eval-after-load</span> <span class="org-string">"evil"</span> + (evil-set-initial-state 'calendar-mode 'normal) + (<span class="org-keyword">evil-define-key</span> 'normal calendar-mode-map <span class="org-string">"j"</span> 'calendar-forward-week <span class="org-string">"k"</span> 'calendar-backward-week <span class="org-string">"b"</span> 'calendar-backward-day @@ -611,7 +611,7 @@ Fix some stuff for evil mode. <span class="org-string">"\C-j"</span> 'evil-window-down <span class="org-string">"\C-k"</span> 'evil-window-up <span class="org-string">"\C-n"</span> 'calendar-scroll-left-three-months - <span class="org-string">"\C-p"</span> 'calendar-scroll-right-three-months<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"\C-p"</span> 'calendar-scroll-right-three-months)) </pre> </div> </div> @@ -627,15 +627,15 @@ the <code>NEWS</code> file from the git server and then opens it in a buffer. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-view-emacs-latest-news</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-view-emacs-latest-news</span> () <span class="org-doc">"Allow users to fetch the latest Emacs' NEWS file."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">interactive</span>) - <span class="org-rainbow-delimiters-depth-2">(</span>url-copy-file + (url-copy-file <span class="org-string">"http://git.savannah.gnu.org/cgit/emacs.git/plain/etc/NEWS"</span> - <span class="org-string">"/tmp/emacs-news"</span> t<span class="org-rainbow-delimiters-depth-2">)</span> + <span class="org-string">"/tmp/emacs-news"</span> t) - <span class="org-rainbow-delimiters-depth-2">(</span>find-file-read-only <span class="org-string">"/tmp/emacs-news"</span> t<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (find-file-read-only <span class="org-string">"/tmp/emacs-news"</span> t)) </pre> </div> @@ -645,14 +645,14 @@ Sometimes I want to debug my initialization time. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">emacs-init-time</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">emacs-init-time</span> () <span class="org-doc">"Redefine the `</span><span class="org-doc"><span class="org-constant">emacs-init-time</span></span><span class="org-doc">' function so it is more detailed.</span> <span class="org-doc">Idea taken from @purcell."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>init-time - <span class="org-rainbow-delimiters-depth-5">(</span>float-time <span class="org-rainbow-delimiters-depth-6">(</span>time-subtract after-init-time before-init-time<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>message <span class="org-string">"%.3fs"</span> init-time<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">interactive</span>) + (<span class="org-keyword">let</span> ((init-time + (float-time (time-subtract after-init-time before-init-time)))) + (message <span class="org-string">"%.3fs"</span> init-time))) </pre> </div> </div> @@ -670,8 +670,8 @@ Compile the <code>g.el</code> script and bind it to <kbd>M-g</kbd>. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>byte-compile-file <span class="org-rainbow-delimiters-depth-2">(</span>concat user-emacs-directory <span class="org-string">"lisp/g.el"</span><span class="org-rainbow-delimiters-depth-2">)</span> t<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>global-set-key <span class="org-rainbow-delimiters-depth-2">(</span>kbd <span class="org-string">"M-g"</span><span class="org-rainbow-delimiters-depth-2">)</span> 'g<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(byte-compile-file (concat user-emacs-directory <span class="org-string">"lisp/g.el"</span>) t) +(global-set-key (kbd <span class="org-string">"M-g"</span>) 'g) </pre> </div> </div> @@ -686,14 +686,14 @@ Initialize package. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">require</span> '<span class="org-constant">package</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">require</span> '<span class="org-constant">package</span>) -<span class="org-rainbow-delimiters-depth-1">(</span>add-to-list 'package-archives - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">"melpa"</span> . <span class="org-string">"http://melpa.milkbox.net/packages/"</span><span class="org-rainbow-delimiters-depth-2">)</span> t<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-to-list 'package-archives - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">"melpa-stable"</span> . <span class="org-string">"https://stable.melpa.org/packages/"</span><span class="org-rainbow-delimiters-depth-2">)</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +(add-to-list 'package-archives + '(<span class="org-string">"melpa"</span> . <span class="org-string">"http://melpa.milkbox.net/packages/"</span>) t) +(add-to-list 'package-archives + '(<span class="org-string">"melpa-stable"</span> . <span class="org-string">"https://stable.melpa.org/packages/"</span>) t) -<span class="org-rainbow-delimiters-depth-1">(</span>package-initialize<span class="org-rainbow-delimiters-depth-1">)</span> +(package-initialize) </pre> </div> @@ -706,9 +706,9 @@ package-install, I decided on use-package because I feel more well-organized. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">unless</span> <span class="org-rainbow-delimiters-depth-2">(</span>package-installed-p 'use-package<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>package-refresh-contents<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>package-install 'use-package<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">unless</span> (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) </pre> </div> @@ -719,8 +719,8 @@ require it here on the very top. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">diminish</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">diminish</span> + <span class="org-builtin">:ensure</span> t) </pre> </div> </div> @@ -737,19 +737,19 @@ Ayo silver! <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">ag</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">ag</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Avoid some disagreements between ag and evil.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-3">(</span>add-hook 'ag-mode-hook - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">()</span> - <span class="org-rainbow-delimiters-depth-5">(</span>define-key ag-mode-map <span class="org-rainbow-delimiters-depth-6">(</span>kbd <span class="org-string">"n"</span><span class="org-rainbow-delimiters-depth-6">)</span> 'evil-search-next<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>define-key ag-mode-map <span class="org-rainbow-delimiters-depth-6">(</span>kbd <span class="org-string">"N"</span><span class="org-rainbow-delimiters-depth-6">)</span> 'evil-search-previous<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>define-key ag-mode-map <span class="org-rainbow-delimiters-depth-6">(</span>kbd <span class="org-string">"gg"</span><span class="org-rainbow-delimiters-depth-6">)</span> 'evil-goto-first-line<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> ag-reuse-buffers t<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> ag-reuse-window t<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'evil + (add-hook 'ag-mode-hook + (<span class="org-keyword">lambda</span> () + (define-key ag-mode-map (kbd <span class="org-string">"n"</span>) 'evil-search-next) + (define-key ag-mode-map (kbd <span class="org-string">"N"</span>) 'evil-search-previous) + (define-key ag-mode-map (kbd <span class="org-string">"gg"</span>) 'evil-goto-first-line)))) + (<span class="org-keyword">setq</span> ag-reuse-buffers t) + (<span class="org-keyword">setq</span> ag-reuse-window t)) </pre> </div> @@ -759,57 +759,57 @@ Then, for keeping up with my projects I use the Projectile + Helm combination. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">projectile</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">projectile</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>projectile-mode 1<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> projectile-mode-line - '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-builtin">:eval</span> <span class="org-rainbow-delimiters-depth-4">(</span>format <span class="org-string">" %s"</span> <span class="org-rainbow-delimiters-depth-5">(</span>projectile-project-name<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (projectile-mode 1) + (<span class="org-keyword">setq</span> projectile-mode-line + '(<span class="org-builtin">:eval</span> (format <span class="org-string">" %s"</span> (projectile-project-name))))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">helm</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">helm</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> projectile-completion-system 'helm<span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">setq</span> projectile-completion-system 'helm) <span class="org-comment-delimiter">; </span><span class="org-comment">Allow the search pattern to be on the header. Taken from this Reddit thread:</span> <span class="org-comment-delimiter">; </span><span class="org-comment">https://www.reddit.com/r/emacs/comments/3asbyn/new_and_very_useful_helm_feature_enter_search/</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> helm-echo-input-in-header-line t<span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">setq</span> helm-echo-input-in-header-line t) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">defun</span> <span class="org-function-name">helm-hide-minibuffer-maybe</span> <span class="org-rainbow-delimiters-depth-3">()</span> + (<span class="org-keyword">defun</span> <span class="org-function-name">helm-hide-minibuffer-maybe</span> () <span class="org-doc">"Hide the minibuffer if we are in a Helm session"</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">with-helm-buffer</span> helm-echo-input-in-header-line<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-rainbow-delimiters-depth-6">(</span>ov <span class="org-rainbow-delimiters-depth-7">(</span>make-overlay <span class="org-rainbow-delimiters-depth-8">(</span>point-min<span class="org-rainbow-delimiters-depth-8">)</span> <span class="org-rainbow-delimiters-depth-8">(</span>point-max<span class="org-rainbow-delimiters-depth-8">)</span> nil nil t<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>overlay-put ov 'window <span class="org-rainbow-delimiters-depth-6">(</span>selected-window<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>overlay-put ov 'face <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-7">(</span><span class="org-rainbow-delimiters-depth-8">(</span>bg-color <span class="org-rainbow-delimiters-depth-9">(</span>face-background 'default nil<span class="org-rainbow-delimiters-depth-9">)</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - `<span class="org-rainbow-delimiters-depth-7">(</span><span class="org-builtin">:background</span> ,bg-color <span class="org-builtin">:foreground</span> ,bg-color<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">setq-local</span> cursor-type nil<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">when</span> (<span class="org-keyword">with-helm-buffer</span> helm-echo-input-in-header-line) + (<span class="org-keyword">let</span> ((ov (make-overlay (point-min) (point-max) nil nil t))) + (overlay-put ov 'window (selected-window)) + (overlay-put ov 'face (<span class="org-keyword">let</span> ((bg-color (face-background 'default nil))) + `(<span class="org-builtin">:background</span> ,bg-color <span class="org-builtin">:foreground</span> ,bg-color))) + (<span class="org-keyword">setq-local</span> cursor-type nil)))) - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'helm-minibuffer-set-up-hook 'helm-hide-minibuffer-maybe<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> helm-split-window-in-side-p t<span class="org-rainbow-delimiters-depth-2">)</span> + (add-hook 'helm-minibuffer-set-up-hook 'helm-hide-minibuffer-maybe) + (<span class="org-keyword">setq</span> helm-split-window-in-side-p t) <span class="org-comment-delimiter">; </span><span class="org-comment">Preview files with tab</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key helm-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"<tab>"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'helm-execute-persistent-action<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key helm-map (kbd <span class="org-string">"<tab>"</span>) 'helm-execute-persistent-action) <span class="org-comment-delimiter">; </span><span class="org-comment">Show available options</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key helm-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-a"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'helm-select-action<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key helm-map (kbd <span class="org-string">"C-a"</span>) 'helm-select-action) <span class="org-comment-delimiter">; </span><span class="org-comment">Some vim-like bindings</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key helm-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-j"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'helm-next-line<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key helm-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-k"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'helm-previous-line<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key helm-map (kbd <span class="org-string">"C-j"</span>) 'helm-next-line) + (define-key helm-map (kbd <span class="org-string">"C-k"</span>) 'helm-previous-line) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">use-package</span> <span class="org-constant">helm-ag</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">helm-ag</span> + <span class="org-builtin">:ensure</span> t)) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">helm-projectile</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">helm-projectile</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>helm-projectile-on<span class="org-rainbow-delimiters-depth-2">)</span> + (helm-projectile-on) <span class="org-comment-delimiter">; </span><span class="org-comment">Define M-p as a way to quickly list all the available projects.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-4">(</span>kbd <span class="org-string">"M-p"</span><span class="org-rainbow-delimiters-depth-4">)</span> - 'helm-projectile-switch-project<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'evil + (define-key evil-normal-state-map (kbd <span class="org-string">"M-p"</span>) + 'helm-projectile-switch-project))) </pre> </div> @@ -822,37 +822,37 @@ buffers. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc-helm-buffer-list</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc-helm-buffer-list</span> () <span class="org-doc">"Returns a list with the ERC buffers."</span> - <span class="org-rainbow-delimiters-depth-2">(</span>mapcar 'buffer-name <span class="org-rainbow-delimiters-depth-3">(</span>erc-buffer-list<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (mapcar 'buffer-name (erc-buffer-list))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mssola-helm-source-erc-channel-list - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span>name . <span class="org-string">"ERC Channels"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>candidates . mssola-erc-helm-buffer-list<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>action . switch-to-buffer<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">defconst</span> <span class="org-variable-name">mssola-helm-source-erc-channel-list</span> + '((name . <span class="org-string">"ERC Channels"</span>) + (candidates . mssola-erc-helm-buffer-list) + (action . switch-to-buffer))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc-helm-switch-buffer</span> <span class="org-rainbow-delimiters-depth-2">()</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc-helm-switch-buffer</span> () <span class="org-doc">"Use helm to select an active ERC buffer."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">interactive</span>) - <span class="org-rainbow-delimiters-depth-2">(</span>helm <span class="org-builtin">:sources</span> '<span class="org-rainbow-delimiters-depth-3">(</span>mssola-helm-source-erc-channel-list<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-builtin">:buffer</span> <span class="org-string">"*helm-erc-channels*"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (helm <span class="org-builtin">:sources</span> '(mssola-helm-source-erc-channel-list) + <span class="org-builtin">:buffer</span> <span class="org-string">"*helm-erc-channels*"</span>)) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-find-file</span> <span class="org-rainbow-delimiters-depth-2">()</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-find-file</span> () <span class="org-doc">"Call the proper Helm function for finding files."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">interactive</span>) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-3">(</span>string= major-mode <span class="org-string">"erc-mode"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>mssola-erc-helm-switch-buffer<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">condition-case</span> nil - <span class="org-rainbow-delimiters-depth-4">(</span>helm-projectile-find-file<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-warning">error</span> - <span class="org-rainbow-delimiters-depth-5">(</span>helm-find-files nil<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">if</span> (string= major-mode <span class="org-string">"erc-mode"</span>) + (mssola-erc-helm-switch-buffer) + (<span class="org-keyword">condition-case</span> nil + (helm-projectile-find-file) + (<span class="org-warning">error</span> + (helm-find-files nil))))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-p"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'mssola-find-file<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">with-eval-after-load</span> 'evil + (define-key evil-normal-state-map (kbd <span class="org-string">"C-p"</span>) 'mssola-find-file)) </pre> </div> @@ -863,17 +863,17 @@ binding to <kbd>,a</kbd> a function that calls to the proper function. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-helm-ag</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-helm-ag</span> () <span class="org-doc">"Call the right ag command for helm-ag."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">interactive</span>) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">condition-case</span> nil - <span class="org-rainbow-delimiters-depth-3">(</span>helm-ag-project-root<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-warning">error</span> <span class="org-rainbow-delimiters-depth-4">(</span>helm-ag<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">condition-case</span> nil + (helm-ag-project-root) + (<span class="org-warning">error</span> (helm-ag)))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'evil-leader - <span class="org-rainbow-delimiters-depth-2">(</span>evil-leader/set-key <span class="org-string">"a"</span> 'mssola-helm-ag<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">with-eval-after-load</span> 'evil-leader + (evil-leader/set-key <span class="org-string">"a"</span> 'mssola-helm-ag)) </pre> </div> </div> @@ -892,18 +892,18 @@ recent versions of GNU Emacs. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'undo-tree - <span class="org-rainbow-delimiters-depth-2">(</span>global-undo-tree-mode 1<span class="org-rainbow-delimiters-depth-2">)</span> +<pre class="src src-elisp">(<span class="org-keyword">with-eval-after-load</span> 'undo-tree + (global-undo-tree-mode 1) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> undo-tree-visualizer-diff t + (<span class="org-keyword">setq</span> undo-tree-visualizer-diff t undo-tree-visualizer-timestamps t - undo-tree-visualizer-relative-timestamps t<span class="org-rainbow-delimiters-depth-2">)</span> + undo-tree-visualizer-relative-timestamps t) - <span class="org-rainbow-delimiters-depth-2">(</span>diminish 'undo-tree-mode<span class="org-rainbow-delimiters-depth-2">)</span> + (diminish 'undo-tree-mode) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil-leader - <span class="org-rainbow-delimiters-depth-3">(</span>evil-leader/set-key - <span class="org-string">"u"</span> 'undo-tree-visualize<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'evil-leader + (evil-leader/set-key + <span class="org-string">"u"</span> 'undo-tree-visualize))) </pre> </div> @@ -914,21 +914,21 @@ extension. This works with lots of languages with proper glue code. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">let-alist</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">let-alist</span> + <span class="org-builtin">:ensure</span> t) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">flycheck</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">flycheck</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:diminish</span> <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'after-init-hook 'global-flycheck-mode<span class="org-rainbow-delimiters-depth-2">)</span> + (add-hook 'after-init-hook 'global-flycheck-mode) <span class="org-comment-delimiter">;; </span><span class="org-comment">Only show the errors buffer if it isn't there and if I'm saving the</span> <span class="org-comment-delimiter">;; </span><span class="org-comment">buffer.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> flycheck-emacs-lisp-load-path 'inherit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> flycheck-check-syntax-automatically '<span class="org-rainbow-delimiters-depth-3">(</span>mode-enabled save<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> flycheck-display-errors-function - #'flycheck-display-error-messages-unless-error-list<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">setq</span> flycheck-emacs-lisp-load-path 'inherit) + (<span class="org-keyword">setq</span> flycheck-check-syntax-automatically '(mode-enabled save)) + (<span class="org-keyword">setq</span> flycheck-display-errors-function + #'flycheck-display-error-messages-unless-error-list)) </pre> </div> @@ -940,11 +940,11 @@ with your editor, you have to increase/decrease the fonts. I use the <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">default-text-scale</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">default-text-scale</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-set-key <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-+"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'default-text-scale-increase<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-set-key <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C--"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'default-text-scale-decrease<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (global-set-key (kbd <span class="org-string">"C-+"</span>) 'default-text-scale-increase) + (global-set-key (kbd <span class="org-string">"C--"</span>) 'default-text-scale-decrease)) </pre> </div> @@ -957,8 +957,8 @@ supports it). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">rainbow-delimiters</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">rainbow-delimiters</span> + <span class="org-builtin">:ensure</span> t) </pre> </div> @@ -968,11 +968,11 @@ I never use the mouse. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">disable-mouse</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">disable-mouse</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:diminish</span> <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-disable-mouse-mode<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (global-disable-mouse-mode)) </pre> </div> @@ -984,8 +984,8 @@ commands for the current chord as a list. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">which-key</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">which-key</span> + <span class="org-builtin">:ensure</span> t) </pre> </div> @@ -996,8 +996,8 @@ this, we have <code>wc-mode</code>. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">wc-mode</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">wc-mode</span> + <span class="org-builtin">:ensure</span> t) </pre> </div> @@ -1008,8 +1008,8 @@ that often, but it's cool to have a distraction-free screen from time to time. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">writeroom-mode</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">writeroom-mode</span> + <span class="org-builtin">:ensure</span> t) </pre> </div> @@ -1021,28 +1021,27 @@ most of my uses, it's convenient to have this tool anyways. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">expand-region</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">expand-region</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Set C-e as the expand command (mnemonic: expand). This command will</span> <span class="org-comment-delimiter">; </span><span class="org-comment">supercede the evil binding for "move one line", which I never use anyways.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-set-key <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"\C-e"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'er/expand-region<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-4">(</span>kbd <span class="org-string">"\C-e"</span><span class="org-rainbow-delimiters-depth-4">)</span> 'er/expand-region<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-visual-state-map <span class="org-rainbow-delimiters-depth-4">(</span>kbd <span class="org-string">"\C-e"</span><span class="org-rainbow-delimiters-depth-4">)</span> 'er/expand-region<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (global-set-key (kbd <span class="org-string">"\C-e"</span>) 'er/expand-region) + (<span class="org-keyword">with-eval-after-load</span> 'evil + (define-key evil-normal-state-map (kbd <span class="org-string">"\C-e"</span>) 'er/expand-region) + (define-key evil-visual-state-map (kbd <span class="org-string">"\C-e"</span>) 'er/expand-region))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">er/add-text-mode-expansions</span> <span class="org-rainbow-delimiters-depth-2">()</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">er/add-text-mode-expansions</span> () <span class="org-doc">"This way we can also expand the region into paragraphs & pages in text mode.</span> <span class="org-doc">Directly taken from: https://github.com/magnars/expand-region.el."</span> - <span class="org-rainbow-delimiters-depth-2">(</span>make-variable-buffer-local 'er/try-expand-list<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> er/try-expand-list <span class="org-rainbow-delimiters-depth-3">(</span>append - er/try-expand-list - '<span class="org-rainbow-delimiters-depth-4">(</span>mark-paragraph - mark-page<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (set (make-local-variable 'er/try-expand-list) (append + er/try-expand-list + '(mark-paragraph + mark-page)))) -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'text-mode-hook 'er/add-text-mode-expansions<span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'text-mode-hook 'er/add-text-mode-expansions) </pre> </div> @@ -1056,14 +1055,14 @@ snippets in another buffer. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">yasnippet</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">yasnippet</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:diminish</span> yas-minor-mode - <span class="org-builtin">:init</span> <span class="org-rainbow-delimiters-depth-2">(</span>yas-global-mode<span class="org-rainbow-delimiters-depth-2">)</span> + <span class="org-builtin">:init</span> (yas-global-mode) <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>yas-global-mode 1<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil-leader - <span class="org-rainbow-delimiters-depth-3">(</span>evil-leader/set-key <span class="org-string">"h"</span> 'yas-describe-tables<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (yas-global-mode 1) + (<span class="org-keyword">with-eval-after-load</span> 'evil-leader + (evil-leader/set-key <span class="org-string">"h"</span> 'yas-describe-tables))) </pre> </div> </div> @@ -1079,9 +1078,9 @@ whenever I use it, I want basic evil movement. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">evil-add-hjkl-bindings</span> dired-mode-map 'normal - <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"w"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-forward-word-begin<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">with-eval-after-load</span> 'evil + (<span class="org-keyword">evil-add-hjkl-bindings</span> dired-mode-map 'normal + (kbd <span class="org-string">"w"</span>) 'evil-forward-word-begin)) </pre> </div> @@ -1091,12 +1090,12 @@ I also extend <code>dired</code> with some handy tweaks. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> directory-free-space-args <span class="org-string">"-Pkh"</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> directory-free-space-args <span class="org-string">"-Pkh"</span> dired-dwim-target t dired-omit-mode nil dired-recursive-copies 'always dired-recursive-deletes 'always - delete-old-versions t<span class="org-rainbow-delimiters-depth-1">)</span> + delete-old-versions t) </pre> </div> @@ -1108,24 +1107,24 @@ from the <a href="https://www.djcbsoftware.nl/code/mu/mu4e/Dired.html#Dired">mu4 <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">require</span> '<span class="org-constant">gnus-dired</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">require</span> '<span class="org-constant">gnus-dired</span>) <span class="org-comment-delimiter">;; </span><span class="org-comment">Make the `</span><span class="org-comment"><span class="org-constant">gnus-dired-mail-buffers</span></span><span class="org-comment">' function also work on message-mode derived</span> <span class="org-comment-delimiter">;; </span><span class="org-comment">modes, such as mu4e-compose-mode.</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">gnus-dired-mail-buffers</span> <span class="org-rainbow-delimiters-depth-2">()</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">gnus-dired-mail-buffers</span> () <span class="org-doc">"Return a list of active message buffers."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-3">(</span>buffers<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">save-current-buffer</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">dolist</span> <span class="org-rainbow-delimiters-depth-5">(</span>buffer <span class="org-rainbow-delimiters-depth-6">(</span>buffer-list t<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>set-buffer buffer<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">and</span> <span class="org-rainbow-delimiters-depth-7">(</span>derived-mode-p 'message-mode<span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>null message-sent-message-via<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">push</span> <span class="org-rainbow-delimiters-depth-7">(</span>buffer-name buffer<span class="org-rainbow-delimiters-depth-7">)</span> buffers<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>nreverse buffers<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">let</span> (buffers) + (<span class="org-keyword">save-current-buffer</span> + (<span class="org-keyword">dolist</span> (buffer (buffer-list t)) + (set-buffer buffer) + (<span class="org-keyword">when</span> (<span class="org-keyword">and</span> (derived-mode-p 'message-mode) + (null message-sent-message-via)) + (<span class="org-keyword">push</span> (buffer-name buffer) buffers)))) + (nreverse buffers))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> gnus-dired-mail-mode 'mu4e-user-agent<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode<span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">setq</span> gnus-dired-mail-mode 'mu4e-user-agent) +(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) </pre> </div> </div> @@ -1148,65 +1147,65 @@ First of all, let's define a function that will be called whenever Evil is loade <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-evil</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-evil</span> () <span class="org-doc">"Configure evil mode."</span> <span class="org-comment-delimiter">; </span><span class="org-comment">We can safely remap <C-u> because the counting will be handled a-la Vim.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-u"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-scroll-up<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key evil-normal-state-map (kbd <span class="org-string">"C-u"</span>) 'evil-scroll-up) <span class="org-comment-delimiter">; </span><span class="org-comment">Make window navigation easier.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-j"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-window-down<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-k"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-window-up<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-l"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-window-right<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-h"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-window-left<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key evil-normal-state-map (kbd <span class="org-string">"C-j"</span>) 'evil-window-down) + (define-key evil-normal-state-map (kbd <span class="org-string">"C-k"</span>) 'evil-window-up) + (define-key evil-normal-state-map (kbd <span class="org-string">"C-l"</span>) 'evil-window-right) + (define-key evil-normal-state-map (kbd <span class="org-string">"C-h"</span>) 'evil-window-left) <span class="org-comment-delimiter">; </span><span class="org-comment">The window navigation tweaks effectively wipe out the help prefix, which</span> <span class="org-comment-delimiter">; </span><span class="org-comment">is bad. Fortunately we can workaround this by providing "M-h" as the new</span> <span class="org-comment-delimiter">; </span><span class="org-comment">help prefix. This prefix is only used in emacs mode to mark lines, which is</span> <span class="org-comment-delimiter">; </span><span class="org-comment">something already handled by Evil.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key global-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"M-h"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'help-command<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>fset 'help-command help-map<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key global-map (kbd <span class="org-string">"M-h"</span>) 'help-command) + (fset 'help-command help-map) <span class="org-comment-delimiter">; </span><span class="org-comment">I use the Super key in combination with j & k to move around i3. Let's unset</span> <span class="org-comment-delimiter">; </span><span class="org-comment">M- combos for these two fellows for whenever I misstype them.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-unset-key <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"M-j"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-unset-key <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"M-k"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (global-unset-key (kbd <span class="org-string">"M-j"</span>)) + (global-unset-key (kbd <span class="org-string">"M-k"</span>)) <span class="org-comment-delimiter">; </span><span class="org-comment">both this function and the subsequent lines about [escape] are taken from</span> <span class="org-comment-delimiter">; </span><span class="org-comment">@aaronbieber configuration.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">defun</span> <span class="org-function-name">minibuffer-keyboard-quit</span> <span class="org-rainbow-delimiters-depth-3">()</span> + (<span class="org-keyword">defun</span> <span class="org-function-name">minibuffer-keyboard-quit</span> () <span class="org-doc">"Abort recursive edit.</span> <span class="org-doc">In Delete Selection mode, if the mark is active, just deactivate it;</span> <span class="org-doc">then it takes a second \\[</span><span class="org-doc"><span class="org-constant">keyboard-quit</span></span><span class="org-doc">] to abort the minibuffer."</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">and</span> delete-selection-mode transient-mark-mode mark-active<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">setq</span> deactivate-mark t<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-5">(</span>get-buffer <span class="org-string">"*Completions*"</span><span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-rainbow-delimiters-depth-5">(</span>delete-windows-on <span class="org-string">"*Completions*"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>abort-recursive-edit<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">interactive</span>) + (<span class="org-keyword">if</span> (<span class="org-keyword">and</span> delete-selection-mode transient-mark-mode mark-active) + (<span class="org-keyword">setq</span> deactivate-mark t) + (<span class="org-keyword">when</span> (get-buffer <span class="org-string">"*Completions*"</span>) (delete-windows-on <span class="org-string">"*Completions*"</span>)) + (abort-recursive-edit))) <span class="org-comment-delimiter">;; </span><span class="org-comment">Make escape quit everything, whenever possible.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-visual-state-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key minibuffer-local-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'minibuffer-keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key minibuffer-local-ns-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'minibuffer-keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key minibuffer-local-completion-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'minibuffer-keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key minibuffer-local-must-match-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'minibuffer-keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key minibuffer-local-isearch-map <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span> 'minibuffer-keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key evil-normal-state-map [escape] 'keyboard-quit) + (define-key evil-visual-state-map [escape] 'keyboard-quit) + (define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit) + (define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit) + (define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit) + (define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit) + (define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit) <span class="org-comment-delimiter">; </span><span class="org-comment">I store macros on the <q> register for convenience, so I used to use the</span> <span class="org-comment-delimiter">; </span><span class="org-comment"><C-q> combo to execute this macro in Vim. In Emacs though, this combo is</span> <span class="org-comment-delimiter">; </span><span class="org-comment">reserved to a rather useful function, and I'd like to keep it that way. So,</span> <span class="org-comment-delimiter">; </span><span class="org-comment">now the mapping is set to <C-2> (mnemonic: where the @ symbol is). Moreover,</span> <span class="org-comment-delimiter">; </span><span class="org-comment">it's applied as many times as specified by the numeric prefix argument.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-2"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-4">(</span>n<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">interactive</span> <span class="org-string">"p"</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>evil-execute-macro n <span class="org-string">"@q"</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (define-key evil-normal-state-map (kbd <span class="org-string">"C-2"</span>) + (<span class="org-keyword">lambda</span> (n) + (<span class="org-keyword">interactive</span> <span class="org-string">"p"</span>) + (evil-execute-macro n <span class="org-string">"@q"</span>))) <span class="org-comment-delimiter">; </span><span class="org-comment">C-s: switch to normal mode and save the buffer. I know :)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-s"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'save-buffer<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-insert-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-s"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-4">()</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-4">)</span> <span class="org-rainbow-delimiters-depth-4">(</span>save-buffer<span class="org-rainbow-delimiters-depth-4">)</span> <span class="org-rainbow-delimiters-depth-4">(</span>evil-force-normal-state<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (define-key evil-normal-state-map (kbd <span class="org-string">"C-s"</span>) 'save-buffer) + (define-key evil-insert-state-map (kbd <span class="org-string">"C-s"</span>) + (<span class="org-keyword">lambda</span> () (<span class="org-keyword">interactive</span>) (save-buffer) (evil-force-normal-state)))) </pre> </div> @@ -1216,24 +1215,24 @@ Now make sure that Evil is installed, and call the relevant configuration functi <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">evil</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'evil-mode-hook 'mssola-evil<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-mode 1<span class="org-rainbow-delimiters-depth-2">)</span> + (add-hook 'evil-mode-hook 'mssola-evil) + (evil-mode 1) <span class="org-comment-delimiter">;; </span><span class="org-comment">C-z is unused and it's close to my beloved C-c. Since I don't want to mess</span> <span class="org-comment-delimiter">;; </span><span class="org-comment">with one of the most sacred Emacs prefixes, I'm moving to C-z.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key key-translation-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-z"</span><span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-rainbow-delimiters-depth-3">[</span>escape<span class="org-rainbow-delimiters-depth-3">]</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-operator-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-z"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'keyboard-quit<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>set-quit-char <span class="org-string">"C-z"</span><span class="org-rainbow-delimiters-depth-2">)</span> + (define-key key-translation-map (kbd <span class="org-string">"C-z"</span>) [escape]) + (define-key evil-operator-state-map (kbd <span class="org-string">"C-z"</span>) 'keyboard-quit) + (set-quit-char <span class="org-string">"C-z"</span>) <span class="org-comment-delimiter">;; </span><span class="org-comment">Use the proper initial evil state for the following modes.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'help-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'debugger-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'describe-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'Buffer-menu-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> + (evil-set-initial-state 'help-mode 'normal) + (evil-set-initial-state 'debugger-mode 'normal) + (evil-set-initial-state 'describe-mode 'normal) + (evil-set-initial-state 'Buffer-menu-mode 'normal) </pre> </div> @@ -1246,22 +1245,22 @@ Vim into Evil. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-leader</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">evil-leader</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-evil-leader-mode<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-leader/set-leader <span class="org-string">","</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> evil-leader/in-all-states 1<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-leader/set-key + (global-evil-leader-mode) + (evil-leader/set-leader <span class="org-string">","</span>) + (<span class="org-keyword">setq</span> evil-leader/in-all-states 1) + (evil-leader/set-key <span class="org-string">","</span> 'back-to-indentation <span class="org-string">"c"</span> 'delete-window <span class="org-string">"k"</span> 'kill-buffer-and-window <span class="org-string">"v"</span> 'split-window-right - <span class="org-string">"V"</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-4">()</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-4">)</span> <span class="org-rainbow-delimiters-depth-4">(</span>split-window-right<span class="org-rainbow-delimiters-depth-4">)</span> <span class="org-rainbow-delimiters-depth-4">(</span>other-window 1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-string">"V"</span> (<span class="org-keyword">lambda</span> () (<span class="org-keyword">interactive</span>) (split-window-right) (other-window 1)) <span class="org-string">"f"</span> 'flycheck-list-errors <span class="org-string">"e"</span> 'eval-last-sexp <span class="org-string">"b"</span> 'view-buffer - <span class="org-string">"o"</span> 'browse-url-at-point<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"o"</span> 'browse-url-at-point)) </pre> </div> @@ -1273,10 +1272,10 @@ having double quotes with single quotes in a single command). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-surround</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">evil-surround</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>global-evil-surround-mode 1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (global-evil-surround-mode 1)) </pre> </div> @@ -1289,10 +1288,10 @@ the current line, regardless of the programming language. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-commentary</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">evil-commentary</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-commentary-mode t<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (evil-commentary-mode t)) </pre> </div> @@ -1305,20 +1304,20 @@ respectively. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-args</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">evil-args</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Configuration taken from the documentation of evil-args.</span> <span class="org-comment-delimiter">;; </span><span class="org-comment">Bind evil-args text objects</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-inner-text-objects-map <span class="org-string">"a"</span> 'evil-inner-arg<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-outer-text-objects-map <span class="org-string">"a"</span> 'evil-outer-arg<span class="org-rainbow-delimiters-depth-2">)</span> + (define-key evil-inner-text-objects-map <span class="org-string">"a"</span> 'evil-inner-arg) + (define-key evil-outer-text-objects-map <span class="org-string">"a"</span> 'evil-outer-arg) <span class="org-comment-delimiter">;; </span><span class="org-comment">Bind evil-forward/backward-args</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-string">"L"</span> 'evil-forward-arg<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-string">"H"</span> 'evil-backward-arg<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-motion-state-map <span class="org-string">"L"</span> 'evil-forward-arg<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-motion-state-map <span class="org-string">"H"</span> 'evil-backward-arg<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (define-key evil-normal-state-map <span class="org-string">"L"</span> 'evil-forward-arg) + (define-key evil-normal-state-map <span class="org-string">"H"</span> 'evil-backward-arg) + (define-key evil-motion-state-map <span class="org-string">"L"</span> 'evil-forward-arg) + (define-key evil-motion-state-map <span class="org-string">"H"</span> 'evil-backward-arg)) </pre> </div> @@ -1331,11 +1330,11 @@ into Evil: <kbd>C-a</kbd> for increasing a number, and <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-numbers</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">evil-numbers</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-a"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-numbers/inc-at-pt<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-3">(</span>kbd <span class="org-string">"C-c -"</span><span class="org-rainbow-delimiters-depth-3">)</span> 'evil-numbers/dec-at-pt<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-rainbow-delimiters-unmatched">)</span> + (define-key evil-normal-state-map (kbd <span class="org-string">"C-a"</span>) 'evil-numbers/inc-at-pt) + (define-key evil-normal-state-map (kbd <span class="org-string">"C-c -"</span>) 'evil-numbers/dec-at-pt))) </pre> </div> </div> @@ -1351,37 +1350,37 @@ certainly useful for some common tasks (I guess that I still need some learning) <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">magit</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">magit</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Proper initial states.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-3">(</span>add-hook 'git-commit-mode-hook 'evil-insert-state<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>evil-set-initial-state 'magit-log-edit-mode 'insert<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'evil + (add-hook 'git-commit-mode-hook 'evil-insert-state) + (evil-set-initial-state 'magit-log-edit-mode 'insert)) <span class="org-comment-delimiter">; </span><span class="org-comment">When showing the status, hide the usually-redundant "branch" section and</span> <span class="org-comment-delimiter">; </span><span class="org-comment">show the rest.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'magit-section-set-visibility-hook - '<span class="org-rainbow-delimiters-depth-3">(</span>lambda <span class="org-rainbow-delimiters-depth-4">(</span>section<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-5">(</span>string= <span class="org-rainbow-delimiters-depth-6">(</span>magit-section-type section<span class="org-rainbow-delimiters-depth-6">)</span> <span class="org-string">"branch"</span><span class="org-rainbow-delimiters-depth-5">)</span> + (add-hook 'magit-section-set-visibility-hook + '(lambda (section) + (<span class="org-keyword">if</span> (string= (magit-section-type section) <span class="org-string">"branch"</span>) 'hide - 'show<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + 'show))) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil-leader - <span class="org-rainbow-delimiters-depth-3">(</span>evil-leader/set-key <span class="org-string">"s"</span> 'magit-status<span class="org-rainbow-delimiters-depth-3">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'evil-leader + (evil-leader/set-key <span class="org-string">"s"</span> 'magit-status) - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-magit</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">evil-magit</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">The magit + evil-magit combo messes up some chords, let's fix this.</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">evil-define-key</span> 'normal magit-mode-map + (<span class="org-keyword">evil-define-key</span> 'normal magit-mode-map <span class="org-string">"\C-h"</span> 'evil-window-left <span class="org-string">"\C-l"</span> 'evil-window-right <span class="org-string">"\C-j"</span> 'evil-window-down <span class="org-string">"\C-k"</span> 'evil-window-up - <span class="org-string">"\M-p"</span> 'helm-projectile-switch-project<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"\M-p"</span> 'helm-projectile-switch-project)))) </pre> </div> </div> @@ -1403,10 +1402,10 @@ I'm using an RPM that I've built on <a href="https://build.opensuse.org/package/ <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-to-list 'load-path <span class="org-string">"/usr/share/emacs/site-lisp/mu4e"</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">require</span> '<span class="org-constant">mu4e</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(add-to-list 'load-path <span class="org-string">"/usr/share/emacs/site-lisp/mu4e"</span>) +(<span class="org-keyword">require</span> '<span class="org-constant">mu4e</span>) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">featurep</span> '<span class="org-constant">mu4e</span><span class="org-rainbow-delimiters-depth-2">)</span> +(<span class="org-keyword">when</span> (<span class="org-keyword">featurep</span> '<span class="org-constant">mu4e</span>) </pre> </div> @@ -1416,9 +1415,9 @@ Diferent SMTP options that will be used for each context. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> message-send-mail-function 'smtpmail-send-it - mu4e-maildir <span class="org-rainbow-delimiters-depth-2">(</span>expand-file-name <span class="org-string">"~/.mail"</span><span class="org-rainbow-delimiters-depth-2">)</span> - starttls-use-gnutls t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> message-send-mail-function 'smtpmail-send-it + mu4e-maildir (expand-file-name <span class="org-string">"~/.mail"</span>) + starttls-use-gnutls t) </pre> </div> @@ -1429,35 +1428,35 @@ the configuration. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-smtp</span> <span class="org-rainbow-delimiters-depth-2">(</span>server port<span class="org-rainbow-delimiters-depth-2">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-smtp</span> (server port) <span class="org-doc">"Set SMTP variables depending on the given SERVER and PORT."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">require</span> '<span class="org-constant">smtpmail</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">require</span> '<span class="org-constant">smtpmail</span>) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> smtpmail-starttls-credentials - '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>server port nil nil<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + (<span class="org-keyword">setq</span> smtpmail-starttls-credentials + '((server port nil nil)) smtpmail-auth-credentials - <span class="org-rainbow-delimiters-depth-3">(</span>expand-file-name <span class="org-string">"~/.authinfo.gpg"</span><span class="org-rainbow-delimiters-depth-3">)</span> + (expand-file-name <span class="org-string">"~/.authinfo.gpg"</span>) smtpmail-default-smtp-server server smtpmail-smtp-server server - smtpmail-smtp-service port<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + smtpmail-smtp-service port)) <span class="org-comment-delimiter">; </span><span class="org-comment">https://www.reddit.com/r/emacs/comments/47t9ec/share_your_mu4econtext_configs/d0fsih6</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mu4e-message-maildir-matches</span> <span class="org-rainbow-delimiters-depth-2">(</span>msg rx<span class="org-rainbow-delimiters-depth-2">)</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">mu4e-message-maildir-matches</span> (msg rx) <span class="org-doc">"Returns true if the maildir of MSG matches the given regexp RX."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">when</span> rx - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-4">(</span>listp rx<span class="org-rainbow-delimiters-depth-4">)</span> + (<span class="org-keyword">when</span> rx + (<span class="org-keyword">if</span> (listp rx) <span class="org-comment-delimiter">;; </span><span class="org-comment">if rx is a list, try each one for a match</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">or</span> <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-message-maildir-matches msg <span class="org-rainbow-delimiters-depth-6">(</span>car rx<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-message-maildir-matches msg <span class="org-rainbow-delimiters-depth-6">(</span>cdr rx<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> + (<span class="org-keyword">or</span> (mu4e-message-maildir-matches msg (car rx)) + (mu4e-message-maildir-matches msg (cdr rx))) <span class="org-comment-delimiter">;; </span><span class="org-comment">not a list, check rx</span> - <span class="org-rainbow-delimiters-depth-4">(</span>string-match rx <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-message-field msg <span class="org-builtin">:maildir</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (string-match rx (mu4e-message-field msg <span class="org-builtin">:maildir</span>))))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">suse-refile-folder</span> <span class="org-rainbow-delimiters-depth-2">(</span>key<span class="org-rainbow-delimiters-depth-2">)</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">suse-refile-folder</span> (key) <span class="org-doc">"Returns the refile folder for the given SUSE account in the KEY arg"</span> - <span class="org-rainbow-delimiters-depth-2">(</span>concat <span class="org-string">"/"</span> key <span class="org-string">"/Archives/"</span> - <span class="org-rainbow-delimiters-depth-3">(</span>format-time-string <span class="org-string">"%Y"</span> <span class="org-rainbow-delimiters-depth-4">(</span>current-time<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (concat <span class="org-string">"/"</span> key <span class="org-string">"/Archives/"</span> + (format-time-string <span class="org-string">"%Y"</span> (current-time)))) </pre> </div> @@ -1468,58 +1467,58 @@ this way is relatively new (since mu 0.9.16). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-contexts - `<span class="org-rainbow-delimiters-depth-2">(</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-contexts + `( <span class="org-comment-delimiter">;; </span><span class="org-comment">GMail</span> - ,<span class="org-rainbow-delimiters-depth-3">(</span>make-mu4e-context + ,(make-mu4e-context <span class="org-builtin">:name</span> <span class="org-string">"gmail"</span> - <span class="org-builtin">:enter-func</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">()</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-message <span class="org-string">"Switching to gmail.com"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mssola-smtp <span class="org-string">"smtp.gmail.com"</span> 587<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:match-func</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">(</span>msg<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">when</span> msg - <span class="org-rainbow-delimiters-depth-6">(</span>mu4e-message-maildir-matches msg <span class="org-string">"^/gmail"</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:vars</span> '<span class="org-rainbow-delimiters-depth-4">(</span> - <span class="org-rainbow-delimiters-depth-5">(</span>user-mail-address . <span class="org-string">"mikisabate@gmail.com"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-reply-to-address . <span class="org-string">"mikisabate@gmail.com"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-drafts-folder . <span class="org-string">"/gmail/Drafts"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-sent-folder . <span class="org-string">"/gmail/Sent"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-refile-folder . <span class="org-string">"/gmail/All"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-trash-folder . <span class="org-string">"/gmail/Trash"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-builtin">:enter-func</span> (<span class="org-keyword">lambda</span> () + (mu4e-message <span class="org-string">"Switching to gmail.com"</span>) + (mssola-smtp <span class="org-string">"smtp.gmail.com"</span> 587)) + <span class="org-builtin">:match-func</span> (<span class="org-keyword">lambda</span> (msg) + (<span class="org-keyword">when</span> msg + (mu4e-message-maildir-matches msg <span class="org-string">"^/gmail"</span>))) + <span class="org-builtin">:vars</span> '( + (user-mail-address . <span class="org-string">"mikisabate@gmail.com"</span>) + (mu4e-reply-to-address . <span class="org-string">"mikisabate@gmail.com"</span>) + (mu4e-drafts-folder . <span class="org-string">"/gmail/Drafts"</span>) + (mu4e-sent-folder . <span class="org-string">"/gmail/Sent"</span>) + (mu4e-refile-folder . <span class="org-string">"/gmail/All"</span>) + (mu4e-trash-folder . <span class="org-string">"/gmail/Trash"</span>))) <span class="org-comment-delimiter">;; </span><span class="org-comment">suse.com</span> - ,<span class="org-rainbow-delimiters-depth-3">(</span>make-mu4e-context + ,(make-mu4e-context <span class="org-builtin">:name</span> <span class="org-string">"comsuse"</span> - <span class="org-builtin">:enter-func</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">()</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-message <span class="org-string">"Switching to suse.com"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mssola-smtp <span class="org-string">"smtp.novell.com"</span> 25<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:match-func</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">(</span>msg<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">when</span> msg - <span class="org-rainbow-delimiters-depth-6">(</span>mu4e-message-maildir-matches msg <span class="org-string">"^/susecom"</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:vars</span> `<span class="org-rainbow-delimiters-depth-4">(</span> - <span class="org-rainbow-delimiters-depth-5">(</span>user-mail-address . <span class="org-string">"msabate@suse.com"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-reply-to-address . <span class="org-string">"msabate@suse.com"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-drafts-folder . <span class="org-string">"/susecom/Drafts"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-sent-folder . <span class="org-string">"/susecom/Sent"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-refile-folder . ,<span class="org-rainbow-delimiters-depth-6">(</span>suse-refile-folder <span class="org-string">"susecom"</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-trash-folder . <span class="org-string">"/susecom/Trash"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-builtin">:enter-func</span> (<span class="org-keyword">lambda</span> () + (mu4e-message <span class="org-string">"Switching to suse.com"</span>) + (mssola-smtp <span class="org-string">"smtp.novell.com"</span> 25)) + <span class="org-builtin">:match-func</span> (<span class="org-keyword">lambda</span> (msg) + (<span class="org-keyword">when</span> msg + (mu4e-message-maildir-matches msg <span class="org-string">"^/susecom"</span>))) + <span class="org-builtin">:vars</span> `( + (user-mail-address . <span class="org-string">"msabate@suse.com"</span>) + (mu4e-reply-to-address . <span class="org-string">"msabate@suse.com"</span>) + (mu4e-drafts-folder . <span class="org-string">"/susecom/Drafts"</span>) + (mu4e-sent-folder . <span class="org-string">"/susecom/Sent"</span>) + (mu4e-refile-folder . ,(suse-refile-folder <span class="org-string">"susecom"</span>)) + (mu4e-trash-folder . <span class="org-string">"/susecom/Trash"</span>))) <span class="org-comment-delimiter">;; </span><span class="org-comment">suse.de</span> - ,<span class="org-rainbow-delimiters-depth-3">(</span>make-mu4e-context + ,(make-mu4e-context <span class="org-builtin">:name</span> <span class="org-string">"desuse"</span> - <span class="org-builtin">:enter-func</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">()</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-message <span class="org-string">"Switching to suse.de"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mssola-smtp <span class="org-string">"imap.suse.de"</span> 587<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:match-func</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">(</span>msg<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">when</span> msg - <span class="org-rainbow-delimiters-depth-6">(</span>mu4e-message-maildir-matches msg <span class="org-string">"^/susede"</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:vars</span> `<span class="org-rainbow-delimiters-depth-4">(</span> - <span class="org-rainbow-delimiters-depth-5">(</span>user-mail-address . <span class="org-string">"msabate@suse.de"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-reply-to-address . <span class="org-string">"msabate@suse.de"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-drafts-folder . <span class="org-string">"/susede/Drafts"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-sent-folder . <span class="org-string">"/susede/Sent"</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-refile-folder . ,<span class="org-rainbow-delimiters-depth-6">(</span>suse-refile-folder <span class="org-string">"susede"</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>mu4e-trash-folder . <span class="org-string">"/susede/Trash"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-builtin">:enter-func</span> (<span class="org-keyword">lambda</span> () + (mu4e-message <span class="org-string">"Switching to suse.de"</span>) + (mssola-smtp <span class="org-string">"imap.suse.de"</span> 587)) + <span class="org-builtin">:match-func</span> (<span class="org-keyword">lambda</span> (msg) + (<span class="org-keyword">when</span> msg + (mu4e-message-maildir-matches msg <span class="org-string">"^/susede"</span>))) + <span class="org-builtin">:vars</span> `( + (user-mail-address . <span class="org-string">"msabate@suse.de"</span>) + (mu4e-reply-to-address . <span class="org-string">"msabate@suse.de"</span>) + (mu4e-drafts-folder . <span class="org-string">"/susede/Drafts"</span>) + (mu4e-sent-folder . <span class="org-string">"/susede/Sent"</span>) + (mu4e-refile-folder . ,(suse-refile-folder <span class="org-string">"susede"</span>)) + (mu4e-trash-folder . <span class="org-string">"/susede/Trash"</span>))))) </pre> </div> @@ -1529,8 +1528,8 @@ If mu4e cannot figure things out, ask me. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-context-policy 'ask<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-compose-context-policy 'ask<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-context-policy 'ask) +(<span class="org-keyword">setq</span> mu4e-compose-context-policy 'ask) </pre> </div> @@ -1540,13 +1539,13 @@ Fill the <code>mu4e-user-mail-address-list</code> variable with the contexts. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-user-mail-address-list - <span class="org-rainbow-delimiters-depth-2">(</span>delq nil - <span class="org-rainbow-delimiters-depth-3">(</span>mapcar <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">(</span>context<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-6">(</span>mu4e-context-vars context<span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-rainbow-delimiters-depth-6">(</span>cdr <span class="org-rainbow-delimiters-depth-7">(</span>assq 'user-mail-address - <span class="org-rainbow-delimiters-depth-8">(</span>mu4e-context-vars context<span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - mu4e-contexts<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-user-mail-address-list + (delq nil + (mapcar (<span class="org-keyword">lambda</span> (context) + (<span class="org-keyword">when</span> (mu4e-context-vars context) + (cdr (assq 'user-mail-address + (mu4e-context-vars context))))) + mu4e-contexts))) </pre> </div> @@ -1556,10 +1555,10 @@ Setting my bookmarks <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-bookmarks - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox"</span> <span class="org-string">"Inbox Folders"</span> ?n<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"flag:unread AND NOT flag:trashed"</span> <span class="org-string">"Unread messages"</span> ?u<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"date:today..now"</span> <span class="org-string">"Today's messages"</span> ?t<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-bookmarks + '((<span class="org-string">"maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox"</span> <span class="org-string">"Inbox Folders"</span> ?n) + (<span class="org-string">"flag:unread AND NOT flag:trashed"</span> <span class="org-string">"Unread messages"</span> ?u) + (<span class="org-string">"date:today..now"</span> <span class="org-string">"Today's messages"</span> ?t))) </pre> </div> @@ -1570,10 +1569,10 @@ format=flowed or not. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-compose-signature - <span class="org-rainbow-delimiters-depth-2">(</span>concat +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-compose-signature + (concat <span class="org-string">"Miquel Sabaté Solà,\n"</span> - <span class="org-string">"PGP: 4096R / 1BA5 3C7A C93D CA2A CFDF DA97 96BE 8C6F D89D 6565\n"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"PGP: 4096R / 1BA5 3C7A C93D CA2A CFDF DA97 96BE 8C6F D89D 6565\n"</span>)) </pre> </div> @@ -1583,7 +1582,7 @@ Sign outgoing emails always. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime) </pre> </div> @@ -1593,7 +1592,7 @@ To avoid UID clashes. See <a href="http://pragmaticemacs.com/emacs/fixing-duplic <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-change-filenames-when-moving t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-change-filenames-when-moving t) </pre> </div> @@ -1603,7 +1602,7 @@ Miscellaneous settings. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-html2text-command <span class="org-string">"w3m -T text/html"</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-html2text-command <span class="org-string">"w3m -T text/html"</span> mu4e-attachment-dir <span class="org-string">"~/Downloads"</span> mu4e-headers-date-format <span class="org-string">"%Y-%m-%d %H:%M"</span> message-citation-line-format <span class="org-string">"%N @ %Y-%m-%d %H:%M %Z:\n"</span> @@ -1615,7 +1614,7 @@ Miscellaneous settings. mu4e-compose-format-flowed t mu4e-headers-skip-duplicates t mu4e-headers-include-related t - mu4e-headers-auto-update t<span class="org-rainbow-delimiters-depth-1">)</span> + mu4e-headers-auto-update t) </pre> </div> @@ -1627,11 +1626,11 @@ These are the defaults: <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-headers-fields - '<span class="org-rainbow-delimiters-depth-2">(</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-builtin">:date</span> . 18<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-builtin">:mailing-list</span> . 15<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-builtin">:from-or-to</span> . 20<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-builtin">:subject</span> . nil<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-headers-fields + '( (<span class="org-builtin">:date</span> . 18) + (<span class="org-builtin">:mailing-list</span> . 15) + (<span class="org-builtin">:from-or-to</span> . 20) + (<span class="org-builtin">:subject</span> . nil))) </pre> </div> @@ -1641,12 +1640,12 @@ Show images <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mu4e-view-show-images t - mu4e-view-image-max-width 800<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> mu4e-view-show-images t + mu4e-view-image-max-width 800) <span class="org-comment-delimiter">; </span><span class="org-comment">Use imagemagick, if available</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-2">(</span>fboundp 'imagemagick-register-types<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>imagemagick-register-types<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">when</span> (fboundp 'imagemagick-register-types) + (imagemagick-register-types)) </pre> </div> @@ -1657,9 +1656,9 @@ render an HTML message with Webkit. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-2">(</span>>= emacs-major-version 25<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'mu4e-view-actions - '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"webkit"</span> . mu4e-action-view-with-xwidget<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">if</span> (>= emacs-major-version 25) + (add-to-list 'mu4e-view-actions + '(<span class="org-string">"webkit"</span> . mu4e-action-view-with-xwidget))) </pre> </div> @@ -1671,9 +1670,9 @@ on it. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span>exec <span class="org-rainbow-delimiters-depth-4">(</span>locate-file <span class="org-string">"msg2pdf"</span> exec-path exec-suffixes<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">if</span> exec - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">setq</span> mu4e-msg2pdf exec<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">let</span> ((exec (locate-file <span class="org-string">"msg2pdf"</span> exec-path exec-suffixes))) + (<span class="org-keyword">if</span> exec + (<span class="org-keyword">setq</span> mu4e-msg2pdf exec))) </pre> </div> @@ -1683,33 +1682,33 @@ Adding hooks for composing and viewing messages. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-compose-mode</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-compose-mode</span> () <span class="org-doc">"My settings for message composition."</span> <span class="org-comment-delimiter">; </span><span class="org-comment">If we are composing an email from scratch, it's more convenient to be in</span> <span class="org-comment-delimiter">; </span><span class="org-comment">insert mode. Otherwise start with normal mode.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> mu4e-compose-parent-message - <span class="org-rainbow-delimiters-depth-4">(</span>evil-set-initial-state 'mu4e-compose-mode 'normal<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>evil-set-initial-state 'mu4e-compose-mode 'insert<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'evil + (<span class="org-keyword">if</span> mu4e-compose-parent-message + (evil-set-initial-state 'mu4e-compose-mode 'normal) + (evil-set-initial-state 'mu4e-compose-mode 'insert))) <span class="org-comment-delimiter">; </span><span class="org-comment">Guess hard newlines</span> - <span class="org-rainbow-delimiters-depth-2">(</span>use-hard-newlines t 'guess<span class="org-rainbow-delimiters-depth-2">)</span> + (use-hard-newlines t 'guess) <span class="org-comment-delimiter">; </span><span class="org-comment">So it's easy to encrypt/decrypt emails.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>epa-mail-mode<span class="org-rainbow-delimiters-depth-2">)</span> + (epa-mail-mode) <span class="org-comment-delimiter">; </span><span class="org-comment">Spellz</span> - <span class="org-rainbow-delimiters-depth-2">(</span>flyspell-mode<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (flyspell-mode)) -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'mu4e-compose-mode-hook 'mssola-compose-mode<span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'mu4e-compose-mode-hook 'mssola-compose-mode) <span class="org-comment-delimiter">; </span><span class="org-comment">I want to read messages in the format that the sender used. I'm also</span> <span class="org-comment-delimiter">; </span><span class="org-comment">enabling epa-mail-mode, so it's easy to decrypt received emails.</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'mu4e-view-mode-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> - <span class="org-rainbow-delimiters-depth-3">(</span>epa-mail-mode<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>visual-line-mode 1<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'mu4e-view-mode-hook + (<span class="org-keyword">lambda</span> () + (epa-mail-mode) + (visual-line-mode 1))) </pre> </div> @@ -1719,35 +1718,35 @@ I want desktop notifications when receiving email. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">mu4e-alert</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">mu4e-alert</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Notify me for unread emails from my inbox.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>mu4e-alert-set-default-style 'libnotify<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'after-init-hook #'mu4e-alert-enable-notifications<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'after-init-hook #'mu4e-alert-enable-mode-line-display<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> mu4e-alert-interesting-mail-query - <span class="org-rainbow-delimiters-depth-3">(</span>concat + (mu4e-alert-set-default-style 'libnotify) + (add-hook 'after-init-hook #'mu4e-alert-enable-notifications) + (add-hook 'after-init-hook #'mu4e-alert-enable-mode-line-display) + (<span class="org-keyword">setq</span> mu4e-alert-interesting-mail-query + (concat <span class="org-string">"(maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox) "</span> - <span class="org-string">"AND flag:unread AND NOT flag:trashed"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> mu4e-alert-email-notification-types '<span class="org-rainbow-delimiters-depth-3">(</span>count<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"AND flag:unread AND NOT flag:trashed"</span>)) + (<span class="org-keyword">setq</span> mu4e-alert-email-notification-types '(count))) <span class="org-comment-delimiter">; </span><span class="org-comment">Evil mode in mu4e</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'evil - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">use-package</span> <span class="org-constant">evil-mu4e</span> +(<span class="org-keyword">with-eval-after-load</span> 'evil + (<span class="org-keyword">use-package</span> <span class="org-constant">evil-mu4e</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Idea taken from evil-mu4e.el</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">defvar</span> <span class="org-variable-name">mssola-evil-mu4e-mode-map-bindings</span> - `<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>,evil-mu4e-state mu4e-headers-mode-map <span class="org-string">"\C-u"</span> evil-scroll-up<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>,evil-mu4e-state mu4e-main-mode-map <span class="org-string">"\C-u"</span> evil-scroll-up<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>,evil-mu4e-state mu4e-view-mode-map <span class="org-string">"h"</span> evil-backward-char<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + (<span class="org-keyword">defvar</span> <span class="org-variable-name">mssola-evil-mu4e-mode-map-bindings</span> + `((,evil-mu4e-state mu4e-headers-mode-map <span class="org-string">"\C-u"</span> evil-scroll-up) + (,evil-mu4e-state mu4e-main-mode-map <span class="org-string">"\C-u"</span> evil-scroll-up) + (,evil-mu4e-state mu4e-view-mode-map <span class="org-string">"h"</span> evil-backward-char))) - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">dolist</span> <span class="org-rainbow-delimiters-depth-4">(</span>binding mssola-evil-mu4e-mode-map-bindings<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">evil-define-key</span> - <span class="org-rainbow-delimiters-depth-5">(</span>nth 0 binding<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-rainbow-delimiters-depth-5">(</span>nth 1 binding<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-rainbow-delimiters-depth-5">(</span>nth 2 binding<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-rainbow-delimiters-depth-5">(</span>nth 3 binding<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">dolist</span> (binding mssola-evil-mu4e-mode-map-bindings) + (<span class="org-keyword">evil-define-key</span> + (nth 0 binding) (nth 1 binding) (nth 2 binding) (nth 3 binding))))) </pre> </div> @@ -1759,7 +1758,7 @@ And finally define a proper shortcut. <pre class="src src-elisp"><span class="org-comment-delimiter">; </span><span class="org-comment">The trailing parenthesis closes the "(when (featurep 'mu4e)" statement from</span> <span class="org-comment-delimiter">; </span><span class="org-comment">the very beginning.</span> -<span class="org-rainbow-delimiters-depth-1">(</span>global-set-key <span class="org-rainbow-delimiters-depth-2">(</span>kbd <span class="org-string">"C-c m"</span><span class="org-rainbow-delimiters-depth-2">)</span> 'mu4e<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-rainbow-delimiters-unmatched">)</span> +(global-set-key (kbd <span class="org-string">"C-c m"</span>) 'mu4e)) </pre> </div> </div> @@ -1768,7 +1767,19 @@ And finally define a proper shortcut. <div id="outline-container-sec-13" class="outline-2"> <h2 id="sec-13">org</h2> <div class="outline-text-2" id="text-13"> -</div><div id="outline-container-sec-13-1" class="outline-3"> +<p> +<a href="http://orgmode.org/">org mode</a> is an incredible tool that keeps me organized: TODOs, notes, agenda, +etc. Moreover, it's built in GNU Emacs: +</p> + +<div class="org-src-container"> + +<pre class="src src-elisp">(<span class="org-keyword">require</span> '<span class="org-constant">org</span>) +</pre> +</div> +</div> + +<div id="outline-container-sec-13-1" class="outline-3"> <h3 id="sec-13-1">General settings</h3> <div class="outline-text-3" id="text-13-1"> <p> @@ -1777,34 +1788,34 @@ First of all, let me define some helper functions. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-org-skip-if-priority</span> <span class="org-rainbow-delimiters-depth-2">(</span>priority <span class="org-type">&optional</span> subtree<span class="org-rainbow-delimiters-depth-2">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-org-skip-if-priority</span> (priority <span class="org-type">&optional</span> subtree) <span class="org-doc">"Skip an agenda item if it has a priority of PRIORITY.</span> <span class="org-doc">PRIORITY may be one of the characters ?A, ?B, or ?C.</span> <span class="org-doc">Skips the current entry unless SUBTREE is not nil. This function has been</span> <span class="org-doc">copied from @aaronbieber."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>end <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">if</span> subtree <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">save-excursion</span> <span class="org-rainbow-delimiters-depth-7">(</span>org-end-of-subtree t<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">save-excursion</span> <span class="org-rainbow-delimiters-depth-7">(</span><span class="org-keyword">progn</span> <span class="org-rainbow-delimiters-depth-8">(</span>outline-next-heading<span class="org-rainbow-delimiters-depth-8">)</span> <span class="org-rainbow-delimiters-depth-8">(</span>1- <span class="org-rainbow-delimiters-depth-9">(</span>point<span class="org-rainbow-delimiters-depth-9">)</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>pri-value <span class="org-rainbow-delimiters-depth-5">(</span>* 1000 <span class="org-rainbow-delimiters-depth-6">(</span>- org-lowest-priority priority<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>pri-current <span class="org-rainbow-delimiters-depth-5">(</span>org-get-priority <span class="org-rainbow-delimiters-depth-6">(</span>thing-at-point 'line t<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-4">(</span>= pri-value pri-current<span class="org-rainbow-delimiters-depth-4">)</span> + (<span class="org-keyword">let</span> ((end (<span class="org-keyword">if</span> subtree (<span class="org-keyword">save-excursion</span> (org-end-of-subtree t)) + (<span class="org-keyword">save-excursion</span> (<span class="org-keyword">progn</span> (outline-next-heading) (1- (point)))))) + (pri-value (* 1000 (- org-lowest-priority priority))) + (pri-current (org-get-priority (thing-at-point 'line t)))) + (<span class="org-keyword">if</span> (= pri-value pri-current) end - nil<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + nil))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-org-skip-if-not-closed-in-day</span> <span class="org-rainbow-delimiters-depth-2">(</span>time <span class="org-type">&optional</span> subtree<span class="org-rainbow-delimiters-depth-2">)</span> +(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-org-skip-if-not-closed-in-day</span> (time <span class="org-type">&optional</span> subtree) <span class="org-doc">"Skip entries that were not closed in the given TIME.</span> <span class="org-doc">Skip the current entry unless SUBTREE is not nil, in which case skip</span> <span class="org-doc">the entire subtree. Idea taken from @aaronbieber"</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">let</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>end <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">if</span> subtree <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">save-excursion</span> <span class="org-rainbow-delimiters-depth-7">(</span>org-end-of-subtree t<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-keyword">save-excursion</span> <span class="org-rainbow-delimiters-depth-7">(</span><span class="org-keyword">progn</span> <span class="org-rainbow-delimiters-depth-8">(</span>outline-next-heading<span class="org-rainbow-delimiters-depth-8">)</span> <span class="org-rainbow-delimiters-depth-8">(</span>1- <span class="org-rainbow-delimiters-depth-9">(</span>point<span class="org-rainbow-delimiters-depth-9">)</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>day-prefix <span class="org-rainbow-delimiters-depth-5">(</span>format-time-string <span class="org-string">"%Y-%m-%d"</span> time<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + (<span class="org-keyword">let</span> ((end (<span class="org-keyword">if</span> subtree (<span class="org-keyword">save-excursion</span> (org-end-of-subtree t)) + (<span class="org-keyword">save-excursion</span> (<span class="org-keyword">progn</span> (outline-next-heading) (1- (point)))))) + (day-prefix (format-time-string <span class="org-string">"%Y-%m-%d"</span> time))) - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">save-excursion</span> - <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">and</span> <span class="org-rainbow-delimiters-depth-6">(</span>re-search-forward org-closed-time-regexp end t<span class="org-rainbow-delimiters-depth-6">)</span> - <span class="org-rainbow-delimiters-depth-6">(</span>string= <span class="org-rainbow-delimiters-depth-7">(</span>substring <span class="org-rainbow-delimiters-depth-8">(</span>match-string-no-properties 1<span class="org-rainbow-delimiters-depth-8">)</span> 0 10<span class="org-rainbow-delimiters-depth-7">)</span> day-prefix<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> + (<span class="org-keyword">if</span> (<span class="org-keyword">save-excursion</span> + (<span class="org-keyword">and</span> (re-search-forward org-closed-time-regexp end t) + (string= (substring (match-string-no-properties 1) 0 10) day-prefix))) nil - end<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + end))) </pre> </div> @@ -1814,21 +1825,21 @@ Some general UI settings for org mode. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-src-tab-acts-natively t +<pre class="src src-elisp">(<span class="org-keyword">setq</span> org-src-tab-acts-natively t org-confirm-babel-evaluate nil - org-edit-src-content-indentation 0<span class="org-rainbow-delimiters-depth-1">)</span> + org-edit-src-content-indentation 0) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-todo-keywords - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span>sequence <span class="org-string">"</span><span class="org-string"><span class="org-warning">TODO</span></span><span class="org-string">(t)"</span> <span class="org-string">"|"</span> <span class="org-string">"DONE(d!)"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>sequence <span class="org-string">"IDEA(i)"</span> <span class="org-string">"WORKING(w)"</span> <span class="org-string">"|"</span> <span class="org-string">"USED(u@/!)"</span> <span class="org-string">"DISCARDED(x@/!)"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">setq</span> org-todo-keywords + '((sequence <span class="org-string">"TODO(t)"</span> <span class="org-string">"|"</span> <span class="org-string">"DONE(d!)"</span>) + (sequence <span class="org-string">"IDEA(i)"</span> <span class="org-string">"WORKING(w)"</span> <span class="org-string">"|"</span> <span class="org-string">"USED(u@/!)"</span> <span class="org-string">"DISCARDED(x@/!)"</span>))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-todo-keyword-faces - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"</span><span class="org-string"><span class="org-warning">TODO</span></span><span class="org-string">"</span> . org-todo<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"IDEA"</span> . font-lock-constant-face<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"WORKING"</span> . font-lock-constant-face<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"DONE"</span> . org-done<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"USED"</span> . org-done<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"DISCARDED"</span> . org-done<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">setq</span> org-todo-keyword-faces + '((<span class="org-string">"TODO"</span> . org-todo) + (<span class="org-string">"IDEA"</span> . font-lock-constant-face) + (<span class="org-string">"WORKING"</span> . font-lock-constant-face) + (<span class="org-string">"DONE"</span> . org-done) + (<span class="org-string">"USED"</span> . org-done) + (<span class="org-string">"DISCARDED"</span> . org-done))) </pre> </div> @@ -1838,9 +1849,9 @@ Logging settings. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-log-done t<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-log-redeadline <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">quote</span> time<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-log-reschedule <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">quote</span> time<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> org-log-done t) +(<span class="org-keyword">setq</span> org-log-redeadline (<span class="org-keyword">quote</span> time)) +(<span class="org-keyword">setq</span> org-log-reschedule (<span class="org-keyword">quote</span> time)) </pre> </div> @@ -1850,7 +1861,7 @@ Where org files reside. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-agenda-files '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">"~/org/"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> org-agenda-files '(<span class="org-string">"~/org/"</span>)) </pre> </div> </div> @@ -1867,8 +1878,8 @@ blocks to be converted into HTML as well, so we can properly colorize it). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">htmlize</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">htmlize</span> + <span class="org-builtin">:ensure</span> t) </pre> </div> @@ -1878,13 +1889,13 @@ And now let's set all the related settings. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-src-fontify-natively t +<pre class="src src-elisp">(<span class="org-keyword">setq</span> org-src-fontify-natively t org-html-include-timestamps nil org-html-toplevel-hlevel 2 org-html-htmlize-output-type 'css org-export-with-section-numbers nil org-export-with-sub-superscripts nil - org-export-htmlize-output-type 'css<span class="org-rainbow-delimiters-depth-1">)</span> + org-export-htmlize-output-type 'css) </pre> </div> </div> @@ -1899,73 +1910,73 @@ Custom commands for <code>org-agenda</code>. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-agenda-custom-commands - '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"p"</span> <span class="org-string">"Printed agenda"</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> org-agenda-custom-commands + '((<span class="org-string">"p"</span> <span class="org-string">"Printed agenda"</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Daily agenda with a 2-weeks deadline warning. Tasks are</span> <span class="org-comment-delimiter">; </span><span class="org-comment">represented as [ ] items.</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>agenda <span class="org-string">""</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-ndays 1<span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-deadline-warning-days 14<span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">"[ ]"</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-scheduled-leaders '<span class="org-rainbow-delimiters-depth-8">(</span><span class="org-string">""</span> <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> + ((agenda <span class="org-string">""</span> + ((org-agenda-ndays 1) + (org-deadline-warning-days 14) + (org-agenda-todo-keyword-format <span class="org-string">"[ ]"</span>) + (org-agenda-scheduled-leaders '(<span class="org-string">""</span> <span class="org-string">""</span>)))) <span class="org-comment-delimiter">; </span><span class="org-comment">Display a "High Priority" list of tasks on top.</span> - <span class="org-rainbow-delimiters-depth-5">(</span>tags <span class="org-string">"PRIORITY=\"A\""</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-skip-function '<span class="org-rainbow-delimiters-depth-8">(</span>org-agenda-skip-entry-if 'todo 'done<span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-sorting-strategy '<span class="org-rainbow-delimiters-depth-8">(</span>tag-up priority-down<span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-overriding-header <span class="org-string">"\nHigh priority\n--------------\n"</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> + (tags <span class="org-string">"PRIORITY=\"A\""</span> + ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) + (org-agenda-sorting-strategy '(tag-up priority-down)) + (org-agenda-todo-keyword-format <span class="org-string">""</span>) + (org-agenda-overriding-header <span class="org-string">"\nHigh priority\n--------------\n"</span>))) <span class="org-comment-delimiter">; </span><span class="org-comment">All tasks except those already listed as high priority or</span> <span class="org-comment-delimiter">; </span><span class="org-comment">ideas. Scheduled and deadlines are also ignored here.</span> - <span class="org-rainbow-delimiters-depth-5">(</span>alltodo <span class="org-string">""</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-skip-function '<span class="org-rainbow-delimiters-depth-8">(</span><span class="org-keyword">or</span> <span class="org-rainbow-delimiters-depth-9">(</span>mssola-org-skip-if-priority ?A<span class="org-rainbow-delimiters-depth-9">)</span> - <span class="org-rainbow-delimiters-depth-9">(</span>org-agenda-skip-entry-if 'todo '<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">"IDEA"</span> <span class="org-string">"WORKING"</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-rainbow-delimiters-depth-9">)</span> - <span class="org-rainbow-delimiters-depth-9">(</span>org-agenda-skip-if nil '<span class="org-rainbow-delimiters-depth-1">(</span>scheduled deadline<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-rainbow-delimiters-depth-9">)</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-sorting-strategy '<span class="org-rainbow-delimiters-depth-8">(</span>tag-up priority-down<span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-overriding-header <span class="org-string">"\nAll tasks\n----------\n"</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> + (alltodo <span class="org-string">""</span> + ((org-agenda-skip-function '(<span class="org-keyword">or</span> (mssola-org-skip-if-priority ?A) + (org-agenda-skip-entry-if 'todo '(<span class="org-string">"IDEA"</span> <span class="org-string">"WORKING"</span>)) + (org-agenda-skip-if nil '(scheduled deadline)))) + (org-agenda-sorting-strategy '(tag-up priority-down)) + (org-agenda-todo-keyword-format <span class="org-string">""</span>) + (org-agenda-overriding-header <span class="org-string">"\nAll tasks\n----------\n"</span>))) <span class="org-comment-delimiter">; </span><span class="org-comment">List of ideas.</span> - <span class="org-rainbow-delimiters-depth-5">(</span>todo <span class="org-string">"IDEA"</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-overriding-header <span class="org-string">"\nIdeas\n------\n"</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> + (todo <span class="org-string">"IDEA"</span> + ((org-agenda-overriding-header <span class="org-string">"\nIdeas\n------\n"</span>) + (org-agenda-todo-keyword-format <span class="org-string">""</span>)))) - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>org-agenda-compact-blocks t<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>org-agenda-remove-tags t<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> + ((org-agenda-compact-blocks t) + (org-agenda-remove-tags t))) <span class="org-comment-delimiter">; </span><span class="org-comment">List of done items. Useful for standups, review meetings, weekly</span> <span class="org-comment-delimiter">; </span><span class="org-comment">reports, etc.</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"d"</span> <span class="org-string">"Done items"</span> + (<span class="org-string">"d"</span> <span class="org-string">"Done items"</span> <span class="org-comment-delimiter">; </span><span class="org-comment">First show the items done yesterday. Useful for standups.</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>todo <span class="org-string">"DONE"</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-overriding-header <span class="org-string">"Done yesterday\n---------------\n"</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-skip-function - '<span class="org-rainbow-delimiters-depth-8">(</span>mssola-org-skip-if-not-closed-in-day - <span class="org-rainbow-delimiters-depth-9">(</span>time-subtract <span class="org-rainbow-delimiters-depth-1">(</span>current-time<span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-rainbow-delimiters-depth-1">(</span>seconds-to-time 86400<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-rainbow-delimiters-depth-9">)</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> + ((todo <span class="org-string">"DONE"</span> + ((org-agenda-overriding-header <span class="org-string">"Done yesterday\n---------------\n"</span>) + (org-agenda-skip-function + '(mssola-org-skip-if-not-closed-in-day + (time-subtract (current-time) (seconds-to-time 86400)))) + (org-agenda-todo-keyword-format <span class="org-string">""</span>))) <span class="org-comment-delimiter">; </span><span class="org-comment">Then show what I've done today.</span> - <span class="org-rainbow-delimiters-depth-5">(</span>todo <span class="org-string">"DONE"</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-overriding-header <span class="org-string">"\nDone today\n-----------\n"</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-skip-function - '<span class="org-rainbow-delimiters-depth-8">(</span>mssola-org-skip-if-not-closed-in-day - <span class="org-rainbow-delimiters-depth-9">(</span>current-time<span class="org-rainbow-delimiters-depth-9">)</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span> + (todo <span class="org-string">"DONE"</span> + ((org-agenda-overriding-header <span class="org-string">"\nDone today\n-----------\n"</span>) + (org-agenda-skip-function + '(mssola-org-skip-if-not-closed-in-day + (current-time))) + (org-agenda-todo-keyword-format <span class="org-string">""</span>))) <span class="org-comment-delimiter">; </span><span class="org-comment">Finally show what I've been doing in the past 15 days. Useful for</span> <span class="org-comment-delimiter">; </span><span class="org-comment">review meetings and weekly reports.</span> - <span class="org-rainbow-delimiters-depth-5">(</span>todo <span class="org-string">"DONE"</span> - <span class="org-rainbow-delimiters-depth-6">(</span><span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-start-day <span class="org-string">"-15d"</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-span 15<span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-start-on-weekday nil<span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-todo-keyword-format <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-scheduled-leaders '<span class="org-rainbow-delimiters-depth-8">(</span><span class="org-string">""</span> <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-rainbow-delimiters-depth-7">)</span> - <span class="org-rainbow-delimiters-depth-7">(</span>org-agenda-overriding-header <span class="org-string">"\nDone during the past 15 days\n-----------------------------\n"</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> + (todo <span class="org-string">"DONE"</span> + ((org-agenda-start-day <span class="org-string">"-15d"</span>) + (org-agenda-span 15) + (org-agenda-start-on-weekday nil) + (org-agenda-todo-keyword-format <span class="org-string">""</span>) + (org-agenda-scheduled-leaders '(<span class="org-string">""</span> <span class="org-string">""</span>)) + (org-agenda-overriding-header <span class="org-string">"\nDone during the past 15 days\n-----------------------------\n"</span>)))) - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>org-agenda-compact-blocks t<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-rainbow-delimiters-depth-5">(</span>org-agenda-remove-tags t<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + ((org-agenda-compact-blocks t) + (org-agenda-remove-tags t))))) </pre> </div> @@ -1975,9 +1986,9 @@ The prefix for the different kinds of types being used. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> org-agenda-prefix-format '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span>agenda . <span class="org-string">"%t%s"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>tags . <span class="org-string">"%c:%s"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>todo . <span class="org-string">"%c:%t%s"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> org-agenda-prefix-format '((agenda . <span class="org-string">"%t%s"</span>) + (tags . <span class="org-string">"%c:%s"</span>) + (todo . <span class="org-string">"%c:%t%s"</span>))) </pre> </div> </div> @@ -1992,21 +2003,21 @@ Insert a <kbd></kbd> value in org mode. See this <a href="http://ema <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">endless/insert-key</span> <span class="org-rainbow-delimiters-depth-2">(</span>key<span class="org-rainbow-delimiters-depth-2">)</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">endless/insert-key</span> (key) <span class="org-doc">"Ask for a key then insert its description.</span> <span class="org-doc">Will work on both org-mode and any mode that accepts plain html."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span> <span class="org-string">"kType key sequence: "</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">let*</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>is-org-mode <span class="org-rainbow-delimiters-depth-5">(</span>derived-mode-p 'org-mode<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>tag <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">if</span> is-org-mode + (<span class="org-keyword">interactive</span> <span class="org-string">"kType key sequence: "</span>) + (<span class="org-keyword">let*</span> ((is-org-mode (derived-mode-p 'org-mode)) + (tag (<span class="org-keyword">if</span> is-org-mode <span class="org-string">"@@html:<kbd>%s</kbd>@@"</span> - <span class="org-string">"<kbd>%s</kbd>"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">if</span> <span class="org-rainbow-delimiters-depth-4">(</span>null <span class="org-rainbow-delimiters-depth-5">(</span>equal key <span class="org-string">"\r"</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>insert - <span class="org-rainbow-delimiters-depth-5">(</span>format tag <span class="org-rainbow-delimiters-depth-6">(</span>help-key-description key nil<span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>insert <span class="org-rainbow-delimiters-depth-5">(</span>format tag <span class="org-string">""</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>forward-char <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">if</span> is-org-mode -8 -6<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"<kbd>%s</kbd>"</span>))) + (<span class="org-keyword">if</span> (null (equal key <span class="org-string">"\r"</span>)) + (insert + (format tag (help-key-description key nil))) + (insert (format tag <span class="org-string">""</span>)) + (forward-char (<span class="org-keyword">if</span> is-org-mode -8 -6))))) -<span class="org-rainbow-delimiters-depth-1">(</span>define-key org-mode-map <span class="org-string">"\C-ck"</span> #'endless/insert-key<span class="org-rainbow-delimiters-depth-1">)</span> +(define-key org-mode-map <span class="org-string">"\C-ck"</span> #'endless/insert-key) </pre> </div> </div> @@ -2036,15 +2047,15 @@ I'm giving ERC a chance. First of all, I'm setting up basic stuff. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">erc</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">erc</span> <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>erc-track-mode t<span class="org-rainbow-delimiters-depth-2">)</span> + (erc-track-mode t) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-hide-list '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"PART"</span><span class="org-rainbow-delimiters-depth-3">)</span> - erc-prompt <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-4">()</span> <span class="org-rainbow-delimiters-depth-4">(</span>concat <span class="org-rainbow-delimiters-depth-5">(</span>buffer-name<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-string">">"</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> - erc-track-exclude-types '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"JOIN"</span> <span class="org-string">"NICK"</span> <span class="org-string">"PART"</span> <span class="org-string">"QUIT"</span> <span class="org-string">"MODE"</span><span class="org-rainbow-delimiters-depth-3">)</span> - erc-server-coding-system '<span class="org-rainbow-delimiters-depth-3">(</span>utf-8 . utf-8<span class="org-rainbow-delimiters-depth-3">)</span> + (<span class="org-keyword">setq</span> erc-hide-list '(<span class="org-string">"PART"</span>) + erc-prompt (<span class="org-keyword">lambda</span> () (concat (buffer-name) <span class="org-string">">"</span>)) + erc-track-exclude-types '(<span class="org-string">"JOIN"</span> <span class="org-string">"NICK"</span> <span class="org-string">"PART"</span> <span class="org-string">"QUIT"</span> <span class="org-string">"MODE"</span>) + erc-server-coding-system '(utf-8 . utf-8) erc-kill-buffer-on-part t erc-kill-queries-on-quit t erc-kill-server-buffer-on-quit t @@ -2060,16 +2071,16 @@ I'm giving ERC a chance. First of all, I'm setting up basic stuff. erc-hide-timestamps nil erc-whowas-on-nosuchnick t erc-public-away-p nil - erc-echo-notice-always-hook '<span class="org-rainbow-delimiters-depth-3">(</span>erc-echo-notice-in-minibuffer<span class="org-rainbow-delimiters-depth-3">)</span> + erc-echo-notice-always-hook '(erc-echo-notice-in-minibuffer) erc-auto-set-away nil erc-autoaway-message <span class="org-string">"%i seconds out..."</span> erc-away-nickname <span class="org-string">"msabate"</span> erc-enable-logging t - erc-query-on-unjoined-chan-privmsg t<span class="org-rainbow-delimiters-depth-2">)</span> + erc-query-on-unjoined-chan-privmsg t) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-autojoin-channels-alist - '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"irc.freenode.net"</span> <span class="org-string">"#gnu"</span> <span class="org-string">"#emacs"</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"irc.suse.de"</span> <span class="org-string">"#suse"</span> <span class="org-string">"#docker"</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">setq</span> erc-autojoin-channels-alist + '((<span class="org-string">"irc.freenode.net"</span> <span class="org-string">"#gnu"</span> <span class="org-string">"#emacs"</span>) + (<span class="org-string">"irc.suse.de"</span> <span class="org-string">"#suse"</span> <span class="org-string">"#docker"</span>))) </pre> </div> @@ -2079,11 +2090,11 @@ Use the <code>erc-hl-nicks</code> package, so highlight support for nicknames is <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">erc-hl-nicks</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">erc-hl-nicks</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:init</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'erc - <span class="org-rainbow-delimiters-depth-3">(</span>add-to-list 'erc-modules 'hl-nicks<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'erc + (add-to-list 'erc-modules 'hl-nicks))) </pre> </div> @@ -2095,13 +2106,13 @@ GNU Emacs 24.3. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'erc - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-notifications-icon - <span class="org-rainbow-delimiters-depth-3">(</span>concat +<pre class="src src-elisp">(<span class="org-keyword">with-eval-after-load</span> 'erc + (<span class="org-keyword">setq</span> erc-notifications-icon + (concat <span class="org-string">"/usr/share/emacs/"</span> - <span class="org-rainbow-delimiters-depth-4">(</span>format <span class="org-string">"%s.%s"</span> emacs-major-version emacs-minor-version<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-string">"/etc/images/icons/hicolor/24x24/apps/emacs.png"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'erc-modules 'notifications<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (format <span class="org-string">"%s.%s"</span> emacs-major-version emacs-minor-version) + <span class="org-string">"/etc/images/icons/hicolor/24x24/apps/emacs.png"</span>)) + (add-to-list 'erc-modules 'notifications)) </pre> </div> @@ -2111,17 +2122,17 @@ Some extra cookies: allow ERC to display images and Youtube thumbnails. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">erc-yt</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">erc-yt</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:init</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'erc - <span class="org-rainbow-delimiters-depth-3">(</span>add-to-list 'erc-modules 'youtube<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'erc + (add-to-list 'erc-modules 'youtube))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">erc-image</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">erc-image</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:init</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'erc - <span class="org-rainbow-delimiters-depth-3">(</span>add-to-list 'erc-modules 'image<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">with-eval-after-load</span> 'erc + (add-to-list 'erc-modules 'image))) </pre> </div> @@ -2131,8 +2142,8 @@ At this point, we can safely update all the loaded ERC modules. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'erc-connect-pre-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">(</span>x<span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-rainbow-delimiters-depth-3">(</span>erc-update-modules<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(add-hook 'erc-connect-pre-hook + (<span class="org-keyword">lambda</span> (x) (erc-update-modules))) </pre> </div> @@ -2143,8 +2154,8 @@ According to the <a href="https://www.emacswiki.org/emacs/ErcFilling">wiki</a>, <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'erc-mode-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> <span class="org-rainbow-delimiters-depth-3">(</span>auto-fill-mode 0<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(add-hook 'erc-mode-hook + (<span class="org-keyword">lambda</span> () (auto-fill-mode 0))) </pre> </div> @@ -2154,15 +2165,15 @@ And now define a function to connect to both IRC servers. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc</span> () <span class="org-doc">"Join pre-speciifed servers and channels."</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">interactive</span>) - <span class="org-rainbow-delimiters-depth-2">(</span>erc <span class="org-builtin">:server</span> <span class="org-string">"irc.freenode.net"</span> <span class="org-builtin">:port</span> 6667 <span class="org-builtin">:nick</span> <span class="org-string">"mssola"</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>erc-tls <span class="org-builtin">:server</span> <span class="org-string">"irc.suse.de"</span> <span class="org-builtin">:port</span> 6697 <span class="org-builtin">:nick</span> <span class="org-string">"mssola"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (erc <span class="org-builtin">:server</span> <span class="org-string">"irc.freenode.net"</span> <span class="org-builtin">:port</span> 6667 <span class="org-builtin">:nick</span> <span class="org-string">"mssola"</span>) + (erc-tls <span class="org-builtin">:server</span> <span class="org-string">"irc.suse.de"</span> <span class="org-builtin">:port</span> 6697 <span class="org-builtin">:nick</span> <span class="org-string">"mssola"</span>)) -<span class="org-rainbow-delimiters-depth-1">(</span>global-set-key <span class="org-rainbow-delimiters-depth-2">(</span>kbd <span class="org-string">"C-c i"</span><span class="org-rainbow-delimiters-depth-2">)</span> 'mssola-erc<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-rainbow-delimiters-unmatched">)</span> +(global-set-key (kbd <span class="org-string">"C-c i"</span>) 'mssola-erc)) </pre> </div> </div> @@ -2178,12 +2189,12 @@ First of all, define a function that identifies some warning keywords <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">warnings-mode-hook</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">warnings-mode-hook</span> () <span class="org-doc">"Hook for enabling the warning face on strings with a warning prefix."</span> - <span class="org-rainbow-delimiters-depth-2">(</span>font-lock-add-keywords nil - '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string"><span class="org-warning">XXX</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string"><span class="org-warning">FIXME</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string"><span class="org-warning">TODO</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string"><span class="org-warning">HACK</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string"><span class="org-warning">NOTE</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> - 1 font-lock-warning-face prepend<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (font-lock-add-keywords nil + '((<span class="org-string">"</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">XXX</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">FIXME</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">TODO</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">HACK</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">NOTE</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">"</span> + 1 font-lock-warning-face prepend)))) </pre> </div> @@ -2194,10 +2205,10 @@ context too. In this case, I want spell check and <code>wc-mode</code> activated <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'text-mode-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> - <span class="org-rainbow-delimiters-depth-3">(</span>flyspell-mode 1<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>wc-mode 1<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(add-hook 'text-mode-hook + (<span class="org-keyword">lambda</span> () + (flyspell-mode 1) + (wc-mode 1))) </pre> </div> @@ -2209,13 +2220,13 @@ confusing. Moreover, I'm also enabling <code>eldoc-mode</code> and the aforement <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'emacs-lisp-mode-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> - <span class="org-rainbow-delimiters-depth-3">(</span>eldoc-mode 1<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>warnings-mode-hook<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>rainbow-delimiters-mode 1<span class="org-rainbow-delimiters-depth-3">)</span> +<pre class="src src-elisp">(add-hook 'emacs-lisp-mode-hook + (<span class="org-keyword">lambda</span> () + (eldoc-mode 1) + (warnings-mode-hook) + (rainbow-delimiters-mode 1) <span class="org-comment-delimiter">; </span><span class="org-comment">https://github.com/jhenahan/emacs.d/blob/master/emacs-init.org#emacs-lisp</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">setq</span> mode-name <span class="org-string">"ξ"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">setq</span> mode-name <span class="org-string">"ξ"</span>))) </pre> </div> @@ -2227,16 +2238,16 @@ comments and the usage of tabs instead of spaces. <div class="org-src-container"> <pre class="src src-elisp"><span class="org-comment-delimiter">; </span><span class="org-comment">Note that C-common includes languages with a similar syntax of C.</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'c-mode-common-hook 'warnings-mode-hook<span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'c-mode-common-hook <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span><span class="org-rainbow-delimiters-depth-3">()</span> <span class="org-rainbow-delimiters-depth-3">(</span>flyspell-prog-mode<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'c-mode-common-hook 'warnings-mode-hook) +(add-hook 'c-mode-common-hook (<span class="org-keyword">lambda</span>() (flyspell-prog-mode))) <span class="org-comment-delimiter">;; </span><span class="org-comment">C</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'c-mode-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">setq</span> indent-tabs-mode t<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'c-mode-hook + (<span class="org-keyword">lambda</span> () (<span class="org-keyword">setq</span> indent-tabs-mode t))) <span class="org-comment-delimiter">;; </span><span class="org-comment">C++</span> -<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'c++-mode-hook - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">setq</span> indent-tabs-mode t<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +(add-hook 'c++-mode-hook + (<span class="org-keyword">lambda</span> () (<span class="org-keyword">setq</span> indent-tabs-mode t))) </pre> </div> @@ -2246,7 +2257,7 @@ Include warning keywords in Ruby. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'ruby-mode-hook 'warnings-mode-hook<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(add-hook 'ruby-mode-hook 'warnings-mode-hook) </pre> </div> @@ -2257,46 +2268,46 @@ And now my Go configuration. This includes stuff like the usage of <code>goimpor <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-go-mode</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp">(<span class="org-keyword">defun</span> <span class="org-function-name">mssola-go-mode</span> () <span class="org-doc">"My configuration for Go mode."</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Use goimports instead of go-fmt</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> gofmt-command <span class="org-string">"goimports"</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">setq</span> gofmt-command <span class="org-string">"goimports"</span>) <span class="org-comment-delimiter">; </span><span class="org-comment">Call Gofmt before saving</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'before-save-hook 'gofmt-before-save<span class="org-rainbow-delimiters-depth-2">)</span> + (add-hook 'before-save-hook 'gofmt-before-save) <span class="org-comment-delimiter">; </span><span class="org-comment">Integration flycheck with Go</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'load-path - <span class="org-rainbow-delimiters-depth-3">(</span>concat <span class="org-rainbow-delimiters-depth-4">(</span>getenv <span class="org-string">"GOPATH"</span><span class="org-rainbow-delimiters-depth-4">)</span> <span class="org-string">"/src/github.com/dougm/goflymake"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">require</span> '<span class="org-constant">go-flycheck</span><span class="org-rainbow-delimiters-depth-2">)</span> + (add-to-list 'load-path + (concat (getenv <span class="org-string">"GOPATH"</span>) <span class="org-string">"/src/github.com/dougm/goflymake"</span>)) + (<span class="org-keyword">require</span> '<span class="org-constant">go-flycheck</span>) - <span class="org-rainbow-delimiters-depth-2">(</span>evil-leader/set-key - <span class="org-string">"."</span> 'godef-jump-other-window<span class="org-rainbow-delimiters-depth-2">)</span> + (evil-leader/set-key + <span class="org-string">"."</span> 'godef-jump-other-window) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> indent-tabs-mode t<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>flyspell-prog-mode<span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">setq</span> indent-tabs-mode t) + (flyspell-prog-mode) <span class="org-comment-delimiter">; </span><span class="org-comment">eldoc support</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">use-package</span> <span class="org-constant">go-eldoc</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">go-eldoc</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">require</span> '<span class="org-constant">go-eldoc</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">require</span> '<span class="org-constant">go-eldoc</span>)) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">use-package</span> <span class="org-constant">go-add-tags</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">go-add-tags</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-3">(</span>evil-leader/set-key <span class="org-string">"t"</span> 'go-add-tags<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (evil-leader/set-key <span class="org-string">"t"</span> 'go-add-tags))) <span class="org-comment-delimiter">;; </span><span class="org-comment">Go</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">go-mode</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">go-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:pin</span> melpa-stable <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'go-mode-hook 'warnings-mode-hook<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'go-mode-hook 'go-eldoc-setup<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'go-mode-hook 'mssola-go-mode<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (add-hook 'go-mode-hook 'warnings-mode-hook) + (add-hook 'go-mode-hook 'go-eldoc-setup) + (add-hook 'go-mode-hook 'mssola-go-mode)) </pre> </div> @@ -2308,13 +2319,13 @@ usings tabs for indentation (C, C++ and Go). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">smart-tabs-mode</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">smart-tabs-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">smart-tabs-add-language-support</span> golang go-mode-hook - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span>c-indent-line . c-basic-offset<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span>c-indent-region . c-basic-offset<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>smart-tabs-insinuate 'c 'c++ 'golang<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">smart-tabs-add-language-support</span> golang go-mode-hook + ((c-indent-line . c-basic-offset) + (c-indent-region . c-basic-offset))) + (smart-tabs-insinuate 'c 'c++ 'golang)) </pre> </div> @@ -2325,28 +2336,28 @@ Inferior markup languages. <div class="org-src-container"> <pre class="src src-elisp"><span class="org-comment-delimiter">;; </span><span class="org-comment">Markdown mode with preview mode in the browser.</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">markdown-mode</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">markdown-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> <span class="org-comment-delimiter">; </span><span class="org-comment">This is the one that I got from openSUSE.</span> - <span class="org-rainbow-delimiters-depth-2">(</span>custom-set-variables - '<span class="org-rainbow-delimiters-depth-3">(</span>markdown-command <span class="org-string">"/usr/bin/markdown-calibre"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (custom-set-variables + '(markdown-command <span class="org-string">"/usr/bin/markdown-calibre"</span>)) <span class="org-comment-delimiter">; </span><span class="org-comment">Preview mode does its things through websockets, so it's a requirement.</span> <span class="org-comment-delimiter">; </span><span class="org-comment">After that, we can safely require it.</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">use-package</span> <span class="org-constant">websocket</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">websocket</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">use-package</span> <span class="org-constant">markdown-preview-mode</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">markdown-preview-mode</span> + <span class="org-builtin">:ensure</span> t))) <span class="org-comment-delimiter">; </span><span class="org-comment">YAML</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">yaml-mode</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">yaml-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'yaml-mode-hook 'warnings-mode-hook<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (add-hook 'yaml-mode-hook 'warnings-mode-hook)) </pre> </div> @@ -2356,32 +2367,32 @@ Web-related stuff. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">slim-mode</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">slim-mode</span> + <span class="org-builtin">:ensure</span> t) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">scss-mode</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">scss-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> scss-compile-at-save nil<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'yaml-mode-hook 'warnings-mode-hook<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (<span class="org-keyword">setq</span> scss-compile-at-save nil) + (add-hook 'yaml-mode-hook 'warnings-mode-hook)) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">php-mode</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">php-mode</span> + <span class="org-builtin">:ensure</span> t) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">web-mode</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">web-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'auto-mode-alist '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"\\.erb\\'"</span> . web-mode<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'auto-mode-alist '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"\\.jinja\\'"</span> . web-mode<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'auto-mode-alist '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"\\.html?\\'"</span> . web-mode<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (add-to-list 'auto-mode-alist '(<span class="org-string">"\\.erb\\'"</span> . web-mode)) + (add-to-list 'auto-mode-alist '(<span class="org-string">"\\.jinja\\'"</span> . web-mode)) + (add-to-list 'auto-mode-alist '(<span class="org-string">"\\.html?\\'"</span> . web-mode)) - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'web-mode-hook - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-4">()</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">setq</span> web-mode-markup-indent-offset 2<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">setq</span> web-mode-css-indent-offset 2<span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-keyword">setq</span> web-mode-code-indent-offset 2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (add-hook 'web-mode-hook + (<span class="org-keyword">lambda</span> () + (<span class="org-keyword">setq</span> web-mode-markup-indent-offset 2) + (<span class="org-keyword">setq</span> web-mode-css-indent-offset 2) + (<span class="org-keyword">setq</span> web-mode-code-indent-offset 2)))) </pre> </div> @@ -2391,22 +2402,22 @@ CMake for y'all. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">cmake-mode</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">cmake-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> auto-mode-alist - <span class="org-rainbow-delimiters-depth-3">(</span>append - '<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span><span class="org-string">"CMakeLists\\.txt\\'"</span> . cmake-mode<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - '<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span><span class="org-string">"\\.cmake\\'"</span> . cmake-mode<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> - auto-mode-alist<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + (<span class="org-keyword">setq</span> auto-mode-alist + (append + '((<span class="org-string">"CMakeLists\\.txt\\'"</span> . cmake-mode)) + '((<span class="org-string">"\\.cmake\\'"</span> . cmake-mode)) + auto-mode-alist)) - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">use-package</span> <span class="org-constant">cmake-font-lock</span> + (<span class="org-keyword">use-package</span> <span class="org-constant">cmake-font-lock</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-3">(</span>add-hook 'cmake-mode-hook 'cmake-font-lock-activate<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>add-hook 'yaml-mode-hook 'warnings-mode-hook<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (add-hook 'cmake-mode-hook 'cmake-font-lock-activate) + (add-hook 'yaml-mode-hook 'warnings-mode-hook))) </pre> </div> @@ -2417,20 +2428,20 @@ now because it's buggy, but I still have hope. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">dockerfile-mode</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">dockerfile-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'auto-mode-alist '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"Dockerfile\\'"</span> . dockerfile-mode<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (add-to-list 'auto-mode-alist '(<span class="org-string">"Dockerfile\\'"</span> . dockerfile-mode))) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">terraform-mode</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">terraform-mode</span> <span class="org-builtin">:ensure</span> t <span class="org-builtin">:config</span> - <span class="org-rainbow-delimiters-depth-2">(</span>terraform-format-on-save-mode<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + (terraform-format-on-save-mode)) -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">hcl-mode</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +(<span class="org-keyword">use-package</span> <span class="org-constant">hcl-mode</span> + <span class="org-builtin">:ensure</span> t) <span class="org-comment-delimiter">;</span><span class="org-comment">(use-package salt-mode</span> <span class="org-comment-delimiter">;</span><span class="org-comment">:ensure t)</span> @@ -2446,11 +2457,11 @@ criteria really). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">dolist</span> <span class="org-rainbow-delimiters-depth-2">(</span>lang-hook '<span class="org-rainbow-delimiters-depth-3">(</span>ruby-mode-hook +<pre class="src src-elisp">(<span class="org-keyword">dolist</span> (lang-hook '(ruby-mode-hook php-mode-hook perl-mode-hook - emacs-lisp-mode-hook<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook lang-hook 'soria-purple-identifiers<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + emacs-lisp-mode-hook)) + (add-hook lang-hook 'soria-purple-identifiers)) </pre> </div> </div> @@ -2466,16 +2477,16 @@ takes care of visualizing man pages. Let's properly setup Evil mode for this: <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> <span class="org-string">"evil"</span> - <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'woman-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">evil-define-key</span> 'normal woman-mode-map +<pre class="src src-elisp">(<span class="org-keyword">with-eval-after-load</span> <span class="org-string">"evil"</span> + (evil-set-initial-state 'woman-mode 'normal) + (<span class="org-keyword">evil-define-key</span> 'normal woman-mode-map <span class="org-string">"J"</span> 'Man-next-section <span class="org-string">"K"</span> 'Man-previous-section <span class="org-string">"\C-h"</span> 'evil-window-left <span class="org-string">"\C-l"</span> 'evil-window-right <span class="org-string">"\C-j"</span> 'evil-window-down <span class="org-string">"\C-k"</span> 'evil-window-up - <span class="org-string">"\C-u"</span> 'evil-scroll-up<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-string">"\C-u"</span> 'evil-scroll-up)) </pre> </div> @@ -2485,7 +2496,7 @@ Finally, I want man pages to fill all the frame: <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> woman-fill-frame t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp">(<span class="org-keyword">setq</span> woman-fill-frame t) </pre> </div> </div> @@ -2502,11 +2513,11 @@ too many things into my leader and these shortcuts look sensible to me). <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">crux</span> +<pre class="src src-elisp">(<span class="org-keyword">use-package</span> <span class="org-constant">crux</span> <span class="org-builtin">:ensure</span> t - <span class="org-builtin">:bind</span> <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"C-c d"</span> . crux-delete-file-and-buffer<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"C-c r"</span> . crux-rename-file-and-buffer<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"C-c o"</span> . crux-open-with<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-builtin">:bind</span> ((<span class="org-string">"C-c d"</span> . crux-delete-file-and-buffer) + (<span class="org-string">"C-c r"</span> . crux-rename-file-and-buffer) + (<span class="org-string">"C-c o"</span> . crux-open-with))) </pre> </div> </div> @@ -2564,7 +2575,7 @@ along with this program. If not, see <a href="http://www.gnu.org/licenses/">< </div> <div id="postamble" class="status"> <p class="author">Author: Miquel Sabaté Solà</p> -<p class="date">Created: 2017-02-02 Thu 15:56</p> +<p class="date">Created: 2017-02-03 Fri 10:29</p> <p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.1.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p> <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> </div> diff --git a/emacs/init.org b/emacs/init.org index 8a9feb9..4e7fc22 100644 --- a/emacs/init.org +++ b/emacs/init.org @@ -488,7 +488,7 @@ buffers. "Returns a list with the ERC buffers." (mapcar 'buffer-name (erc-buffer-list))) -(setq mssola-helm-source-erc-channel-list +(defconst mssola-helm-source-erc-channel-list '((name . "ERC Channels") (candidates . mssola-erc-helm-buffer-list) (action . switch-to-buffer))) @@ -640,28 +640,27 @@ expands the region of selection with a single key chord. Even if evil covers most of my uses, it's convenient to have this tool anyways. #+BEGIN_SRC elisp - (use-package expand-region - :ensure t - :config +(use-package expand-region + :ensure t + :config - ; Set C-e as the expand command (mnemonic: expand). This command will - ; supercede the evil binding for "move one line", which I never use anyways. - (global-set-key (kbd "\C-e") 'er/expand-region) - (with-eval-after-load 'evil - (define-key evil-normal-state-map (kbd "\C-e") 'er/expand-region) - (define-key evil-visual-state-map (kbd "\C-e") 'er/expand-region))) + ; Set C-e as the expand command (mnemonic: expand). This command will + ; supercede the evil binding for "move one line", which I never use anyways. + (global-set-key (kbd "\C-e") 'er/expand-region) + (with-eval-after-load 'evil + (define-key evil-normal-state-map (kbd "\C-e") 'er/expand-region) + (define-key evil-visual-state-map (kbd "\C-e") 'er/expand-region))) - (defun er/add-text-mode-expansions () - "This way we can also expand the region into paragraphs & pages in text mode. - Directly taken from: https://github.com/magnars/expand-region.el." +(defun er/add-text-mode-expansions () + "This way we can also expand the region into paragraphs & pages in text mode. +Directly taken from: https://github.com/magnars/expand-region.el." - (make-variable-buffer-local 'er/try-expand-list) - (setq er/try-expand-list (append - er/try-expand-list - '(mark-paragraph - mark-page)))) + (set (make-local-variable 'er/try-expand-list) (append + er/try-expand-list + '(mark-paragraph + mark-page)))) - (add-hook 'text-mode-hook 'er/add-text-mode-expansions) +(add-hook 'text-mode-hook 'er/add-text-mode-expansions) #+END_SRC Last but not least, =YASnippet=. This package allows people to define shortcuts @@ -1247,6 +1246,13 @@ And finally define a proper shortcut. * org +[[http://orgmode.org/][org mode]] is an incredible tool that keeps me organized: TODOs, notes, agenda, +etc. Moreover, it's built in GNU Emacs: + +#+BEGIN_SRC elisp +(require 'org) +#+END_SRC + ** General settings First of all, let me define some helper functions. |
