diff options
| -rw-r--r-- | emacs/custom.el | 2 | ||||
| -rw-r--r-- | emacs/init.html | 1898 | ||||
| -rw-r--r-- | emacs/init.org | 63 | ||||
| -rw-r--r-- | emacs/org.css | 49 |
4 files changed, 1071 insertions, 941 deletions
diff --git a/emacs/custom.el b/emacs/custom.el index 1905a1d..7c0e1ce 100644 --- a/emacs/custom.el +++ b/emacs/custom.el @@ -14,7 +14,7 @@ '(markdown-command "/usr/bin/markdown-calibre") '(package-selected-packages (quote - (cmake-mode websocket markdown-mode go-mode magit evil-leader evil helm projectile writeroom-mode org-eldoc evil-commentary circe yasnippet yaml-mode which-key web-mode wc-mode use-package terraform-mode smart-tabs-mode slim-mode scss-mode rainbow-delimiters php-mode org-evil olivetti mu4e-alert mmm-jinja2 markdown-preview-mode helm-projectile helm-ag go-eldoc go-add-tags flycheck expand-region evil-surround evil-org evil-numbers evil-mu4e evil-magit evil-args dockerfile-mode disable-mouse default-text-scale crux cmake-font-lock ag)))) + (htmlize cmake-mode websocket markdown-mode go-mode magit evil-leader evil helm projectile writeroom-mode org-eldoc evil-commentary circe yasnippet yaml-mode which-key web-mode wc-mode use-package terraform-mode smart-tabs-mode slim-mode scss-mode rainbow-delimiters php-mode org-evil olivetti mu4e-alert mmm-jinja2 markdown-preview-mode helm-projectile helm-ag go-eldoc go-add-tags flycheck expand-region evil-surround evil-org evil-numbers evil-mu4e evil-magit evil-args dockerfile-mode disable-mouse default-text-scale crux cmake-font-lock ag)))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/emacs/init.html b/emacs/init.html index 302ba4d..7bd1d77 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-01-18 Wed 15:25 --> +<!-- 2017-01-18 Wed 18:42 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="generator" content="Org-mode" /> <meta name="author" content="Miquel Sabaté Solà" /> @@ -89,6 +89,7 @@ /*]]>*/--> </style> <link rel="stylesheet" href="http://jo.mssola.com/static/style.css" type="text/css" /> +<link rel="stylesheet" href="http://jo.mssola.com/static/org.css" type="text/css" /> <script type="text/javascript"> /* @licstart The following is the entire license notice for the @@ -143,49 +144,53 @@ for the JavaScript code in this tag. <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> -<li><a href="#sec-1">1. Preface</a></li> -<li><a href="#sec-2">2. Introduction</a></li> -<li><a href="#sec-3">3. General</a> +<li><a href="#sec-1">Preface</a></li> +<li><a href="#sec-2">Introduction</a></li> +<li><a href="#sec-3">General</a> <ul> -<li><a href="#sec-3-1">3.1. GUI</a></li> -<li><a href="#sec-3-2">3.2. Basic editing configuration</a></li> -<li><a href="#sec-3-3">3.3. Font and theme</a></li> -<li><a href="#sec-3-4">3.4. General global key bindings</a></li> -<li><a href="#sec-3-5">3.5. Others</a></li> +<li><a href="#sec-3-1">GUI</a></li> +<li><a href="#sec-3-2">Basic editing configuration</a></li> +<li><a href="#sec-3-3">Font and theme</a></li> +<li><a href="#sec-3-4">General global key bindings</a></li> +<li><a href="#sec-3-5">Others</a></li> </ul> </li> -<li><a href="#sec-4">4. Calendar</a></li> -<li><a href="#sec-5">5. General purpose defuns</a></li> -<li><a href="#sec-6">6. Lisp packages</a> +<li><a href="#sec-4">Calendar</a></li> +<li><a href="#sec-5">General purpose defuns</a></li> +<li><a href="#sec-6">Lisp packages</a> <ul> -<li><a href="#sec-6-1">6.1. Custom packages</a></li> -<li><a href="#sec-6-2">6.2. use-package</a></li> +<li><a href="#sec-6-1">Custom packages</a></li> +<li><a href="#sec-6-2">use-package</a></li> </ul> </li> -<li><a href="#sec-7">7. Project</a></li> -<li><a href="#sec-8">8. Edit</a></li> -<li><a href="#sec-9">9. Dired</a></li> -<li><a href="#sec-10">10. Evil</a></li> -<li><a href="#sec-11">11. Magit</a></li> -<li><a href="#sec-12">12. mu4e</a></li> -<li><a href="#sec-13">13. org</a> +<li><a href="#sec-7">Project</a></li> +<li><a href="#sec-8">Edit</a></li> +<li><a href="#sec-9">Dired</a></li> +<li><a href="#sec-10">Evil</a></li> +<li><a href="#sec-11">Magit</a></li> +<li><a href="#sec-12">mu4e</a></li> +<li><a href="#sec-13">org</a> <ul> -<li><a href="#sec-13-1">13.1. <span class="todo TODO">TODO</span> shortcut for making an org link, and transforming a link into a proper org link</a></li> -<li><a href="#sec-13-2">13.2. <span class="todo TODO">TODO</span> make it work with evil</a></li> -<li><a href="#sec-13-3">13.3. <span class="todo TODO">TODO</span> Proper keybindings for quick access.</a></li> -<li><a href="#sec-13-4">13.4. <span class="todo TODO">TODO</span> shortcuts for stuff like: create something urgent for today</a></li> +<li><a href="#sec-13-1">General settings</a></li> +<li><a href="#sec-13-2">Publishing</a></li> +<li><a href="#sec-13-3">Agenda</a></li> +<li><a href="#sec-13-4">Other</a></li> +<li><a href="#sec-13-5"><span class="todo TODO">TODO</span> shortcut for making an org link, and transforming a link into a proper org link</a></li> +<li><a href="#sec-13-6"><span class="todo TODO">TODO</span> make it work with evil</a></li> +<li><a href="#sec-13-7"><span class="todo TODO">TODO</span> Proper keybindings for quick access.</a></li> +<li><a href="#sec-13-8"><span class="todo TODO">TODO</span> shortcuts for stuff like: create something urgent for today</a></li> </ul> </li> -<li><a href="#sec-14">14. Languages</a></li> -<li><a href="#sec-15">15. Misc</a></li> -<li><a href="#sec-16">16. Credits</a></li> -<li><a href="#sec-17">17. License</a></li> +<li><a href="#sec-14">Languages</a></li> +<li><a href="#sec-15">Misc</a></li> +<li><a href="#sec-16">Credits</a></li> +<li><a href="#sec-17">License</a></li> </ul> </div> </div> <div id="outline-container-sec-1" class="outline-2"> -<h2 id="sec-1"><span class="section-number-2">1</span> Preface</h2> +<h2 id="sec-1">Preface</h2> <div class="outline-text-2" id="text-1"> <p> This is my attempt of getting my configuration organized with literate @@ -198,23 +203,23 @@ file <b>always</b>. The initial contents of the <code>init.el</code> are: <div class="org-src-container"> -<pre class="src src-elisp">;; We can't tangle without org! -(require 'org) +<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> -;; Follow symlinks -(setq vc-follow-symlinks t) +<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> -;; Open the configuration -(find-file (concat user-emacs-directory "init.org")) +<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> -;; Tangle it -(org-babel-tangle) +<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> -;; Load it -(load-file (concat user-emacs-directory "init.el")) +<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> -;; Finally byte-compile it -(byte-compile-file (concat user-emacs-directory "init.el")) +<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> </pre> </div> @@ -237,27 +242,27 @@ on each change, the following function is provided: <div class="org-src-container"> -<pre class="src src-elisp">(defun tangle-init () - "If the current buffer is 'init.org' the code-blocks are - tangled, and the tangled file is compiled. Morever, an init.html is generated." +<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> + <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> - (when (or (equal (buffer-file-name) - (expand-file-name (concat user-emacs-directory "init.org"))) - (string-suffix-p "dotfiles/emacs/init.org" (buffer-file-name))) + <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> - ;; Avoid running hooks when tangling - (let ((prog-mode-hook nil)) - (org-babel-tangle) - (org-html-export-to-html) - (byte-compile-file (concat user-emacs-directory "init.el"))))) + <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> -(add-hook 'after-save-hook 'tangle-init) +<span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'after-save-hook 'tangle-init<span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> </div> </div> <div id="outline-container-sec-2" class="outline-2"> -<h2 id="sec-2"><span class="section-number-2">2</span> Introduction</h2> +<h2 id="sec-2">Introduction</h2> <div class="outline-text-2" id="text-2"> <p> I'm using GNU Emacs 25, but everything should be working in GNU Emacs 24. There @@ -267,8 +272,8 @@ individually handled. <div class="org-src-container"> -<pre class="src src-elisp">(unless (>= emacs-major-version 24) - (error "Don't be a cheap bastard and upgrade to at least GNU Emacs 24")) +<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> </div> @@ -279,11 +284,11 @@ Temporarily reduce garbage collection so startup time is lower. Idea taken from <div class="org-src-container"> -<pre class="src src-elisp">(defconst mssola-initial-gc-cons-threshold gc-cons-threshold - "Initial value of `gc-cons-threshold' at start-up time.") -(setq gc-cons-threshold (* 1024 1024 1024)) -(add-hook 'after-init-hook - (lambda () (setq gc-cons-threshold mssola-initial-gc-cons-threshold))) +<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> </div> @@ -293,18 +298,18 @@ User name and email. <div class="org-src-container"> -<pre class="src src-elisp">(setq user-full-name "Miquel Sabaté Solà" - user-mail-address "mikisabate@gmail.com") +<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> </div> </div> </div> <div id="outline-container-sec-3" class="outline-2"> -<h2 id="sec-3"><span class="section-number-2">3</span> General</h2> +<h2 id="sec-3">General</h2> <div class="outline-text-2" id="text-3"> </div><div id="outline-container-sec-3-1" class="outline-3"> -<h3 id="sec-3-1"><span class="section-number-3">3.1</span> GUI</h3> +<h3 id="sec-3-1">GUI</h3> <div class="outline-text-3" id="text-3-1"> <p> I like a minimalistic GUI. Because of this, almost all GUI elements have been @@ -318,12 +323,12 @@ name of the buffer is displayed (e.g. "mssola: <b>scratch</b>"). <div class="org-src-container"> -<pre class="src src-elisp">(setq frame-title-format - '((:eval - (concat (user-real-login-name) ": " - (if (buffer-file-name) - (abbreviate-file-name (buffer-file-name)) - "%b"))))) +<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> </div> @@ -334,28 +339,28 @@ modes. <div class="org-src-container"> -<pre class="src src-elisp">(menu-bar-mode -1) -(when (fboundp 'set-scroll-bar-mode) - (set-scroll-bar-mode nil)) -(when (fboundp 'tool-bar-mode) - (tool-bar-mode -1)) -(when (fboundp 'tooltip-mode) - (tooltip-mode 0)) +<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> -(line-number-mode 1) -(column-number-mode 1) +<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> -;; Nice scrolling -(setq scroll-margin 0 +<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 scroll-conservatively 100000 - scroll-preserve-screen-position 1) + scroll-preserve-screen-position 1<span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> </div> </div> <div id="outline-container-sec-3-2" class="outline-3"> -<h3 id="sec-3-2"><span class="section-number-3">3.2</span> Basic editing configuration</h3> +<h3 id="sec-3-2">Basic editing configuration</h3> <div class="outline-text-3" id="text-3-2"> <p> Use UTF-8 <b>always</b>. @@ -363,18 +368,18 @@ Use UTF-8 <b>always</b>. <div class="org-src-container"> -<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 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> </div> </div> </div> <div id="outline-container-sec-3-3" class="outline-3"> -<h3 id="sec-3-3"><span class="section-number-3">3.3</span> Font and theme</h3> +<h3 id="sec-3-3">Font and theme</h3> <div class="outline-text-3" id="text-3-3"> <p> I'm using "Droid Sans Mono" simply because I've grown used to it. @@ -382,17 +387,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">(set-frame-font "Droid Sans Mono Dotted for Powerline-10") -(add-to-list 'default-frame-alist '(font . "Droid Sans Mono Dotted for Powerline-10")) +<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> -; Emacs in daemon mode does not like `set-face-attribute` because this is only -; applied if there is a frame in place, which doesn't happen when starting the -; daemon. Thus, we should call that after the frame has been created (e.g. by -; emacsclient). -; See: https://lists.gnu.org/archive/html/help-gnu-emacs/2015-03/msg00016.html -(add-hook 'after-make-frame-functions-hook - (lambda () - (set-face-attribute 'default t :font "Droid Sans Mono Dotted for Powerline-10"))) +<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> </pre> </div> @@ -403,14 +408,14 @@ 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">(load-theme 'soria t) +<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> </div> </div> </div> <div id="outline-container-sec-3-4" class="outline-3"> -<h3 id="sec-3-4"><span class="section-number-3">3.4</span> General global key bindings</h3> +<h3 id="sec-3-4">General global key bindings</h3> <div class="outline-text-3" id="text-3-4"> <p> Use kill-this-buffer instead of kill-buffer. @@ -418,7 +423,7 @@ Use kill-this-buffer instead of kill-buffer. <div class="org-src-container"> -<pre class="src src-elisp">(global-set-key (kbd "C-x k") 'kill-this-buffer) +<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> </div> @@ -430,7 +435,7 @@ cannot be loaded due to some error. <div class="org-src-container"> -<pre class="src src-elisp">(global-unset-key (kbd "C-z")) +<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> </div> @@ -440,8 +445,8 @@ Disable all the Fn keys. <div class="org-src-container"> -<pre class="src src-elisp">(dotimes (i 12) - (global-unset-key (kbd (format "<f%d>" (+ i 1))))) +<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> </div> @@ -451,14 +456,14 @@ Disable overwrite-mode. <div class="org-src-container"> -<pre class="src src-elisp">(define-key global-map [(insert)] nil) +<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> </div> </div> </div> <div id="outline-container-sec-3-5" class="outline-3"> -<h3 id="sec-3-5"><span class="section-number-3">3.5</span> Others</h3> +<h3 id="sec-3-5">Others</h3> <div class="outline-text-3" id="text-3-5"> <p> Revert buffers automatically when underlying files are changed externally. @@ -466,7 +471,7 @@ Revert buffers automatically when underlying files are changed externally. <div class="org-src-container"> -<pre class="src src-elisp">(global-auto-revert-mode t) +<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> </div> @@ -476,7 +481,7 @@ Follow symlinks. <div class="org-src-container"> -<pre class="src src-elisp">(setq vc-follow-symlinks t) +<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> </div> @@ -486,7 +491,7 @@ Remove the initial message from the scratch buffer. <div class="org-src-container"> -<pre class="src src-elisp">(setq initial-scratch-message nil) +<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> </div> @@ -496,11 +501,11 @@ Never kill the scratch buffer, bury it instead. <div class="org-src-container"> -<pre class="src src-elisp">(defadvice kill-buffer (around kill-buffer-around-advice activate) - (let ((buffer-to-kill (ad-get-arg 0))) - (if (equal buffer-to-kill "*scratch*") - (bury-buffer) - ad-do-it))) +<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> </div> @@ -510,8 +515,8 @@ No backups <div class="org-src-container"> -<pre class="src src-elisp">(setq-default make-backup-files nil) -(setq-default auto-save-default nil) +<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> </div> @@ -521,7 +526,7 @@ No welcome screen <div class="org-src-container"> -<pre class="src src-elisp">(setq-default inhibit-startup-message t) +<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> </div> @@ -531,7 +536,7 @@ Enable y/n answers <div class="org-src-container"> -<pre class="src src-elisp">(fset 'yes-or-no-p 'y-or-n-p) +<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> </div> @@ -541,7 +546,7 @@ Let flyspell be performant. <div class="org-src-container"> -<pre class="src src-elisp">(defvar flyspell-issue-message-flag nil) +<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> </div> @@ -551,9 +556,9 @@ Save custom-variables somewhere else. <div class="org-src-container"> -<pre class="src src-elisp">(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) -(if (file-exists-p custom-file) - (load custom-file)) +<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> </div> </div> @@ -561,7 +566,7 @@ Save custom-variables somewhere else. </div> <div id="outline-container-sec-4" class="outline-2"> -<h2 id="sec-4"><span class="section-number-2">4</span> Calendar</h2> +<h2 id="sec-4">Calendar</h2> <div class="outline-text-2" id="text-4"> <p> We catalans start our weeks on Monday. @@ -569,7 +574,7 @@ We catalans start our weeks on Monday. <div class="org-src-container"> -<pre class="src src-elisp">(defvar calendar-week-start-day 1) +<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> </div> @@ -579,7 +584,7 @@ Global key binding. <div class="org-src-container"> -<pre class="src src-elisp">(global-set-key (kbd "C-c c") 'calendar) +<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> </div> @@ -589,29 +594,29 @@ Fix some stuff for evil mode. <div class="org-src-container"> -<pre class="src src-elisp">(with-eval-after-load "evil" - (evil-set-initial-state 'calendar-mode 'normal) - (evil-define-key 'normal calendar-mode-map - "j" 'calendar-forward-week - "k" 'calendar-backward-week - "b" 'calendar-backward-day - "h" 'calendar-backward-day - "l" 'calendar-forward-day - "w" 'calendar-forward-day - "q" 'calendar-exit - "\C-h" 'evil-window-left - "\C-l" 'evil-window-right - "\C-j" 'evil-window-down - "\C-k" 'evil-window-up - "\C-n" 'calendar-scroll-left-three-months - "\C-p" 'calendar-scroll-right-three-months)) +<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 + <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 + <span class="org-string">"h"</span> 'calendar-backward-day + <span class="org-string">"l"</span> 'calendar-forward-day + <span class="org-string">"w"</span> 'calendar-forward-day + <span class="org-string">"q"</span> 'calendar-exit + <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-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> </pre> </div> </div> </div> <div id="outline-container-sec-5" class="outline-2"> -<h2 id="sec-5"><span class="section-number-2">5</span> General purpose defuns</h2> +<h2 id="sec-5">General purpose defuns</h2> <div class="outline-text-2" id="text-5"> <p> I want to read the latest news. That's why I define a function that downloads @@ -620,15 +625,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">(defun mssola-view-emacs-latest-news () - "Allow users to fetch the latest Emacs' NEWS file." - (interactive) +<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> + <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> - (url-copy-file - "http://git.savannah.gnu.org/cgit/emacs.git/plain/etc/NEWS" - "/tmp/emacs-news" t) + <span class="org-rainbow-delimiters-depth-2">(</span>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> - (find-file-read-only "/tmp/emacs-news" 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> </pre> </div> @@ -638,24 +643,24 @@ Sometimes I want to debug my initialization time. <div class="org-src-container"> -<pre class="src src-elisp">(defun emacs-init-time () - "Redefine the `emacs-init-time' function so it is more detailed. -Idea taken from @purcell." +<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> + <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> - (interactive) - (let ((init-time - (float-time (time-subtract after-init-time before-init-time)))) - (message "%.3fs" init-time))) + <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> </pre> </div> </div> </div> <div id="outline-container-sec-6" class="outline-2"> -<h2 id="sec-6"><span class="section-number-2">6</span> Lisp packages</h2> +<h2 id="sec-6">Lisp packages</h2> <div class="outline-text-2" id="text-6"> </div><div id="outline-container-sec-6-1" class="outline-3"> -<h3 id="sec-6-1"><span class="section-number-3">6.1</span> Custom packages</h3> +<h3 id="sec-6-1">Custom packages</h3> <div class="outline-text-3" id="text-6-1"> <p> Compile the <code>g.el</code> script and bind it to <kbd>M-g</kbd>. @@ -663,15 +668,15 @@ 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">(byte-compile-file (concat user-emacs-directory "lisp/g.el") t) -(global-set-key (kbd "M-g") 'g) +<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> </div> </div> </div> <div id="outline-container-sec-6-2" class="outline-3"> -<h3 id="sec-6-2"><span class="section-number-3">6.2</span> use-package</h3> +<h3 id="sec-6-2">use-package</h3> <div class="outline-text-3" id="text-6-2"> <p> Initialize package. @@ -679,14 +684,14 @@ Initialize package. <div class="org-src-container"> -<pre class="src src-elisp">(require 'package) +<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> -(add-to-list 'package-archives - '("melpa" . "http://melpa.milkbox.net/packages/") t) -(add-to-list 'package-archives - '("melpa-stable" . "https://stable.melpa.org/packages/") t) +<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> -(package-initialize) +<span class="org-rainbow-delimiters-depth-1">(</span>package-initialize<span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> @@ -699,9 +704,9 @@ package-install, I decided on use-package because I feel more well-organized. <div class="org-src-container"> -<pre class="src src-elisp">(unless (package-installed-p 'use-package) - (package-refresh-contents) - (package-install 'use-package)) +<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> </div> </div> @@ -709,7 +714,7 @@ package-install, I decided on use-package because I feel more well-organized. </div> <div id="outline-container-sec-7" class="outline-2"> -<h2 id="sec-7"><span class="section-number-2">7</span> Project</h2> +<h2 id="sec-7">Project</h2> <div class="outline-text-2" id="text-7"> <p> First of all, load the silver searcher, which is a convenient and fast searcher. @@ -718,19 +723,19 @@ Ayo silver! <div class="org-src-container"> -<pre class="src src-elisp">(use-package ag - :ensure t - :config +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; Avoid some disagreements between ag and evil. - (with-eval-after-load 'evil - (add-hook 'ag-mode-hook - (lambda () - (define-key ag-mode-map (kbd "n") 'evil-search-next) - (define-key ag-mode-map (kbd "N") 'evil-search-previous) - (define-key ag-mode-map (kbd "gg") 'evil-goto-first-line)))) - (setq ag-reuse-buffers t) - (setq ag-reuse-window t)) + <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> </pre> </div> @@ -740,52 +745,52 @@ Then, for keeping up with my projects I use the Projectile + Helm combination. <div class="org-src-container"> -<pre class="src src-elisp">(use-package projectile - :ensure t - :config - (projectile-mode 1) - (setq projectile-mode-line - '(:eval (format " %s" (projectile-project-name))))) +<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> + <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> -(use-package helm - :ensure t - :config - (setq projectile-completion-system 'helm) +<span class="org-rainbow-delimiters-depth-1">(</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> - ; Allow the search pattern to be on the header. Taken from this Reddit thread: - ; https://www.reddit.com/r/emacs/comments/3asbyn/new_and_very_useful_helm_feature_enter_search/ - (setq helm-echo-input-in-header-line t) + <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> - (defun helm-hide-minibuffer-maybe () - "Hide the minibuffer if we are in a Helm session" + <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-doc">"Hide the minibuffer if we are in a Helm session"</span> - (when (with-helm-buffer helm-echo-input-in-header-line) - (let ((ov (make-overlay (point-min) (point-max) nil nil t))) - (overlay-put ov 'window (selected-window)) - (overlay-put ov 'face (let ((bg-color (face-background 'default nil))) - `(:background ,bg-color :foreground ,bg-color))) - (setq-local cursor-type nil)))) + <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> - (add-hook 'helm-minibuffer-set-up-hook 'helm-hide-minibuffer-maybe) - (setq 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-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> - ; Preview files with tab - (define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) + <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> - ; Show available options - (define-key helm-map (kbd "C-a") 'helm-select-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> - ; Some vim-like bindings - (define-key helm-map (kbd "C-j") 'helm-next-line) - (define-key helm-map (kbd "C-k") 'helm-previous-line) + <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> - (use-package helm-ag - :ensure t)) + <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> -(use-package helm-projectile - :ensure t - :config - (helm-projectile-on)) +<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-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><span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> @@ -796,18 +801,18 @@ Finally, I've added a couple of bindings in evil mode. First of all, I want <div class="org-src-container"> -<pre class="src src-elisp">(defun mssola-find-file () - "Call the proper Helm function for finding files." +<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-find-file</span> <span class="org-rainbow-delimiters-depth-2">()</span> + <span class="org-doc">"Call the proper Helm function for finding files."</span> - (interactive) + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> - (condition-case nil - (helm-projectile-find-file) - (error - (helm-find-files nil)))) + <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-projectile-find-file<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-find-files nil<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> -(with-eval-after-load 'evil - (define-key evil-normal-state-map (kbd "C-p") 'mssola-find-file)) +<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> </pre> </div> @@ -818,24 +823,24 @@ binding to <kbd>,a</kbd> a function that calls to the proper function. <div class="org-src-container"> -<pre class="src src-elisp">(defun mssola-helm-ag () - "Call the right ag command for helm-ag." +<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> + <span class="org-doc">"Call the right ag command for helm-ag."</span> - (interactive) + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> - (condition-case nil - (helm-ag-project-root) - (error (helm-ag)))) + <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> -(with-eval-after-load 'evil-leader - (evil-leader/set-key "a" 'mssola-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> </pre> </div> </div> </div> <div id="outline-container-sec-8" class="outline-2"> -<h2 id="sec-8"><span class="section-number-2">8</span> Edit</h2> +<h2 id="sec-8">Edit</h2> <div class="outline-text-2" id="text-8"> <p> In this section I define some useful packages for editing. First of all, one of @@ -847,14 +852,14 @@ recent versions of GNU Emacs. <div class="org-src-container"> -<pre class="src src-elisp">(with-eval-after-load 'undo-tree - (global-undo-tree-mode 1) - (setq undo-tree-visualizer-diff t +<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> + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> undo-tree-visualizer-diff t undo-tree-visualizer-timestamps t - undo-tree-visualizer-relative-timestamps t) - (with-eval-after-load 'evil-leader - (evil-leader/set-key - "u" 'undo-tree-visualize))) + undo-tree-visualizer-relative-timestamps t<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">"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> </pre> </div> @@ -865,20 +870,20 @@ extension. This works with lots of languages with proper glue code. <div class="org-src-container"> -<pre class="src src-elisp">(use-package let-alist - :ensure t) +<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> -(use-package flycheck - :ensure t - :config - (add-hook 'after-init-hook 'global-flycheck-mode) +<span class="org-rainbow-delimiters-depth-1">(</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">: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> - ;; Only show the errors buffer if it isn't there and if I'm saving the - ;; buffer. - (setq flycheck-emacs-lisp-load-path 'inherit) - (setq flycheck-check-syntax-automatically '(mode-enabled save)) - (setq flycheck-display-errors-function - #'flycheck-display-error-messages-unless-error-list)) + <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> </pre> </div> @@ -890,11 +895,11 @@ with your editor, you have to increase/decrease the fonts. I use the <div class="org-src-container"> -<pre class="src src-elisp">(use-package default-text-scale - :ensure t - :config - (global-set-key (kbd "C-+") 'default-text-scale-increase) - (global-set-key (kbd "C--") 'default-text-scale-decrease)) +<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> + <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> </pre> </div> @@ -907,8 +912,8 @@ supports it). <div class="org-src-container"> -<pre class="src src-elisp">(use-package rainbow-delimiters - :ensure t) +<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> </div> @@ -918,10 +923,10 @@ I never use the mouse. <div class="org-src-container"> -<pre class="src src-elisp">(use-package disable-mouse - :ensure t - :config - (global-disable-mouse-mode)) +<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> + <span class="org-builtin">:ensure</span> t + <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> </pre> </div> @@ -933,8 +938,8 @@ commands for the current chord as a list. <div class="org-src-container"> -<pre class="src src-elisp">(use-package which-key - :ensure t) +<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> </div> @@ -945,8 +950,8 @@ this, we have <code>wc-mode</code>. <div class="org-src-container"> -<pre class="src src-elisp">(use-package wc-mode - :ensure t) +<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> </div> @@ -957,8 +962,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">(use-package writeroom-mode - :ensure t) +<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> </div> @@ -970,35 +975,35 @@ covers most of my uses, it's convenient to have this tool anyways. <div class="org-src-container"> -<pre class="src src-elisp">(use-package expand-region - :ensure t - :config +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; 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))) + <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> -(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." +<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-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> - (make-variable-buffer-local 'er/try-expand-list) - (setq er/try-expand-list (append + <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 - '(mark-paragraph - mark-page)))) + '<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> -(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<span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> </div> </div> <div id="outline-container-sec-9" class="outline-2"> -<h2 id="sec-9"><span class="section-number-2">9</span> Dired</h2> +<h2 id="sec-9">Dired</h2> <div class="outline-text-2" id="text-9"> <p> I use dired mode mainly for attaching document into emails. That being said, @@ -1007,9 +1012,9 @@ whenever I use it, I want basic evil movement. <div class="org-src-container"> -<pre class="src src-elisp">(with-eval-after-load 'evil - (evil-add-hjkl-bindings dired-mode-map 'normal - (kbd "w") 'evil-forward-word-begin)) +<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> </div> @@ -1021,31 +1026,31 @@ 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">(require 'gnus-dired) +<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> -;; Make the `gnus-dired-mail-buffers' function also work on message-mode derived -;; modes, such as mu4e-compose-mode. -(defun gnus-dired-mail-buffers () - "Return a list of active message buffers." +<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-doc">"Return a list of active message buffers."</span> - (let (buffers) - (save-current-buffer - (dolist (buffer (buffer-list t)) - (set-buffer buffer) - (when (and (derived-mode-p 'message-mode) - (null message-sent-message-via)) - (push (buffer-name buffer) buffers)))) - (nreverse buffers))) + <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> -(setq gnus-dired-mail-mode 'mu4e-user-agent) -(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<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> </pre> </div> </div> </div> <div id="outline-container-sec-10" class="outline-2"> -<h2 id="sec-10"><span class="section-number-2">10</span> Evil</h2> +<h2 id="sec-10">Evil</h2> <div class="outline-text-2" id="text-10"> <p> Forgive me, <a href="https://stallman.org/saint.html">Father</a>, for I have sinned. I've been exposed to modal editing @@ -1057,144 +1062,144 @@ Evil extensions. <div class="org-src-container"> -<pre class="src src-elisp">(defun mssola-evil () - "Configure evil mode." - - ; We can safely remap <C-u> because the counting will be handled a-la Vim. - (define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up) - - ; Make window navigation easier. - (define-key evil-normal-state-map (kbd "C-j") 'evil-window-down) - (define-key evil-normal-state-map (kbd "C-k") 'evil-window-up) - (define-key evil-normal-state-map (kbd "C-l") 'evil-window-right) - (define-key evil-normal-state-map (kbd "C-h") 'evil-window-left) - - ; The window navigation tweaks effectively wipe out the help prefix, which - ; is bad. Fortunately we can workaround this by providing "M-h" as the new - ; help prefix. This prefix is only used in emacs mode to mark lines, which is - ; something already handled by Evil. - (define-key global-map (kbd "M-h") 'help-command) - (fset 'help-command help-map) - - ; Helm + Projectile shortcuts. - (with-eval-after-load 'helm-projectile - (define-key evil-normal-state-map (kbd "M-p") - 'helm-projectile-switch-project)) - - ; I use the Super key in combination with j & k to move around i3. Let's unset - ; M- combos for these two fellows for whenever I misstype them. - (global-unset-key (kbd "M-j")) - (global-unset-key (kbd "M-k")) - - ; both this function and the subsequent lines about [escape] are taken from - ; @aaronbieber configuration. - (defun minibuffer-keyboard-quit () - "Abort recursive edit. -In Delete Selection mode, if the mark is active, just deactivate it; -then it takes a second \\[keyboard-quit] to abort the minibuffer." - (interactive) - (if (and delete-selection-mode transient-mark-mode mark-active) - (setq deactivate-mark t) - (when (get-buffer "*Completions*") (delete-windows-on "*Completions*")) - (abort-recursive-edit))) - - ;; Make escape quit everything, whenever possible. - (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) - - ; I store macros on the <q> register for convenience, so I used to use the - ; <C-q> combo to execute this macro in Vim. In Emacs though, this combo is - ; reserved to a rather useful function, and I'd like to keep it that way. So, - ; now the mapping is set to <C-2> (mnemonic: where the @ symbol is). Moreover, - ; it's applied as many times as specified by the numeric prefix argument. - (define-key evil-normal-state-map (kbd "C-2") - (lambda (n) - (interactive "p") - (evil-execute-macro n "@q"))) - - ; C-s: switch to normal mode and save the buffer. I know :) - (define-key evil-normal-state-map (kbd "C-s") 'save-buffer) - (define-key evil-insert-state-map (kbd "C-s") - (lambda () (interactive) (save-buffer) (evil-force-normal-state)))) - -(use-package evil - :ensure t - :config - - (add-hook 'evil-mode-hook 'mssola-evil) - (evil-mode 1) - - ;; C-z is unused and it's close to my beloved C-c. Since I don't want to mess - ;; with one of the most sacred Emacs prefixes, I'm moving to C-z. - (define-key key-translation-map (kbd "C-z") [escape]) - (define-key evil-operator-state-map (kbd "C-z") 'keyboard-quit) - (set-quit-char "C-z") - - ;; Use the proper initial evil state for the following modes. - (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) - - (use-package evil-leader - :ensure t - :config - (global-evil-leader-mode) - (evil-leader/set-leader ",") - (setq evil-leader/in-all-states 1) - (evil-leader/set-key - "," 'back-to-indentation - "c" 'delete-window - "k" 'kill-buffer-and-window - "v" 'split-window-right - "V" (lambda () (interactive) (split-window-right) (other-window 1)) - "f" 'flycheck-list-errors - "e" 'eval-last-sexp - "b" 'view-buffer - "o" 'browse-url-at-point)) - - (use-package evil-surround - :ensure t - :config - (global-evil-surround-mode 1)) - - (use-package evil-commentary - :ensure t - :config - (evil-commentary-mode t)) - - (use-package evil-args - :ensure t - :config - ; Configuration taken from the documentation of evil-args. - - ;; Bind evil-args text objects - (define-key evil-inner-text-objects-map "a" 'evil-inner-arg) - (define-key evil-outer-text-objects-map "a" 'evil-outer-arg) - - ;; Bind evil-forward/backward-args - (define-key evil-normal-state-map "L" 'evil-forward-arg) - (define-key evil-normal-state-map "H" 'evil-backward-arg) - (define-key evil-motion-state-map "L" 'evil-forward-arg) - (define-key evil-motion-state-map "H" 'evil-backward-arg)) - - (use-package evil-numbers - :ensure t - :config - (define-key evil-normal-state-map (kbd "C-a") 'evil-numbers/inc-at-pt) - (define-key evil-normal-state-map (kbd "C-c -") 'evil-numbers/dec-at-pt))) +<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> + <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> + + <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> + + <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> + + <span class="org-comment-delimiter">; </span><span class="org-comment">Helm + Projectile shortcuts.</span> + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'helm-projectile + <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-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> + + <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-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-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> + + <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> + + <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> + +<span class="org-rainbow-delimiters-depth-1">(</span><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> + + <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> + + <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> + + <span class="org-rainbow-delimiters-depth-2">(</span><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-3">(</span>global-evil-leader-mode<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>evil-leader/set-leader <span class="org-string">","</span><span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">setq</span> evil-leader/in-all-states 1<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>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-4">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-5">()</span> <span class="org-rainbow-delimiters-depth-5">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-rainbow-delimiters-depth-5">(</span>split-window-right<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-rainbow-delimiters-depth-5">(</span>other-window 1<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span> + <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-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + + <span class="org-rainbow-delimiters-depth-2">(</span><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-3">(</span>global-evil-surround-mode 1<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">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-3">(</span>evil-commentary-mode t<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">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-3">(</span>define-key evil-inner-text-objects-map <span class="org-string">"a"</span> 'evil-inner-arg<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-outer-text-objects-map <span class="org-string">"a"</span> 'evil-outer-arg<span class="org-rainbow-delimiters-depth-3">)</span> + + <span class="org-comment-delimiter">;; </span><span class="org-comment">Bind evil-forward/backward-args</span> + <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-normal-state-map <span class="org-string">"L"</span> 'evil-forward-arg<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-normal-state-map <span class="org-string">"H"</span> 'evil-backward-arg<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-motion-state-map <span class="org-string">"L"</span> 'evil-forward-arg<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>define-key evil-motion-state-map <span class="org-string">"H"</span> 'evil-backward-arg<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">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-3">(</span>define-key evil-normal-state-map <span class="org-rainbow-delimiters-depth-4">(</span>kbd <span class="org-string">"C-a"</span><span class="org-rainbow-delimiters-depth-4">)</span> 'evil-numbers/inc-at-pt<span class="org-rainbow-delimiters-depth-3">)</span> + <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-c -"</span><span class="org-rainbow-delimiters-depth-4">)</span> 'evil-numbers/dec-at-pt<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> </div> </div> </div> <div id="outline-container-sec-11" class="outline-2"> -<h2 id="sec-11"><span class="section-number-2">11</span> Magit</h2> +<h2 id="sec-11">Magit</h2> <div class="outline-text-2" id="text-11"> <p> A git porcelain for GNU Emacs. Even if I'm still using the git CLI, it's @@ -1203,44 +1208,44 @@ certainly useful for some common tasks (I guess that I still need some learning) <div class="org-src-container"> -<pre class="src src-elisp">(use-package magit - :ensure t - :config +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; Proper initial states. - (with-eval-after-load '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">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> - ; When showing the status, hide the usually-redundant "branch" section and - ; show the rest. - (add-hook 'magit-section-set-visibility-hook - '(lambda (section) - (if (string= (magit-section-type section) "branch") + <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> 'hide - 'show))) + '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> - (with-eval-after-load 'evil-leader - (evil-leader/set-key "s" 'magit-status) + <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> - (use-package evil-magit - :ensure t - :config + <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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; The magit + evil-magit combo messes up some chords, let's fix this. - (evil-define-key 'normal magit-mode-map - "\C-h" 'evil-window-left - "\C-l" 'evil-window-right - "\C-j" 'evil-window-down - "\C-k" 'evil-window-up - "\M-p" 'helm-projectile-switch-project)))) + <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-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> </pre> </div> </div> </div> <div id="outline-container-sec-12" class="outline-2"> -<h2 id="sec-12"><span class="section-number-2">12</span> mu4e</h2> +<h2 id="sec-12">mu4e</h2> <div class="outline-text-2" id="text-12"> <p> I use <a href="http://www.djcbsoftware.nl/code/mu/">mu</a> and <a href="http://www.djcbsoftware.nl/code/mu/mu4e.html">mu4e</a> to manage my email. The configuration for this has been taken @@ -1255,10 +1260,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">(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") -(require 'mu4e) +<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> -(when (featurep 'mu4e) +<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> </pre> </div> @@ -1268,9 +1273,9 @@ Diferent SMTP options that will be used for each context. <div class="org-src-container"> -<pre class="src src-elisp">(setq message-send-mail-function 'smtpmail-send-it - mu4e-maildir (expand-file-name "~/.mail") - starttls-use-gnutls t) +<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> </div> @@ -1281,35 +1286,35 @@ the configuration. <div class="org-src-container"> -<pre class="src src-elisp">(defun mssola-smtp (server port) - "Set SMTP variables depending on the given SERVER and PORT." +<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> + <span class="org-doc">"Set SMTP variables depending on the given SERVER and PORT."</span> - (require 'smtpmail) + <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> - (setq smtpmail-starttls-credentials - '((server port nil nil)) + <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> smtpmail-auth-credentials - (expand-file-name "~/.authinfo.gpg") + <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> smtpmail-default-smtp-server server smtpmail-smtp-server server - smtpmail-smtp-service port)) + smtpmail-smtp-service port<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -; https://www.reddit.com/r/emacs/comments/47t9ec/share_your_mu4econtext_configs/d0fsih6 -(defun mu4e-message-maildir-matches (msg rx) - "Returns true if the maildir of MSG matches the given regexp RX." +<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-doc">"Returns true if the maildir of MSG matches the given regexp RX."</span> - (when rx - (if (listp rx) - ;; if rx is a list, try each one for a match - (or (mu4e-message-maildir-matches msg (car rx)) - (mu4e-message-maildir-matches msg (cdr rx))) - ;; not a list, check rx - (string-match rx (mu4e-message-field msg :maildir))))) + <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-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-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> -(defun suse-refile-folder (key) - "Returns the refile folder for the given SUSE account in the KEY arg" - (concat "/" key "/Archives/" - (format-time-string "%Y" (current-time)))) +<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-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> </pre> </div> @@ -1320,58 +1325,58 @@ this way is relatively new (since mu 0.9.16). <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-contexts - `( - ;; GMail - ,(make-mu4e-context - :name "gmail" - :enter-func (lambda () - (mu4e-message "Switching to gmail.com") - (mssola-smtp "smtp.gmail.com" 587)) - :match-func (lambda (msg) - (when msg - (mu4e-message-maildir-matches msg "^/gmail"))) - :vars '( - (user-mail-address . "mikisabate@gmail.com") - (mu4e-reply-to-address . "mikisabate@gmail.com") - (mu4e-drafts-folder . "/gmail/Drafts") - (mu4e-sent-folder . "/gmail/Sent") - (mu4e-refile-folder . "/gmail/All") - (mu4e-trash-folder . "/gmail/Trash"))) - - ;; suse.com - ,(make-mu4e-context - :name "comsuse" - :enter-func (lambda () - (mu4e-message "Switching to suse.com") - (mssola-smtp "smtp.novell.com" 25)) - :match-func (lambda (msg) - (when msg - (mu4e-message-maildir-matches msg "^/susecom"))) - :vars `( - (user-mail-address . "msabate@suse.com") - (mu4e-reply-to-address . "msabate@suse.com") - (mu4e-drafts-folder . "/susecom/Drafts") - (mu4e-sent-folder . "/susecom/Sent") - (mu4e-refile-folder . ,(suse-refile-folder "susecom")) - (mu4e-trash-folder . "/susecom/Trash"))) - - ;; suse.de - ,(make-mu4e-context - :name "desuse" - :enter-func (lambda () - (mu4e-message "Switching to suse.de") - (mssola-smtp "imap.suse.de" 587)) - :match-func (lambda (msg) - (when msg - (mu4e-message-maildir-matches msg "^/susede"))) - :vars `( - (user-mail-address . "msabate@suse.de") - (mu4e-reply-to-address . "msabate@suse.de") - (mu4e-drafts-folder . "/susede/Drafts") - (mu4e-sent-folder . "/susede/Sent") - (mu4e-refile-folder . ,(suse-refile-folder "susede")) - (mu4e-trash-folder . "/susede/Trash"))))) +<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> + <span class="org-comment-delimiter">;; </span><span class="org-comment">GMail</span> + ,<span class="org-rainbow-delimiters-depth-3">(</span>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-comment-delimiter">;; </span><span class="org-comment">suse.com</span> + ,<span class="org-rainbow-delimiters-depth-3">(</span>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-comment-delimiter">;; </span><span class="org-comment">suse.de</span> + ,<span class="org-rainbow-delimiters-depth-3">(</span>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> </pre> </div> @@ -1381,8 +1386,8 @@ If mu4e cannot figure things out, ask me. <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-context-policy 'ask) -(setq mu4e-compose-context-policy 'ask) +<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> </div> @@ -1392,13 +1397,13 @@ Fill the <code>mu4e-user-mail-address-list</code> variable with the contexts. <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-user-mail-address-list - (delq nil - (mapcar (lambda (context) - (when (mu4e-context-vars context) - (cdr (assq 'user-mail-address - (mu4e-context-vars context))))) - mu4e-contexts))) +<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> </div> @@ -1408,10 +1413,10 @@ Setting my bookmarks <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-bookmarks - '(("maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox" "Inbox Folders" ?n) - ("flag:unread AND NOT flag:trashed" "Unread messages" ?u) - ("date:today..now" "Today's messages" ?t))) +<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> </div> @@ -1422,10 +1427,10 @@ format=flowed or not. <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-compose-signature - (concat - "Miquel Sabaté Solà,\n" - "PGP: 4096R / 1BA5 3C7A C93D CA2A CFDF DA97 96BE 8C6F D89D 6565\n")) +<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 + <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> </pre> </div> @@ -1435,7 +1440,7 @@ Sign outgoing emails always. <div class="org-src-container"> -<pre class="src src-elisp">(add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime) +<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> </div> @@ -1445,7 +1450,7 @@ To avoid UID clashes. See <a href="http://pragmaticemacs.com/emacs/fixing-duplic <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-change-filenames-when-moving t) +<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> </div> @@ -1455,19 +1460,19 @@ Miscellaneous settings. <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-html2text-command "w3m -T text/html" - mu4e-attachment-dir "~/Downloads" - mu4e-headers-date-format "%Y-%m-%d %H:%M" - message-citation-line-format "%N @ %Y-%m-%d %H:%M %Z:\n" +<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> + 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> message-citation-line-function 'message-insert-formatted-citation-line message-kill-buffer-on-exit t - mu4e-get-mail-command "mbsync -aqV" + mu4e-get-mail-command <span class="org-string">"mbsync -aqV"</span> mu4e-update-interval 600 mu4e-compose-dont-reply-to-self t mu4e-compose-format-flowed t mu4e-headers-skip-duplicates t mu4e-headers-include-related t - mu4e-headers-auto-update t) + mu4e-headers-auto-update t<span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> @@ -1479,11 +1484,11 @@ These are the defaults: <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-headers-fields - '( (:date . 18) - (:mailing-list . 15) - (:from-or-to . 20) - (:subject . nil))) +<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> </div> @@ -1493,12 +1498,12 @@ Show images <div class="org-src-container"> -<pre class="src src-elisp">(setq mu4e-view-show-images t - mu4e-view-image-max-width 800) +<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> -; Use imagemagick, if available -(when (fboundp 'imagemagick-register-types) - (imagemagick-register-types)) +<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> </pre> </div> @@ -1509,9 +1514,9 @@ render an HTML message with Webkit. <div class="org-src-container"> -<pre class="src src-elisp">(if (>= emacs-major-version 25) - (add-to-list 'mu4e-view-actions - '("webkit" . mu4e-action-view-with-xwidget))) +<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> </div> @@ -1523,9 +1528,9 @@ on it. <div class="org-src-container"> -<pre class="src src-elisp">(let ((exec (locate-file "msg2pdf" exec-path exec-suffixes))) - (if exec - (setq mu4e-msg2pdf exec))) +<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> </div> @@ -1535,33 +1540,33 @@ Adding hooks for composing and viewing messages. <div class="org-src-container"> -<pre class="src src-elisp">(defun mssola-compose-mode () - "My settings for message composition." +<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> + <span class="org-doc">"My settings for message composition."</span> - ; If we are composing an email from scratch, it's more convenient to be in - ; insert mode. Otherwise start with normal mode. - (with-eval-after-load 'evil - (if 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">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> - ; Guess hard newlines - (use-hard-newlines t 'guess) + <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> - ; So it's easy to encrypt/decrypt emails. - (epa-mail-mode) + <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> - ; Spellz - (flyspell-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> -(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-rainbow-delimiters-depth-1">)</span> -; I want to read messages in the format that the sender used. I'm also -; enabling epa-mail-mode, so it's easy to decrypt received emails. -(add-hook 'mu4e-view-mode-hook - (lambda () - (epa-mail-mode) - (visual-line-mode 1))) +<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> </pre> </div> @@ -1571,35 +1576,35 @@ I want desktop notifications when receiving email. <div class="org-src-container"> -<pre class="src src-elisp">(use-package mu4e-alert - :ensure t - :config +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; Notify me for unread emails from my inbox. - (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) - (setq mu4e-alert-interesting-mail-query - (concat - "(maildir:/gmail/inbox OR maildir:/susecom/inbox OR maildir:/susede/inbox) " - "AND flag:unread AND NOT flag:trashed")) - (setq mu4e-alert-email-notification-types '(count))) + <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 + <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> -; Evil mode in mu4e -(with-eval-after-load 'evil - (use-package evil-mu4e - :ensure t - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; Idea taken from evil-mu4e.el - (defvar mssola-evil-mu4e-mode-map-bindings - `((,evil-mu4e-state mu4e-headers-mode-map "\C-u" evil-scroll-up) - (,evil-mu4e-state mu4e-main-mode-map "\C-u" evil-scroll-up) - (,evil-mu4e-state mu4e-view-mode-map "h" evil-backward-char))) + <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> - (dolist (binding mssola-evil-mu4e-mode-map-bindings) - (evil-define-key - (nth 0 binding) (nth 1 binding) (nth 2 binding) (nth 3 binding))))) + <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> </pre> </div> @@ -1609,51 +1614,54 @@ And finally define a proper shortcut. <div class="org-src-container"> -<pre class="src src-elisp">; The trailing parenthesis closes the "(when (featurep 'mu4e)" statement from -; the very beginning. -(global-set-key (kbd "C-c m") 'mu4e)) +<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> </pre> </div> </div> </div> <div id="outline-container-sec-13" class="outline-2"> -<h2 id="sec-13"><span class="section-number-2">13</span> org</h2> +<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"> +<h3 id="sec-13-1">General settings</h3> +<div class="outline-text-3" id="text-13-1"> <p> First of all, let me define some helper functions. </p> <div class="org-src-container"> -<pre class="src src-elisp">(defun mssola-org-skip-if-priority (priority &optional subtree) - "Skip an agenda item if it has a priority of PRIORITY. -PRIORITY may be one of the characters ?A, ?B, or ?C. -Skips the current entry unless SUBTREE is not nil. This function has been -copied from @aaronbieber." +<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> + <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> - (let ((end (if subtree (save-excursion (org-end-of-subtree t)) - (save-excursion (progn (outline-next-heading) (1- (point)))))) - (pri-value (* 1000 (- org-lowest-priority priority))) - (pri-current (org-get-priority (thing-at-point 'line t)))) - (if (= pri-value pri-current) + <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> end - nil))) + 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> -(defun mssola-org-skip-if-not-closed-in-day (time &optional subtree) - "Skip entries that were not closed in the given TIME. -Skip the current entry unless SUBTREE is not nil, in which case skip -the entire subtree. Idea taken from @aaronbieber" +<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-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> - (let ((end (if subtree (save-excursion (org-end-of-subtree t)) - (save-excursion (progn (outline-next-heading) (1- (point)))))) - (day-prefix (format-time-string "%Y-%m-%d" time))) + <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> - (if (save-excursion - (and (re-search-forward org-closed-time-regexp end t) - (string= (substring (match-string-no-properties 1) 0 10) day-prefix))) + <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> nil - end))) + 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> </pre> </div> @@ -1663,34 +1671,33 @@ Some general UI settings for org mode. <div class="org-src-container"> -<pre class="src src-elisp">(setq org-src-fontify-natively t - org-src-tab-acts-natively t +<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 org-confirm-babel-evaluate nil - org-edit-src-content-indentation 0) + org-edit-src-content-indentation 0<span class="org-rainbow-delimiters-depth-1">)</span> -(setq org-todo-keywords - '((sequence "TODO(t)" "|" "DONE(d!)") - (sequence "IDEA(i)" "WORKING(w)" "|" "USED(u@/!)" "DISCARDED(x@/!)"))) +<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> -(setq org-todo-keyword-faces - '(("TODO" . org-todo) - ("IDEA" . font-lock-constant-face) - ("WORKING" . font-lock-constant-face) - ("DONE" . org-done) - ("USED" . org-done) - ("DISCARDED" . org-done))) +<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> </pre> </div> <p> -Loggins settings. +Logging settings. </p> <div class="org-src-container"> -<pre class="src src-elisp">(setq org-log-done t) -(setq org-log-redeadline (quote time)) -(setq org-log-reschedule (quote time)) +<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> </div> @@ -1700,83 +1707,122 @@ Where org files reside. <div class="org-src-container"> -<pre class="src src-elisp">(setq org-agenda-files '("~/org/")) +<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> </div> +</div> +</div> +<div id="outline-container-sec-13-2" class="outline-3"> +<h3 id="sec-13-2">Publishing</h3> +<div class="outline-text-3" id="text-13-2"> +<p> +In order to publish files into HTML, I would like to have <code>htmlize</code> installed. +This package allows org to export to HTML in a better way (e.g. allowing code +blocks to be converted into HTML as well, so we can properly colorize it). +</p> + +<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> +</div> + +<p> +And now let's set all the related settings. +</p> + +<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 + 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> +</pre> +</div> +</div> +</div> + +<div id="outline-container-sec-13-3" class="outline-3"> +<h3 id="sec-13-3">Agenda</h3> +<div class="outline-text-3" id="text-13-3"> <p> Custom commands for <code>org-agenda</code>. </p> <div class="org-src-container"> -<pre class="src src-elisp">(setq org-agenda-custom-commands - '(("p" "Printed agenda" - ; Daily agenda with a 2-weeks deadline warning. Tasks are - ; represented as [ ] items. - ((agenda "" - ((org-agenda-ndays 1) - (org-deadline-warning-days 14) - (org-agenda-todo-keyword-format "[ ]") - (org-agenda-scheduled-leaders '("" "")))) - - ; Display a "High Priority" list of tasks on top. - (tags "PRIORITY=\"A\"" - ((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done)) - (org-agenda-sorting-strategy '(tag-up priority-down)) - (org-agenda-todo-keyword-format "") - (org-agenda-overriding-header "\nHigh priority\n--------------\n"))) - - - ; All tasks except those already listed as high priority or - ; ideas. Scheduled and deadlines are also ignored here. - (alltodo "" - ((org-agenda-skip-function '(or (mssola-org-skip-if-priority ?A) - (org-agenda-skip-entry-if 'todo '("IDEA" "WORKING")) - (org-agenda-skip-if nil '(scheduled deadline)))) - (org-agenda-sorting-strategy '(tag-up priority-down)) - (org-agenda-todo-keyword-format "") - (org-agenda-overriding-header "\nAll tasks\n----------\n"))) - - ; List of ideas. - (todo "IDEA" - ((org-agenda-overriding-header "\nIdeas\n------\n") - (org-agenda-todo-keyword-format "")))) - - ((org-agenda-compact-blocks t) - (org-agenda-remove-tags t))) - - ; List of done items. Useful for standups, review meetings, weekly - ; reports, etc. - ("d" "Done items" - ; First show the items done yesterday. Useful for standups. - ((todo "DONE" - ((org-agenda-overriding-header "Done yesterday\n---------------\n") - (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 ""))) - - ; Then show what I've done today. - (todo "DONE" - ((org-agenda-overriding-header "\nDone today\n-----------\n") - (org-agenda-skip-function - '(mssola-org-skip-if-not-closed-in-day - (current-time))) - (org-agenda-todo-keyword-format ""))) - - ; Finally show what I've been doing in the past 15 days. Useful for - ; review meetings and weekly reports. - (todo "DONE" - ((org-agenda-start-day "-15d") - (org-agenda-span 15) - (org-agenda-start-on-weekday nil) - (org-agenda-todo-keyword-format "") - (org-agenda-scheduled-leaders '("" "")) - (org-agenda-overriding-header "\nDone during the past 15 days\n-----------------------------\n")))) - - ((org-agenda-compact-blocks t) - (org-agenda-remove-tags t))))) +<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> + <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> + + <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> + + + <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> + + <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> + + <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-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-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> + + <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> + + <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> + + <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> </pre> </div> @@ -1786,54 +1832,60 @@ The prefix for the different kinds of types being used. <div class="org-src-container"> -<pre class="src src-elisp">(setq org-agenda-prefix-format '((agenda . "%t%s") - (tags . "%c:%s") - (todo . "%c:%t%s"))) +<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> </div> +</div> +</div> +<div id="outline-container-sec-13-4" class="outline-3"> +<h3 id="sec-13-4">Other</h3> +<div class="outline-text-3" id="text-13-4"> <p> Insert a <kbd></kbd> value in org mode. See this <a href="http://emacs.stackexchange.com/questions/2206/i-want-to-have-the-kbd-tags-for-my-blog-written-in-org-mode">StackExchange answer</a>. </p> <div class="org-src-container"> -<pre class="src src-elisp">(defun endless/insert-key (key) - "Ask for a key then insert its description. -Will work on both org-mode and any mode that accepts plain html." - (interactive "kType key sequence: ") - (let* ((is-org-mode (derived-mode-p 'org-mode)) - (tag (if is-org-mode - "@@html:<kbd>%s</kbd>@@" - "<kbd>%s</kbd>"))) - (if (null (equal key "\r")) - (insert - (format tag (help-key-description key nil))) - (insert (format tag "")) - (forward-char (if is-org-mode -8 -6))))) +<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> + <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-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> -(define-key org-mode-map "\C-ck" #'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<span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> </div> +</div> -<div id="outline-container-sec-13-1" class="outline-3"> -<h3 id="sec-13-1"><span class="section-number-3">13.1</span> <span class="todo TODO">TODO</span> shortcut for making an org link, and transforming a link into a proper org link</h3> +<div id="outline-container-sec-13-5" class="outline-3"> +<h3 id="sec-13-5"><span class="todo TODO">TODO</span> shortcut for making an org link, and transforming a link into a proper org link</h3> </div> -<div id="outline-container-sec-13-2" class="outline-3"> -<h3 id="sec-13-2"><span class="section-number-3">13.2</span> <span class="todo TODO">TODO</span> make it work with evil</h3> +<div id="outline-container-sec-13-6" class="outline-3"> +<h3 id="sec-13-6"><span class="todo TODO">TODO</span> make it work with evil</h3> </div> -<div id="outline-container-sec-13-3" class="outline-3"> -<h3 id="sec-13-3"><span class="section-number-3">13.3</span> <span class="todo TODO">TODO</span> Proper keybindings for quick access.</h3> +<div id="outline-container-sec-13-7" class="outline-3"> +<h3 id="sec-13-7"><span class="todo TODO">TODO</span> Proper keybindings for quick access.</h3> </div> -<div id="outline-container-sec-13-4" class="outline-3"> -<h3 id="sec-13-4"><span class="section-number-3">13.4</span> <span class="todo TODO">TODO</span> shortcuts for stuff like: create something urgent for today</h3> +<div id="outline-container-sec-13-8" class="outline-3"> +<h3 id="sec-13-8"><span class="todo TODO">TODO</span> shortcuts for stuff like: create something urgent for today</h3> </div> </div> <div id="outline-container-sec-14" class="outline-2"> -<h2 id="sec-14"><span class="section-number-2">14</span> Languages</h2> +<h2 id="sec-14">Languages</h2> <div class="outline-text-2" id="text-14"> <p> First of all, define a function that identifies some warning keywords @@ -1842,12 +1894,12 @@ First of all, define a function that identifies some warning keywords <div class="org-src-container"> -<pre class="src src-elisp">(defun warnings-mode-hook () - "Hook for enabling the warning face on strings with a warning prefix." +<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> + <span class="org-doc">"Hook for enabling the warning face on strings with a warning prefix."</span> - (font-lock-add-keywords nil - '(("\\(XXX\\|FIXME\\|TODO\\|HACK\\|NOTE\\)" - 1 font-lock-warning-face prepend)))) + <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> </pre> </div> @@ -1858,10 +1910,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">(add-hook 'text-mode-hook - (lambda () - (flyspell-mode 1) - (wc-mode 1))) +<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> </div> @@ -1873,13 +1925,13 @@ confusing. Moreover, I'm also enabling <code>eldoc-mode</code> and the aforement <div class="org-src-container"> -<pre class="src src-elisp">(add-hook 'emacs-lisp-mode-hook - (lambda () - (eldoc-mode 1) - (warnings-mode-hook) - (rainbow-delimiters-mode 1) - ; https://github.com/jhenahan/emacs.d/blob/master/emacs-init.org#emacs-lisp - (setq mode-name "ξ"))) +<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> + <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> </pre> </div> @@ -1890,17 +1942,17 @@ comments and the usage of tabs instead of spaces. <div class="org-src-container"> -<pre class="src src-elisp">; Note that C-common includes languages with a similar syntax of C. -(add-hook 'c-mode-common-hook 'warnings-mode-hook) -(add-hook 'c-mode-common-hook (lambda() (flyspell-prog-mode))) +<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> -;; C -(add-hook 'c-mode-hook - (lambda () (setq 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> -;; C++ -(add-hook 'c++-mode-hook - (lambda () (setq 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> </pre> </div> @@ -1910,7 +1962,7 @@ Include warning keywords in Ruby. <div class="org-src-container"> -<pre class="src src-elisp">(add-hook 'ruby-mode-hook 'warnings-mode-hook) +<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> </div> @@ -1921,46 +1973,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">(defun mssola-go-mode () - "My configuration for Go mode." +<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> + <span class="org-doc">"My configuration for Go mode."</span> - ; Use goimports instead of go-fmt - (setq gofmt-command "goimports") + <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> - ; Call Gofmt before saving - (add-hook 'before-save-hook 'gofmt-before-save) + <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> - ; Integration flycheck with Go - (add-to-list 'load-path - (concat (getenv "GOPATH") "/src/github.com/dougm/goflymake")) - (require 'go-flycheck) + <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> - (evil-leader/set-key - "." '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> - (setq indent-tabs-mode t) - (flyspell-prog-mode) + <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> - ; eldoc support - (use-package go-eldoc - :ensure t - :config - (require 'go-eldoc)) + <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-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> - (use-package go-add-tags - :ensure t - :config - (evil-leader/set-key "t" 'go-add-tags))) + <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-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> -;; Go -(use-package go-mode - :ensure t - :pin melpa-stable - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:pin</span> melpa-stable + <span class="org-builtin">:config</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)) + <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> </pre> </div> @@ -1972,13 +2024,13 @@ usings tabs for indentation (C, C++ and Go). <div class="org-src-container"> -<pre class="src src-elisp">(use-package smart-tabs-mode - :ensure t - :config - (smart-tabs-add-language-support golang go-mode-hook - ((c-indent-line . c-basic-offset) - (c-indent-region . c-basic-offset))) - (smart-tabs-insinuate 'c 'c++ 'golang)) +<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> + <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> </pre> </div> @@ -1988,29 +2040,29 @@ Inferior markup languages. <div class="org-src-container"> -<pre class="src src-elisp">;; Markdown mode with preview mode in the browser. -(use-package markdown-mode - :ensure t - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - ; This is the one that I got from openSUSE. - (custom-set-variables - '(markdown-command "/usr/bin/markdown-calibre")) + <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> - ; Preview mode does its things through websockets, so it's a requirement. - ; After that, we can safely require it. - (use-package websocket - :ensure t - :config - (use-package markdown-preview-mode - :ensure t))) + <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-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> -; YAML -(use-package yaml-mode - :ensure t - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (add-hook 'yaml-mode-hook 'warnings-mode-hook)) + <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> </pre> </div> @@ -2020,32 +2072,32 @@ Web-related stuff. <div class="org-src-container"> -<pre class="src src-elisp">(use-package slim-mode - :ensure t) +<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> -(use-package scss-mode - :ensure t - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (setq scss-compile-at-save nil) - (add-hook 'yaml-mode-hook 'warnings-mode-hook)) + <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> -(use-package php-mode - :ensure 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> -(use-package web-mode - :ensure t - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) - (add-to-list 'auto-mode-alist '("\\.jinja\\'" . web-mode)) - (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode)) + <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-hook 'web-mode-hook - (lambda () - (setq web-mode-markup-indent-offset 2) - (setq web-mode-css-indent-offset 2) - (setq web-mode-code-indent-offset 2)))) + <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> </pre> </div> @@ -2055,22 +2107,22 @@ CMake for y'all. <div class="org-src-container"> -<pre class="src src-elisp">(use-package cmake-mode - :ensure t - :config +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (setq auto-mode-alist - (append - '(("CMakeLists\\.txt\\'" . cmake-mode)) - '(("\\.cmake\\'" . cmake-mode)) - auto-mode-alist)) + <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> - (use-package cmake-font-lock - :ensure t - :config + <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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (add-hook 'cmake-mode-hook 'cmake-font-lock-activate) - (add-hook 'yaml-mode-hook 'warnings-mode-hook))) + <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> </pre> </div> @@ -2081,23 +2133,23 @@ now because it's buggy, but I still have hope. <div class="org-src-container"> -<pre class="src src-elisp">(use-package dockerfile-mode - :ensure t - :config +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode))) + <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> -(use-package terraform-mode - :ensure t - :config +<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-builtin">:ensure</span> t + <span class="org-builtin">:config</span> - (terraform-format-on-save-mode)) + <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> -(use-package hcl-mode - :ensure 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-rainbow-delimiters-depth-1">)</span> -;(use-package salt-mode - ;:ensure 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> </pre> </div> @@ -2110,11 +2162,11 @@ criteria really). <div class="org-src-container"> -<pre class="src src-elisp">(dolist (lang-hook '(ruby-mode-hook +<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 php-mode-hook perl-mode-hook - emacs-lisp-mode-hook)) - (add-hook lang-hook 'soria-purple-identifiers)) + 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> </pre> </div> @@ -2125,18 +2177,18 @@ for writing some common blocks. <div class="org-src-container"> -<pre class="src src-elisp">(use-package yasnippet - :ensure t - :config - (yas-reload-all) - (add-hook 'prog-mode-hook #'yas-minor-mode)) +<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> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:config</span> + <span class="org-rainbow-delimiters-depth-2">(</span>yas-reload-all<span class="org-rainbow-delimiters-depth-2">)</span> + <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'prog-mode-hook #'yas-minor-mode<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> </div> </div> <div id="outline-container-sec-15" class="outline-2"> -<h2 id="sec-15"><span class="section-number-2">15</span> Misc</h2> +<h2 id="sec-15">Misc</h2> <div class="outline-text-2" id="text-15"> <p> Install a set of useful functions from <a href="https://github.com/bbatsov">@bbatsov</a>. The bindings are following @@ -2146,18 +2198,18 @@ too many things into my leader and these shortcuts look sensible to me). <div class="org-src-container"> -<pre class="src src-elisp">(use-package crux - :ensure t - :bind (("C-c d" . crux-delete-file-and-buffer) - ("C-c r" . crux-rename-file-and-buffer) - ("C-c i" . crux-find-user-init-file) - ("C-c o" . crux-open-with))) +<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> + <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 i"</span> . crux-find-user-init-file<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> </pre> </div> </div> </div> <div id="outline-container-sec-16" class="outline-2"> -<h2 id="sec-16"><span class="section-number-2">16</span> Credits</h2> +<h2 id="sec-16">Credits</h2> <div class="outline-text-2" id="text-16"> <p> I've built this file by simply scavenging from other people's emacs.d/dotfiles @@ -2175,7 +2227,7 @@ repositories. I have taken lots of pieces from here and there, but most notably: </li> <li><a href="https://github.com/purcell/emacs.d">@purcell</a> </li> -<li><a href="https://github.com/sachac/emacs.d">@sachac</a> (<a href="http://pages.sachachua.com/.emacs.d/Sacha.html">HTML version</a>) +<li><a href="https://github.com/sachac/.emacs.d">@sachac</a> (<a href="http://pages.sachachua.com/.emacs.d/Sacha.html">HTML version</a>) </li> <li><a href="https://github.com/larstvei/dot-emacs">@larstvei</a> </li> @@ -2184,11 +2236,11 @@ repositories. I have taken lots of pieces from here and there, but most notably: </div> <div id="outline-container-sec-17" class="outline-2"> -<h2 id="sec-17"><span class="section-number-2">17</span> License</h2> +<h2 id="sec-17">License</h2> <div class="outline-text-2" id="text-17"> <div class="org-src-container"> -<pre class="src src-text">Copyright (C) 2014-2017 Miquel Sabaté Solà <mikisabate@gmail.com> +<pre class="src src-text">Copyright (C) 2014-2017 Miquel Sabaté Solà <a href="mailto:mikisabate%40gmail.com"><mikisabate@gmail.com></a> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2201,7 +2253,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. +along with this program. If not, see <a href="http://www.gnu.org/licenses/"><http://www.gnu.org/licenses/></a>. </pre> </div> </div> @@ -2209,7 +2261,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. </div> <div id="postamble" class="status"> <p class="author">Author: Miquel Sabaté Solà</p> -<p class="date">Created: 2017-01-18 Wed 15:25</p> +<p class="date">Created: 2017-01-18 Wed 18:42</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 cc50e82..67708f5 100644 --- a/emacs/init.org +++ b/emacs/init.org @@ -1,6 +1,7 @@ #+TITLE: mssola's GNU Emacs configuration #+AUTHOR: Miquel Sabaté Solà #+HTML_HEAD: <link rel="stylesheet" href="http://jo.mssola.com/static/style.css" type="text/css" /> +#+HTML_HEAD: <link rel="stylesheet" href="http://jo.mssola.com/static/org.css" type="text/css" /> #+BABEL: :cache yes #+PROPERTY: header-args :tangle ~/.emacs.d/init.el @@ -1142,6 +1143,8 @@ And finally define a proper shortcut. * org +** General settings + First of all, let me define some helper functions. #+BEGIN_SRC elisp @@ -1178,25 +1181,24 @@ First of all, let me define some helper functions. Some general UI settings for org mode. #+BEGIN_SRC elisp - (setq org-src-fontify-natively t - org-src-tab-acts-natively t - org-confirm-babel-evaluate nil - org-edit-src-content-indentation 0) +(setq org-src-tab-acts-natively t + org-confirm-babel-evaluate nil + org-edit-src-content-indentation 0) - (setq org-todo-keywords - '((sequence "TODO(t)" "|" "DONE(d!)") - (sequence "IDEA(i)" "WORKING(w)" "|" "USED(u@/!)" "DISCARDED(x@/!)"))) +(setq org-todo-keywords + '((sequence "TODO(t)" "|" "DONE(d!)") + (sequence "IDEA(i)" "WORKING(w)" "|" "USED(u@/!)" "DISCARDED(x@/!)"))) - (setq org-todo-keyword-faces - '(("TODO" . org-todo) - ("IDEA" . font-lock-constant-face) - ("WORKING" . font-lock-constant-face) - ("DONE" . org-done) - ("USED" . org-done) - ("DISCARDED" . org-done))) +(setq org-todo-keyword-faces + '(("TODO" . org-todo) + ("IDEA" . font-lock-constant-face) + ("WORKING" . font-lock-constant-face) + ("DONE" . org-done) + ("USED" . org-done) + ("DISCARDED" . org-done))) #+END_SRC -Loggins settings. +Logging settings. #+BEGIN_SRC elisp (setq org-log-done t) @@ -1210,6 +1212,31 @@ Where org files reside. (setq org-agenda-files '("~/org/")) #+END_SRC +** Publishing + +In order to publish files into HTML, I would like to have =htmlize= installed. +This package allows org to export to HTML in a better way (e.g. allowing code +blocks to be converted into HTML as well, so we can properly colorize it). + +#+BEGIN_SRC elisp +(use-package 'htmlize + :ensure t) +#+END_SRC + +And now let's set all the related settings. + +#+BEGIN_SRC elisp +(setq 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) +#+END_SRC + +** Agenda + Custom commands for =org-agenda=. #+BEGIN_SRC elisp @@ -1290,6 +1317,8 @@ The prefix for the different kinds of types being used. (todo . "%c:%t%s"))) #+END_SRC +** Other + Insert a <kbd></kbd> value in org mode. See this [[http://emacs.stackexchange.com/questions/2206/i-want-to-have-the-kbd-tags-for-my-blog-written-in-org-mode][StackExchange answer]]. #+BEGIN_SRC elisp @@ -1588,12 +1617,12 @@ repositories. I have taken lots of pieces from here and there, but most notably: - [[https://github.com/bbatsov/emacs.d][@bbatsov]] - [[https://github.com/aaronbieber/dotfiles][@aaronbieber]] - [[https://github.com/purcell/emacs.d][@purcell]] -- [[https://github.com/sachac/emacs.d][@sachac]] ([[http://pages.sachachua.com/.emacs.d/Sacha.html][HTML version]]) +- [[https://github.com/sachac/.emacs.d][@sachac]] ([[http://pages.sachachua.com/.emacs.d/Sacha.html][HTML version]]) - [[https://github.com/larstvei/dot-emacs][@larstvei]] * License -#+BEGIN_SRC text +#+BEGIN_SRC text :tangle no Copyright (C) 2014-2017 Miquel Sabaté Solà <mikisabate@gmail.com> This program is free software: you can redistribute it and/or modify diff --git a/emacs/org.css b/emacs/org.css new file mode 100644 index 0000000..28bdd61 --- /dev/null +++ b/emacs/org.css @@ -0,0 +1,49 @@ +/* + * This file tries to mimick what we have in the soria theme. That being said, + * the HTML exporter of org-mode is not perfect, so there's tons of stuff that + * are not highlighted in the same way as in GNU Emacs. Anyways, the colors are + * as follows: + * + * soria-purple "#dfafdf" + * soria-darkpurple "#875f87" + * soria-white "#d0d0d0" + * soria-darkgray "#1c1c1c" + * soria-brightgreen "#81c13b" + * soria-green "#b9dc92" + * soria-darkgreen "#2f5361" + * soria-gray "#808080" + * soria-linegray "#3a3a3a" + * soria-statusgray "#4e4e4e" + * soria-statusncgray "#b2b2b2" + * soria-black "#000000" + * soria-whitest "#eeeeee" + * soria-yellow "#ffffaf" + * soria-orange "#d7af87" + * soria-redpastel "#d78787" + * soria-blue "#87afd7" + */ + +.org-src-container pre { + color: #d0d0d0; + background-color: #1c1c1c; + border-left: 0px; +} + +.org-warning { color: #b9dc92; } +.org-keyword { color: #87afd7; } +.org-function-name { color: #87afd7; } +.org-builtin { color: #87afd7; } +.org-constant { color: #ffffaf; } +.org-string { color: #ffffaf; } +.org-doc { color: #808080; } +.org-comment { color: #808080; } +.org-comment-delimiter { color: #808080; } +.org-rainbow-delimiters-depth-1 { color: #81c13b; } +.org-rainbow-delimiters-depth-2 { color: #d78787; } +.org-rainbow-delimiters-depth-3 { color: #d7af87; } +.org-rainbow-delimiters-depth-4 { color: #87afd7; } +.org-rainbow-delimiters-depth-5 { color: #d0d0d0; } +.org-rainbow-delimiters-depth-6 { color: #d0d0d0; } +.org-rainbow-delimiters-depth-7 { color: #d0d0d0; } +.org-rainbow-delimiters-depth-8 { color: #d0d0d0; } +.org-rainbow-delimiters-depth-9 { color: #d0d0d0; } |
