mirror of
https://github.com/SqrtMinusOne/sqrtminusone.github.io.git
synced 2025-12-11 00:03:02 +03:00
deploy: 143e88c08d
This commit is contained in:
parent
3ca031b317
commit
50eaf7f7e2
6 changed files with 145 additions and 13 deletions
|
|
@ -879,8 +879,10 @@
|
|||
<h4 id="ivy-posframe">ivy-posframe</h4>
|
||||
<p><a href="https://github.com/tumashu/ivy-posframe">ivy-posframe</a> is an extension to show ivy candidates in a posframe.</p>
|
||||
<p>Take a look at <a href="https://github.com/ch11ng/exwm/issues/550">this issue</a> in the EXWM repo about setting it up.</p>
|
||||
<p>Edit <span class="timestamp-wrapper"><span class="timestamp"><2022-04-09 Sat></span></span>: This looks nice, but unfortunately too unstable. Disabling it.</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(use-package ivy-posframe
|
||||
</span></span><span style="display:flex;"><span> :straight <span style="color:#66d9ef">t</span>
|
||||
</span></span><span style="display:flex;"><span> :disabled
|
||||
</span></span><span style="display:flex;"><span> :config
|
||||
</span></span><span style="display:flex;"><span> (setq ivy-posframe-parameters <span style="color:#f92672">'</span>((left-fringe <span style="color:#f92672">.</span> <span style="color:#ae81ff">10</span>)
|
||||
</span></span><span style="display:flex;"><span> (right-fringe <span style="color:#f92672">.</span> <span style="color:#ae81ff">10</span>)
|
||||
|
|
@ -904,8 +906,8 @@
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#a6e22e">apply</span> fn args)
|
||||
</span></span><span style="display:flex;"><span> (x-set-mouse-absolute-pixel-position (<span style="color:#a6e22e">car</span> pos)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#a6e22e">cdr</span> pos)))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(advice-add <span style="color:#a6e22e">#'</span>ivy-posframe--read :around <span style="color:#a6e22e">#'</span>my/advise-fn-suspend-follow-mouse)
|
||||
</span></span><span style="display:flex;"><span>(with-eval-after-load <span style="color:#e6db74">'ivy-posframe</span>
|
||||
</span></span><span style="display:flex;"><span> (advice-add <span style="color:#a6e22e">#'</span>ivy-posframe--read :around <span style="color:#a6e22e">#'</span>my/advise-fn-suspend-follow-mouse))
|
||||
</span></span></code></pre></div><h5 id="disable-changing-focus">Disable changing focus</h5>
|
||||
<p>Not sure about that. The cursor occasionally changes focus when I’m exiting posframe, and this doesn’t catch all the cases.</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(defun my/setup-posframe (<span style="color:#66d9ef">&rest</span> args)
|
||||
|
|
@ -929,8 +931,9 @@
|
|||
</span></span><span style="display:flex;"><span> mouse-autoselect-window
|
||||
</span></span><span style="display:flex;"><span> focus-follows-mouse)))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(advice-add <span style="color:#a6e22e">#'</span>posframe--create-posframe :after <span style="color:#a6e22e">#'</span>my/setup-posframe)
|
||||
</span></span><span style="display:flex;"><span>(advice-add <span style="color:#a6e22e">#'</span>ivy-posframe-cleanup :after <span style="color:#a6e22e">#'</span>my/restore-posframe)
|
||||
</span></span><span style="display:flex;"><span>(with-eval-after-load <span style="color:#e6db74">'ivy-posframe</span>
|
||||
</span></span><span style="display:flex;"><span> (advice-add <span style="color:#a6e22e">#'</span>posframe--create-posframe :after <span style="color:#a6e22e">#'</span>my/setup-posframe)
|
||||
</span></span><span style="display:flex;"><span> (advice-add <span style="color:#a6e22e">#'</span>ivy-posframe-cleanup :after <span style="color:#a6e22e">#'</span>my/restore-posframe))
|
||||
</span></span></code></pre></div><h4 id="linux-app">Linux app</h4>
|
||||
<p><code>counsel-linux-app</code> is a counsel interface to select a Linux desktop application.</p>
|
||||
<p>By default, it also shows paths from <code>/gnu/store</code>, so there is a custom formatter function.</p>
|
||||
|
|
|
|||
|
|
@ -411,6 +411,7 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
<li><a href="#apply-ansi-color-codes">Apply ANSI color codes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#executing-stuff">Executing stuff</a></li>
|
||||
<li><a href="#managing-a-literate-programming-project">Managing a literate programming project</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -1018,6 +1019,10 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def <span style="color:#e6db74">"?"</span> <span style="color:#e6db74">'which-key-show-top-level</span>)
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def <span style="color:#e6db74">"E"</span> <span style="color:#e6db74">'eval-expression</span>)
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"SPC"</span> <span style="color:#f92672">'</span>(:wk <span style="color:#e6db74">"second level"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"SPC x"</span> <span style="color:#f92672">'</span>(:wk <span style="color:#e6db74">"ctl-x"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"SPC x"</span> ctl-x-map)
|
||||
</span></span></code></pre></div><p><code>general.el</code> has a nice integration with which-key, so I use that to show more descriptive annotations for certain groups of keybindings (the default annotation is just <code>prefix</code>).</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(my-leader-def
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"a"</span> <span style="color:#f92672">'</span>(:which-key <span style="color:#e6db74">"apps"</span>))
|
||||
|
|
@ -1288,12 +1293,14 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span></code></pre></div><h4 id="snippets">Snippets</h4>
|
||||
<p>A snippet system for Emacs and a collection of pre-built snippets.</p>
|
||||
<p><code>yasnippet-snippets</code> has to be loaded before <code>yasnippet</code> for user snippets to override the pre-built ones.</p>
|
||||
<p>Edit <span class="timestamp-wrapper"><span class="timestamp"><2022-04-11 Mon> </span></span> I don’t really use <code>yasnippet-snippets</code>, so I’d rather write stuff manually.</p>
|
||||
<p>References:</p>
|
||||
<ul>
|
||||
<li><a href="http://joaotavora.github.io/yasnippet/">yasnippet documentation</a></li>
|
||||
</ul>
|
||||
<!--listend-->
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(use-package yasnippet-snippets
|
||||
</span></span><span style="display:flex;"><span> :disabled
|
||||
</span></span><span style="display:flex;"><span> :straight <span style="color:#66d9ef">t</span>)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(use-package yasnippet
|
||||
|
|
@ -1301,9 +1308,17 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> :config
|
||||
</span></span><span style="display:flex;"><span> (setq yas-snippet-dirs
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">`</span>(<span style="color:#f92672">,</span>(<span style="color:#a6e22e">concat</span> (<span style="color:#a6e22e">expand-file-name</span> user-emacs-directory) <span style="color:#e6db74">"snippets"</span>)
|
||||
</span></span><span style="display:flex;"><span> yasnippet-snippets-dir))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#75715e">;; yasnippet-snippets-dir</span>
|
||||
</span></span><span style="display:flex;"><span> ))
|
||||
</span></span><span style="display:flex;"><span> (setq yas-triggers-in-field <span style="color:#66d9ef">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (yas-global-mode <span style="color:#ae81ff">1</span>))
|
||||
</span></span><span style="display:flex;"><span> (yas-global-mode <span style="color:#ae81ff">1</span>)
|
||||
</span></span><span style="display:flex;"><span> (my-leader-def
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'yas-minor-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> :infix <span style="color:#e6db74">"es"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">""</span> <span style="color:#f92672">'</span>(:wk <span style="color:#e6db74">"yasnippet"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"n"</span> <span style="color:#a6e22e">#'</span>yas-new-snippet
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"s"</span> <span style="color:#a6e22e">#'</span>yas-insert-snippet
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"v"</span> <span style="color:#a6e22e">#'</span>yas-visit-snippet-file))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(general-imap <span style="color:#e6db74">"M-TAB"</span> <span style="color:#e6db74">'company-yasnippet</span>)
|
||||
</span></span></code></pre></div><h4 id="other-small-packages">Other small packages</h4>
|
||||
|
|
@ -1509,7 +1524,7 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> :states <span style="color:#f92672">'</span>(<span style="color:#a6e22e">insert</span> normal)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"C-y"</span> <span style="color:#e6db74">'counsel-yank-pop</span>)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def <span style="color:#e6db74">"SPC"</span> <span style="color:#e6db74">'ivy-resume</span>)
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def <span style="color:#e6db74">"SPC SPC"</span> <span style="color:#e6db74">'ivy-resume</span>)
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def <span style="color:#e6db74">"s"</span> <span style="color:#e6db74">'swiper-isearch</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"S"</span> <span style="color:#e6db74">'swiper-all</span>)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
|
|
@ -1560,6 +1575,15 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(my-leader-def
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"h"</span> <span style="color:#f92672">'</span>(:keymap help-map :which-key <span style="color:#e6db74">"help"</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(my-leader-def
|
||||
</span></span><span style="display:flex;"><span> :infix <span style="color:#e6db74">"h"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">""</span> <span style="color:#f92672">'</span>(:which-key <span style="color:#e6db74">"help"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"h"</span> <span style="color:#f92672">'</span>(:keymap help-map :which-key <span style="color:#e6db74">"help-map"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"f"</span> <span style="color:#e6db74">'helpful-function</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"k"</span> <span style="color:#e6db74">'helpful-key</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"v"</span> <span style="color:#e6db74">'helpful-variable</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"o"</span> <span style="color:#e6db74">'helpful-symbol</span>)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(general-define-key
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'help-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"f"</span> <span style="color:#e6db74">'helpful-function</span>
|
||||
|
|
@ -2450,14 +2474,40 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> (my-leader-def
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'jest-test-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> :infix <span style="color:#e6db74">"t"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"t"</span> <span style="color:#e6db74">'jest-test-run-at-point</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"r"</span> <span style="color:#e6db74">'jest-test-run</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"a"</span> <span style="color:#e6db74">'jest-test-run-all-tests</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"t"</span> <span style="color:#a6e22e">#'</span>jest-test-run-at-point
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"d"</span> <span style="color:#a6e22e">#'</span>jest-test-debug-run-at-point
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"r"</span> <span style="color:#a6e22e">#'</span>jest-test-run
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"a"</span> <span style="color:#a6e22e">#'</span>jest-test-run-all-tests)
|
||||
</span></span><span style="display:flex;"><span> (defmacro my/jest-test-with-debug-flags (form)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"Execute FORM with debugger flags set."</span>
|
||||
</span></span><span style="display:flex;"><span> (declare (indent <span style="color:#ae81ff">0</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">`</span>(let ((jest-test-options (seq-concatenate <span style="color:#e6db74">'list</span> jest-test-options (<span style="color:#a6e22e">list</span> <span style="color:#e6db74">"--runInBand"</span>) ))
|
||||
</span></span><span style="display:flex;"><span> (jest-test-npx-options (seq-concatenate <span style="color:#e6db74">'list</span> jest-test-npx-options (<span style="color:#a6e22e">list</span> <span style="color:#e6db74">"--node-options"</span> <span style="color:#e6db74">"--inspect-brk"</span>))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">,</span>form))
|
||||
</span></span><span style="display:flex;"><span> (defun my/jest-test-debug ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"Run the test with an inline debugger attached."</span>
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (my/jest-test-with-debug-flags
|
||||
</span></span><span style="display:flex;"><span> (jest-test-run)))
|
||||
</span></span><span style="display:flex;"><span> (defun my/jest-test-debug-rerun-test ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"Run the test with an inline debugger attached."</span>
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (my/jest-test-with-debug-flags
|
||||
</span></span><span style="display:flex;"><span> (jest-test-rerun-test)))
|
||||
</span></span><span style="display:flex;"><span> (defun my/jest-test-debug-run-at-point ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"Run the test with an inline debugger attached."</span>
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (my/jest-test-with-debug-flags
|
||||
</span></span><span style="display:flex;"><span> (jest-test-run-at-point)))
|
||||
</span></span><span style="display:flex;"><span> (advice-add <span style="color:#a6e22e">#'</span>jest-test-debug :override <span style="color:#a6e22e">#'</span>my/jest-test-debug)
|
||||
</span></span><span style="display:flex;"><span> (advice-add <span style="color:#a6e22e">#'</span>jest-test-debug-rerun-test :override <span style="color:#a6e22e">#'</span>my/jest-test-debug-rerun-test)
|
||||
</span></span><span style="display:flex;"><span> (advice-add <span style="color:#a6e22e">#'</span>jest-test-debug-run-at-point
|
||||
</span></span><span style="display:flex;"><span> :override <span style="color:#a6e22e">#'</span>my/jest-test-debug-run-at-point))
|
||||
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(defun my/jest-test-run-at-point-copy ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"Run the top level describe block of the current buffer's point."</span>
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (let ((filename (jest-test-find-file))
|
||||
</span></span><span style="display:flex;"><span> (example (jest-test-example-at-point)))
|
||||
</span></span><span style="display:flex;"><span> (example (jest-test-unit-at-point)))
|
||||
</span></span><span style="display:flex;"><span> (if (and filename example)
|
||||
</span></span><span style="display:flex;"><span> (jest-test-from-project-directory filename
|
||||
</span></span><span style="display:flex;"><span> (let ((jest-test-options (seq-concatenate <span style="color:#e6db74">'list</span> jest-test-options (<span style="color:#a6e22e">list</span> <span style="color:#e6db74">"-t"</span> example))))
|
||||
|
|
@ -3604,6 +3654,43 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> (if org-babel-ansi-colors-mode
|
||||
</span></span><span style="display:flex;"><span> (add-hook <span style="color:#e6db74">'org-babel-after-execute-hook</span> <span style="color:#a6e22e">#'</span>my/babel-ansi)
|
||||
</span></span><span style="display:flex;"><span> (remove-hook <span style="color:#e6db74">'org-babel-after-execute-hook</span> <span style="color:#a6e22e">#'</span>my/babel-ansi)))
|
||||
</span></span></code></pre></div><h4 id="executing-stuff">Executing stuff</h4>
|
||||
<p>A few convinient functions and keybindings to execute things in an org buffer.</p>
|
||||
<p>First, execute things above and below the point:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(defun my/org-babel-execute-buffer-below (<span style="color:#66d9ef">&optional</span> arg)
|
||||
</span></span><span style="display:flex;"><span> (interactive <span style="color:#e6db74">"P"</span>)
|
||||
</span></span><span style="display:flex;"><span> (org-babel-eval-wipe-error-buffer)
|
||||
</span></span><span style="display:flex;"><span> (let ((<span style="color:#a6e22e">point</span> (<span style="color:#a6e22e">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (org-save-outline-visibility <span style="color:#66d9ef">t</span>
|
||||
</span></span><span style="display:flex;"><span> (org-babel-map-executables <span style="color:#66d9ef">nil</span>
|
||||
</span></span><span style="display:flex;"><span> (when (<span style="color:#a6e22e">>=</span> (<span style="color:#a6e22e">point</span>) <span style="color:#a6e22e">point</span>)
|
||||
</span></span><span style="display:flex;"><span> (if (<span style="color:#a6e22e">memq</span> (org-element-type (org-element-context))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">'</span>(babel-call inline-babel-call))
|
||||
</span></span><span style="display:flex;"><span> (org-babel-lob-execute-maybe)
|
||||
</span></span><span style="display:flex;"><span> (org-babel-execute-src-block arg)))))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(defun my/org-babel-execute-buffer-above (<span style="color:#66d9ef">&optional</span> arg)
|
||||
</span></span><span style="display:flex;"><span> (interactive <span style="color:#e6db74">"P"</span>)
|
||||
</span></span><span style="display:flex;"><span> (org-babel-eval-wipe-error-buffer)
|
||||
</span></span><span style="display:flex;"><span> (let ((<span style="color:#a6e22e">point</span> (<span style="color:#a6e22e">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (org-save-outline-visibility <span style="color:#66d9ef">t</span>
|
||||
</span></span><span style="display:flex;"><span> (org-babel-map-executables <span style="color:#66d9ef">nil</span>
|
||||
</span></span><span style="display:flex;"><span> (when (<span style="color:#a6e22e"><=</span> (<span style="color:#a6e22e">point</span>) <span style="color:#a6e22e">point</span>)
|
||||
</span></span><span style="display:flex;"><span> (if (<span style="color:#a6e22e">memq</span> (org-element-type (org-element-context))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">'</span>(babel-call inline-babel-call))
|
||||
</span></span><span style="display:flex;"><span> (org-babel-lob-execute-maybe)
|
||||
</span></span><span style="display:flex;"><span> (org-babel-execute-src-block arg)))))))
|
||||
</span></span></code></pre></div><p>Some keybindings:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(with-eval-after-load <span style="color:#e6db74">'org-babel</span>
|
||||
</span></span><span style="display:flex;"><span> (general-define-key
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'org-babel-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"B"</span> <span style="color:#a6e22e">#'</span>my/org-babel-execute-buffer-below
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"A"</span> <span style="color:#a6e22e">#'</span>my/org-babel-execute-buffer-above)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> (my-leader-def
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'org-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"SPC b"</span> <span style="color:#f92672">'</span>(:wk <span style="color:#e6db74">"org-babel"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"SPC b"</span> org-babel-map))
|
||||
</span></span></code></pre></div><h4 id="managing-a-literate-programming-project">Managing a literate programming project</h4>
|
||||
<p>A few tricks to do literate programming.</p>
|
||||
<p>I prefer to put the org files to a separate directory (e.g. <code>org</code>). So I’ve come up with the following solution to avoid manually prefixing the <code>:tangle</code> arguments.</p>
|
||||
|
|
@ -4422,6 +4509,17 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\subsubsection{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\subsubsection*{%s}"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\paragraph{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\paragraph*{%s}"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\subparagraph{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\subparagraph*{%s}"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (add-to-list <span style="color:#e6db74">'org-latex-classes</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">'</span>(<span style="color:#e6db74">"org-plain-extreport"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"\\documentclass{extreport}
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">[NO-DEFAULT-PACKAGES]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">[PACKAGES]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">[EXTRA]"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\chapter{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\chapter*{%s}"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\section{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\section*{%s}"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\subsection{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\subsection*{%s}"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\subsubsection{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\subsubsection*{%s}"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#e6db74">"\\paragraph{%s}"</span> <span style="color:#f92672">.</span> <span style="color:#e6db74">"\\paragraph*{%s}"</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#75715e">;; Use beamer without the default packages</span>
|
||||
</span></span><span style="display:flex;"><span> (add-to-list <span style="color:#e6db74">'org-latex-classes</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">'</span>(<span style="color:#e6db74">"org-latex-beamer"</span>
|
||||
|
|
@ -5781,6 +5879,15 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(use-package devdocs
|
||||
</span></span><span style="display:flex;"><span> :straight <span style="color:#66d9ef">t</span>
|
||||
</span></span><span style="display:flex;"><span> :commands (devdocs-install devdocs-lookup)
|
||||
</span></span><span style="display:flex;"><span> :config
|
||||
</span></span><span style="display:flex;"><span> (general-define-key
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'devdocs-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> :states <span style="color:#f92672">'</span>(normal)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"H"</span> <span style="color:#a6e22e">#'</span>devdocs-go-back
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"L"</span> <span style="color:#a6e22e">#'</span>devdocs-go-forward
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"o"</span> <span style="color:#a6e22e">#'</span>devdocs-lookup
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"["</span> <span style="color:#a6e22e">#'</span>devdocs-previous-page
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"]"</span> <span style="color:#a6e22e">#'</span>devdocs-next-page)
|
||||
</span></span><span style="display:flex;"><span> :init
|
||||
</span></span><span style="display:flex;"><span> (my-leader-def
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"he"</span> <span style="color:#a6e22e">#'</span>devdocs-lookup
|
||||
|
|
@ -5814,8 +5921,8 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> :states <span style="color:#f92672">'</span>(normal)
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#f92672">'</span>(sx-question-mode-map)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"gr"</span> <span style="color:#a6e22e">#'</span>sx-question-mode-refresh
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"j"</span> <span style="color:#a6e22e">#'</span>sx-question-mode-next-section
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"k"</span> <span style="color:#a6e22e">#'</span>sx-question-mode-previous-section
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"J"</span> <span style="color:#a6e22e">#'</span>sx-question-mode-next-section
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"K"</span> <span style="color:#a6e22e">#'</span>sx-question-mode-previous-section
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"a"</span> <span style="color:#a6e22e">#'</span>sx-answer
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"e"</span> <span style="color:#a6e22e">#'</span>sx-edit
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"D"</span> <span style="color:#a6e22e">#'</span>sx-delete
|
||||
|
|
@ -5828,7 +5935,11 @@ One thing where Emacs is particularly good is writing Lisp code, e.g. Clojure, C
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"k"</span> <span style="color:#a6e22e">#'</span>sx-question-list-previous
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"S"</span> <span style="color:#a6e22e">#'</span>sx-search
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"m"</span> <span style="color:#a6e22e">#'</span>sx-question-list-mark-read
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"O"</span> <span style="color:#a6e22e">#'</span>sx-question-list-order-by
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"t"</span> <span style="color:#a6e22e">#'</span>sx-tab-switch)
|
||||
</span></span><span style="display:flex;"><span> (my-leader-def
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"hs"</span> <span style="color:#a6e22e">#'</span>sx-search
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"hS"</span> <span style="color:#a6e22e">#'</span>sx-tab-frontpage)
|
||||
</span></span><span style="display:flex;"><span> (my/use-doom-colors
|
||||
</span></span><span style="display:flex;"><span> (sx-question-mode-accepted :foreground (doom-color <span style="color:#e6db74">'green</span>)
|
||||
</span></span><span style="display:flex;"><span> :weight <span style="color:#e6db74">'bold</span>)
|
||||
|
|
|
|||
|
|
@ -453,6 +453,18 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
|
|||
</span></span></code></pre></div><p>Then, the problem with my Guix setup is that Emacs by default doesn’t see the elisp files of notmuch, so here is a small workaround:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(let ((default-directory <span style="color:#e6db74">"/home/pavel/.guix-extra-profiles/mail/mail/share/emacs/site-lisp"</span>))
|
||||
</span></span><span style="display:flex;"><span> (normal-top-level-add-subdirs-to-load-path))
|
||||
</span></span></code></pre></div><p>Some functions to toggle tags:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(defun my/notmuch-toggle-trash ()
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (evil-collection-notmuch-toggle-tag <span style="color:#e6db74">"trash"</span> <span style="color:#e6db74">"search"</span> <span style="color:#a6e22e">#'</span>ignore))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(defun my/notmuch-toggle-inbox ()
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (evil-collection-notmuch-toggle-tag <span style="color:#e6db74">"inbox"</span> <span style="color:#e6db74">"search"</span> <span style="color:#a6e22e">#'</span>ignore))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(defun my/notmuch-toggle-unread ()
|
||||
</span></span><span style="display:flex;"><span> (interactive)
|
||||
</span></span><span style="display:flex;"><span> (evil-collection-notmuch-toggle-tag <span style="color:#e6db74">"unread"</span> <span style="color:#e6db74">"search"</span> <span style="color:#a6e22e">#'</span>ignore))
|
||||
</span></span></code></pre></div><p>Finally the proper notmuch settings:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(use-package notmuch
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#75715e">;; :ensure nil</span>
|
||||
|
|
@ -470,6 +482,12 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
|
|||
</span></span><span style="display:flex;"><span> (setq send-mail-function <span style="color:#a6e22e">#'</span>sendmail-send-it)
|
||||
</span></span><span style="display:flex;"><span> (setq mml-secure-openpgp-sign-with-sender <span style="color:#66d9ef">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (setq notmuch-mua-user-agent-function <span style="color:#e6db74">'notmuch-mua-user-agent-full</span>)
|
||||
</span></span><span style="display:flex;"><span> (general-define-key
|
||||
</span></span><span style="display:flex;"><span> :keymaps <span style="color:#e6db74">'notmuch-search-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> :states <span style="color:#f92672">'</span>(normal)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"d"</span> <span style="color:#a6e22e">#'</span>my/notmuch-toggle-trash
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"i"</span> <span style="color:#a6e22e">#'</span>my/notmuch-toggle-inbox
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"u"</span> <span style="color:#a6e22e">#'</span>my/notmuch-toggle-unread)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#75715e">;; Use org-contacts for completion</span>
|
||||
</span></span><span style="display:flex;"><span> (require <span style="color:#e6db74">'org-contacts</span>)
|
||||
</span></span><span style="display:flex;"><span> (setq notmuch-address-command <span style="color:#e6db74">'as-is</span>)
|
||||
|
|
|
|||
BIN
stats/all.png
BIN
stats/all.png
Binary file not shown.
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 120 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Loading…
Add table
Reference in a new issue