diff options
Diffstat (limited to 'emacs/init.html')
| -rw-r--r-- | emacs/init.html | 141 |
1 files changed, 92 insertions, 49 deletions
diff --git a/emacs/init.html b/emacs/init.html index 10cfed1..ee04228 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-30 Mon 10:37 --> +<!-- 2017-02-02 Thu 15:56 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="generator" content="Org-mode" /> <meta name="author" content="Miquel Sabaté Solà" /> @@ -183,9 +183,10 @@ for the JavaScript code in this tag. </li> <li><a href="#sec-14">IRC</a></li> <li><a href="#sec-15">Languages</a></li> -<li><a href="#sec-16">Misc</a></li> -<li><a href="#sec-17">Credits</a></li> -<li><a href="#sec-18">License</a></li> +<li><a href="#sec-16">WoMan</a></li> +<li><a href="#sec-17">Misc</a></li> +<li><a href="#sec-18">Credits</a></li> +<li><a href="#sec-19">License</a></li> </ul> </div> </div> @@ -821,22 +822,21 @@ buffers. <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">erc-helm-buffer-list</span> <span class="org-rainbow-delimiters-depth-2">()</span> +<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc-helm-buffer-list</span> <span class="org-rainbow-delimiters-depth-2">()</span> <span class="org-doc">"Returns a list with the ERC buffers."</span> <span class="org-rainbow-delimiters-depth-2">(</span>mapcar 'buffer-name <span class="org-rainbow-delimiters-depth-3">(</span>erc-buffer-list<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> helm-source-erc-channel-list +<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">setq</span> mssola-helm-source-erc-channel-list '<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span>name . <span class="org-string">"ERC Channels"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>candidates . erc-helm-buffer-list<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>action . helm-switch-to-buffer<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>candidates . mssola-erc-helm-buffer-list<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>action . switch-to-buffer<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">erc-helm-switch-buffer</span> <span class="org-rainbow-delimiters-depth-2">()</span> - <span class="org-doc">"Use helm to select an active ERC buffer. Replaces erc-iswitchb, which</span> -<span class="org-doc">doesn't work for me."</span> +<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">mssola-erc-helm-switch-buffer</span> <span class="org-rainbow-delimiters-depth-2">()</span> + <span class="org-doc">"Use helm to select an active ERC buffer."</span> <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">interactive</span><span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>helm <span class="org-builtin">:sources</span> '<span class="org-rainbow-delimiters-depth-3">(</span>helm-source-erc-channel-list<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-2">(</span>helm <span class="org-builtin">:sources</span> '<span class="org-rainbow-delimiters-depth-3">(</span>mssola-helm-source-erc-channel-list<span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-builtin">:buffer</span> <span class="org-string">"*helm-erc-channels*"</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> <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> @@ -845,7 +845,7 @@ buffers. <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">if</span> <span class="org-rainbow-delimiters-depth-3">(</span>string= major-mode <span class="org-string">"erc-mode"</span><span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>erc-helm-switch-buffer<span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-3">(</span>mssola-erc-helm-switch-buffer<span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">condition-case</span> nil <span class="org-rainbow-delimiters-depth-4">(</span>helm-projectile-find-file<span class="org-rainbow-delimiters-depth-4">)</span> <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-warning">error</span> @@ -2041,71 +2041,67 @@ I'm giving ERC a chance. First of all, I'm setting up basic stuff. <span class="org-rainbow-delimiters-depth-2">(</span>erc-track-mode t<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-hide-list '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"PART"</span> <span class="org-string">"QUIT"</span> <span class="org-string">"JOIN"</span><span class="org-rainbow-delimiters-depth-3">)</span> + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-hide-list '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"PART"</span><span class="org-rainbow-delimiters-depth-3">)</span> erc-prompt <span class="org-rainbow-delimiters-depth-3">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-4">()</span> <span class="org-rainbow-delimiters-depth-4">(</span>concat <span class="org-rainbow-delimiters-depth-5">(</span>buffer-name<span class="org-rainbow-delimiters-depth-5">)</span> <span class="org-string">">"</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span> erc-track-exclude-types '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">"JOIN"</span> <span class="org-string">"NICK"</span> <span class="org-string">"PART"</span> <span class="org-string">"QUIT"</span> <span class="org-string">"MODE"</span><span class="org-rainbow-delimiters-depth-3">)</span> erc-server-coding-system '<span class="org-rainbow-delimiters-depth-3">(</span>utf-8 . utf-8<span class="org-rainbow-delimiters-depth-3">)</span> erc-kill-buffer-on-part t erc-kill-queries-on-quit t erc-kill-server-buffer-on-quit t - erc-fill-column 130 + erc-fill-column 100 + erc-fill-prefix <span class="org-string">""</span> erc-log-channels t erc-log-write-after-insert t erc-log-insert-log-on-open nil - erc-timestamp-format <span class="org-string">"%s "</span> - erc-hide-timestamps t + erc-log-channels-directory <span class="org-string">"~/.emacs.d/erc/"</span> + erc-timestamp-format <span class="org-string">"[%H:%M] "</span> erc-insert-timestamp-function 'erc-insert-timestamp-left erc-insert-away-timestamp-function 'erc-insert-timestamp-left + erc-hide-timestamps nil erc-whowas-on-nosuchnick t erc-public-away-p nil erc-echo-notice-always-hook '<span class="org-rainbow-delimiters-depth-3">(</span>erc-echo-notice-in-minibuffer<span class="org-rainbow-delimiters-depth-3">)</span> erc-auto-set-away nil erc-autoaway-message <span class="org-string">"%i seconds out..."</span> erc-away-nickname <span class="org-string">"msabate"</span> - erc-log-channels-directory <span class="org-string">"~/.emacs.d/erc/"</span> erc-enable-logging t erc-query-on-unjoined-chan-privmsg t<span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-autojoin-channels-alist - '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"*.freenode.net"</span> <span class="org-string">"#gnu"</span> <span class="org-string">"#emacs"</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"*.suse.de"</span> <span class="org-string">"#suse"</span> <span class="org-string">"#docker"</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + '<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"irc.freenode.net"</span> <span class="org-string">"#gnu"</span> <span class="org-string">"#emacs"</span><span class="org-rainbow-delimiters-depth-4">)</span> + <span class="org-rainbow-delimiters-depth-4">(</span><span class="org-string">"irc.suse.de"</span> <span class="org-string">"#suse"</span> <span class="org-string">"#docker"</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> </pre> </div> <p> -I want to have a desktop notification whenever someone mentions my name. +Use the <code>erc-hl-nicks</code> package, so highlight support for nicknames is better. </p> <div class="org-src-container"> -<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">require</span> '<span class="org-constant">notifications</span><span class="org-rainbow-delimiters-depth-1">)</span> - -<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">defun</span> <span class="org-function-name">erc-global-notify</span> <span class="org-rainbow-delimiters-depth-2">(</span>match-type nick message<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-doc">"Notify when a message is recieved."</span> - - <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">when</span> <span class="org-rainbow-delimiters-depth-3">(</span>eq match-type 'current-nick<span class="org-rainbow-delimiters-depth-3">)</span> - <span class="org-rainbow-delimiters-depth-3">(</span>notifications-notify - <span class="org-builtin">:title</span> nick - <span class="org-builtin">:body</span> message - <span class="org-builtin">:app-icon</span> <span class="org-rainbow-delimiters-depth-4">(</span>concat - <span class="org-string">"/usr/share/emacs/"</span> - <span class="org-rainbow-delimiters-depth-5">(</span>format <span class="org-string">"%s.%s"</span> emacs-major-version emacs-minor-version<span class="org-rainbow-delimiters-depth-5">)</span> - <span class="org-string">"/etc/images/icons/hicolor/24x24/apps/emacs.png"</span><span class="org-rainbow-delimiters-depth-4">)</span> - <span class="org-builtin">:urgency</span> 'low<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">when</span> <span class="org-rainbow-delimiters-depth-2">(</span>boundp 'dbus-compiled-version<span class="org-rainbow-delimiters-depth-2">)</span> - <span class="org-rainbow-delimiters-depth-2">(</span>add-hook 'erc-text-matched-hook 'erc-global-notify<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">use-package</span> <span class="org-constant">erc-hl-nicks</span> + <span class="org-builtin">:ensure</span> t + <span class="org-builtin">:init</span> + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">with-eval-after-load</span> 'erc + <span class="org-rainbow-delimiters-depth-3">(</span>add-to-list 'erc-modules 'hl-nicks<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> <p> -Use the <code>erc-hl-nicks</code> package, so highlight support for nicknames is better. +I want to have a desktop notification whenever someone mentions my name. For +this, I'm using the <code>erc-notifications</code> package which is built in ERC since +GNU Emacs 24.3. </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">erc-hl-nicks</span> - <span class="org-builtin">:ensure</span> t<span class="org-rainbow-delimiters-depth-1">)</span> +<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> 'erc + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">setq</span> erc-notifications-icon + <span class="org-rainbow-delimiters-depth-3">(</span>concat + <span class="org-string">"/usr/share/emacs/"</span> + <span class="org-rainbow-delimiters-depth-4">(</span>format <span class="org-string">"%s.%s"</span> emacs-major-version emacs-minor-version<span class="org-rainbow-delimiters-depth-4">)</span> + <span class="org-string">"/etc/images/icons/hicolor/24x24/apps/emacs.png"</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span> + <span class="org-rainbow-delimiters-depth-2">(</span>add-to-list 'erc-modules 'notifications<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> </pre> </div> @@ -2141,6 +2137,18 @@ At this point, we can safely update all the loaded ERC modules. </div> <p> +According to the <a href="https://www.emacswiki.org/emacs/ErcFilling">wiki</a>, <code>auto-fill-mode</code> should be disabled if I'm using +<code>erc-fill-mode</code>. +</p> + +<div class="org-src-container"> + +<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span>add-hook 'erc-mode-hook + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">lambda</span> <span class="org-rainbow-delimiters-depth-3">()</span> <span class="org-rainbow-delimiters-depth-3">(</span>auto-fill-mode 0<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +</pre> +</div> + +<p> And now define a function to connect to both IRC servers. </p> @@ -2449,9 +2457,44 @@ criteria really). </div> <div id="outline-container-sec-16" class="outline-2"> -<h2 id="sec-16">Misc</h2> +<h2 id="sec-16">WoMan</h2> <div class="outline-text-2" id="text-16"> <p> +<code>WoMan</code> is a package that is included inside of GNU Emacs by default, and that +takes care of visualizing man pages. Let's properly setup Evil mode for this: +</p> + +<div class="org-src-container"> + +<pre class="src src-elisp"><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-keyword">with-eval-after-load</span> <span class="org-string">"evil"</span> + <span class="org-rainbow-delimiters-depth-2">(</span>evil-set-initial-state 'woman-mode 'normal<span class="org-rainbow-delimiters-depth-2">)</span> + <span class="org-rainbow-delimiters-depth-2">(</span><span class="org-keyword">evil-define-key</span> 'normal woman-mode-map + <span class="org-string">"J"</span> 'Man-next-section + <span class="org-string">"K"</span> 'Man-previous-section + <span class="org-string">"\C-h"</span> 'evil-window-left + <span class="org-string">"\C-l"</span> 'evil-window-right + <span class="org-string">"\C-j"</span> 'evil-window-down + <span class="org-string">"\C-k"</span> 'evil-window-up + <span class="org-string">"\C-u"</span> 'evil-scroll-up<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> +</pre> +</div> + +<p> +Finally, I want man pages to fill all the frame: +</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> woman-fill-frame t<span class="org-rainbow-delimiters-depth-1">)</span> +</pre> +</div> +</div> +</div> + +<div id="outline-container-sec-17" class="outline-2"> +<h2 id="sec-17">Misc</h2> +<div class="outline-text-2" id="text-17"> +<p> Install a set of useful functions from <a href="https://github.com/bbatsov">@bbatsov</a>. The bindings are following Emacs style instead of being more Vim-like on purpose (I don't want to put too many things into my leader and these shortcuts look sensible to me). @@ -2468,9 +2511,9 @@ too many things into my leader and these shortcuts look sensible to me). </div> </div> </div> -<div id="outline-container-sec-17" class="outline-2"> -<h2 id="sec-17">Credits</h2> -<div class="outline-text-2" id="text-17"> +<div id="outline-container-sec-18" class="outline-2"> +<h2 id="sec-18">Credits</h2> +<div class="outline-text-2" id="text-18"> <p> I've built this file by simply scavenging from other people's emacs.d/dotfiles repositories. I have taken lots of pieces from here and there, but most notably: @@ -2495,9 +2538,9 @@ repositories. I have taken lots of pieces from here and there, but most notably: </div> </div> -<div id="outline-container-sec-18" class="outline-2"> -<h2 id="sec-18">License</h2> -<div class="outline-text-2" id="text-18"> +<div id="outline-container-sec-19" class="outline-2"> +<h2 id="sec-19">License</h2> +<div class="outline-text-2" id="text-19"> <div class="org-src-container"> <pre class="src src-text">Copyright (C) 2014-2017 Miquel Sabaté Solà <a href="mailto:mikisabate%40gmail.com"><mikisabate@gmail.com></a> @@ -2521,7 +2564,7 @@ along with this program. If not, see <a href="http://www.gnu.org/licenses/">< </div> <div id="postamble" class="status"> <p class="author">Author: Miquel Sabaté Solà</p> -<p class="date">Created: 2017-01-30 Mon 10:37</p> +<p class="date">Created: 2017-02-02 Thu 15:56</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> |
