Human Readable Emacs Configuration using Org mode
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1918 lines
236 KiB

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  5. <head>
  6. <!-- 2019-02-13 Wed 14:20 -->
  7. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1" />
  9. <title>Emacs Configuration</title>
  10. <meta name="generator" content="Org mode" />
  11. <meta name="author" content="Levi Olson" />
  12. <style type="text/css">
  13. <!--/*--><![CDATA[/*><!--*/
  14. .title { text-align: center;
  15. margin-bottom: .2em; }
  16. .subtitle { text-align: center;
  17. font-size: medium;
  18. font-weight: bold;
  19. margin-top:0; }
  20. .todo { font-family: monospace; color: red; }
  21. .done { font-family: monospace; color: green; }
  22. .priority { font-family: monospace; color: orange; }
  23. .tag { background-color: #eee; font-family: monospace;
  24. padding: 2px; font-size: 80%; font-weight: normal; }
  25. .timestamp { color: #bebebe; }
  26. .timestamp-kwd { color: #5f9ea0; }
  27. .org-right { margin-left: auto; margin-right: 0px; text-align: right; }
  28. .org-left { margin-left: 0px; margin-right: auto; text-align: left; }
  29. .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  30. .underline { text-decoration: underline; }
  31. #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  32. p.verse { margin-left: 3%; }
  33. pre {
  34. border: 1px solid #ccc;
  35. box-shadow: 3px 3px 3px #eee;
  36. padding: 8pt;
  37. font-family: monospace;
  38. overflow: auto;
  39. margin: 1.2em;
  40. }
  41. pre.src {
  42. position: relative;
  43. overflow: visible;
  44. padding-top: 1.2em;
  45. }
  46. pre.src:before {
  47. display: none;
  48. position: absolute;
  49. background-color: white;
  50. top: -10px;
  51. right: 10px;
  52. padding: 3px;
  53. border: 1px solid black;
  54. }
  55. pre.src:hover:before { display: inline;}
  56. /* Languages per Org manual */
  57. pre.src-asymptote:before { content: 'Asymptote'; }
  58. pre.src-awk:before { content: 'Awk'; }
  59. pre.src-C:before { content: 'C'; }
  60. /* pre.src-C++ doesn't work in CSS */
  61. pre.src-clojure:before { content: 'Clojure'; }
  62. pre.src-css:before { content: 'CSS'; }
  63. pre.src-D:before { content: 'D'; }
  64. pre.src-ditaa:before { content: 'ditaa'; }
  65. pre.src-dot:before { content: 'Graphviz'; }
  66. pre.src-calc:before { content: 'Emacs Calc'; }
  67. pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  68. pre.src-fortran:before { content: 'Fortran'; }
  69. pre.src-gnuplot:before { content: 'gnuplot'; }
  70. pre.src-haskell:before { content: 'Haskell'; }
  71. pre.src-hledger:before { content: 'hledger'; }
  72. pre.src-java:before { content: 'Java'; }
  73. pre.src-js:before { content: 'Javascript'; }
  74. pre.src-latex:before { content: 'LaTeX'; }
  75. pre.src-ledger:before { content: 'Ledger'; }
  76. pre.src-lisp:before { content: 'Lisp'; }
  77. pre.src-lilypond:before { content: 'Lilypond'; }
  78. pre.src-lua:before { content: 'Lua'; }
  79. pre.src-matlab:before { content: 'MATLAB'; }
  80. pre.src-mscgen:before { content: 'Mscgen'; }
  81. pre.src-ocaml:before { content: 'Objective Caml'; }
  82. pre.src-octave:before { content: 'Octave'; }
  83. pre.src-org:before { content: 'Org mode'; }
  84. pre.src-oz:before { content: 'OZ'; }
  85. pre.src-plantuml:before { content: 'Plantuml'; }
  86. pre.src-processing:before { content: 'Processing.js'; }
  87. pre.src-python:before { content: 'Python'; }
  88. pre.src-R:before { content: 'R'; }
  89. pre.src-ruby:before { content: 'Ruby'; }
  90. pre.src-sass:before { content: 'Sass'; }
  91. pre.src-scheme:before { content: 'Scheme'; }
  92. pre.src-screen:before { content: 'Gnu Screen'; }
  93. pre.src-sed:before { content: 'Sed'; }
  94. pre.src-sh:before { content: 'shell'; }
  95. pre.src-sql:before { content: 'SQL'; }
  96. pre.src-sqlite:before { content: 'SQLite'; }
  97. /* additional languages in org.el's org-babel-load-languages alist */
  98. pre.src-forth:before { content: 'Forth'; }
  99. pre.src-io:before { content: 'IO'; }
  100. pre.src-J:before { content: 'J'; }
  101. pre.src-makefile:before { content: 'Makefile'; }
  102. pre.src-maxima:before { content: 'Maxima'; }
  103. pre.src-perl:before { content: 'Perl'; }
  104. pre.src-picolisp:before { content: 'Pico Lisp'; }
  105. pre.src-scala:before { content: 'Scala'; }
  106. pre.src-shell:before { content: 'Shell Script'; }
  107. pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  108. /* additional language identifiers per "defun org-babel-execute"
  109. in ob-*.el */
  110. pre.src-cpp:before { content: 'C++'; }
  111. pre.src-abc:before { content: 'ABC'; }
  112. pre.src-coq:before { content: 'Coq'; }
  113. pre.src-groovy:before { content: 'Groovy'; }
  114. /* additional language identifiers from org-babel-shell-names in
  115. ob-shell.el: ob-shell is the only babel language using a lambda to put
  116. the execution function name together. */
  117. pre.src-bash:before { content: 'bash'; }
  118. pre.src-csh:before { content: 'csh'; }
  119. pre.src-ash:before { content: 'ash'; }
  120. pre.src-dash:before { content: 'dash'; }
  121. pre.src-ksh:before { content: 'ksh'; }
  122. pre.src-mksh:before { content: 'mksh'; }
  123. pre.src-posh:before { content: 'posh'; }
  124. /* Additional Emacs modes also supported by the LaTeX listings package */
  125. pre.src-ada:before { content: 'Ada'; }
  126. pre.src-asm:before { content: 'Assembler'; }
  127. pre.src-caml:before { content: 'Caml'; }
  128. pre.src-delphi:before { content: 'Delphi'; }
  129. pre.src-html:before { content: 'HTML'; }
  130. pre.src-idl:before { content: 'IDL'; }
  131. pre.src-mercury:before { content: 'Mercury'; }
  132. pre.src-metapost:before { content: 'MetaPost'; }
  133. pre.src-modula-2:before { content: 'Modula-2'; }
  134. pre.src-pascal:before { content: 'Pascal'; }
  135. pre.src-ps:before { content: 'PostScript'; }
  136. pre.src-prolog:before { content: 'Prolog'; }
  137. pre.src-simula:before { content: 'Simula'; }
  138. pre.src-tcl:before { content: 'tcl'; }
  139. pre.src-tex:before { content: 'TeX'; }
  140. pre.src-plain-tex:before { content: 'Plain TeX'; }
  141. pre.src-verilog:before { content: 'Verilog'; }
  142. pre.src-vhdl:before { content: 'VHDL'; }
  143. pre.src-xml:before { content: 'XML'; }
  144. pre.src-nxml:before { content: 'XML'; }
  145. /* add a generic configuration mode; LaTeX export needs an additional
  146. (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  147. pre.src-conf:before { content: 'Configuration File'; }
  148. table { border-collapse:collapse; }
  149. caption.t-above { caption-side: top; }
  150. caption.t-bottom { caption-side: bottom; }
  151. td, th { vertical-align:top; }
  152. th.org-right { text-align: center; }
  153. th.org-left { text-align: center; }
  154. th.org-center { text-align: center; }
  155. td.org-right { text-align: right; }
  156. td.org-left { text-align: left; }
  157. td.org-center { text-align: center; }
  158. dt { font-weight: bold; }
  159. .footpara { display: inline; }
  160. .footdef { margin-bottom: 1em; }
  161. .figure { padding: 1em; }
  162. .figure p { text-align: center; }
  163. .inlinetask {
  164. padding: 10px;
  165. border: 2px solid gray;
  166. margin: 10px;
  167. background: #ffffcc;
  168. }
  169. #org-div-home-and-up
  170. { text-align: right; font-size: 70%; white-space: nowrap; }
  171. textarea { overflow-x: auto; }
  172. .linenr { font-size: smaller }
  173. .code-highlighted { background-color: #ffff00; }
  174. .org-info-js_info-navigation { border-style: none; }
  175. #org-info-js_console-label
  176. { font-size: 10px; font-weight: bold; white-space: nowrap; }
  177. .org-info-js_search-highlight
  178. { background-color: #ffff00; color: #000000; font-weight: bold; }
  179. .org-svg { width: 90%; }
  180. /*]]>*/-->
  181. </style>
  182. <link rel="stylesheet" type="text/css" href="public/style.css" />
  183. <script type="text/javascript">
  184. /*
  185. @licstart The following is the entire license notice for the
  186. JavaScript code in this tag.
  187. Copyright (C) 2012-2018 Free Software Foundation, Inc.
  188. The JavaScript code in this tag is free software: you can
  189. redistribute it and/or modify it under the terms of the GNU
  190. General Public License (GNU GPL) as published by the Free Software
  191. Foundation, either version 3 of the License, or (at your option)
  192. any later version. The code is distributed WITHOUT ANY WARRANTY;
  193. without even the implied warranty of MERCHANTABILITY or FITNESS
  194. FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
  195. As additional permission under GNU GPL version 3 section 7, you
  196. may distribute non-source (e.g., minimized or compacted) forms of
  197. that code without the copy of the GNU GPL normally required by
  198. section 4, provided you include this license notice and a URL
  199. through which recipients can access the Corresponding Source.
  200. @licend The above is the entire license notice
  201. for the JavaScript code in this tag.
  202. */
  203. <!--/*--><![CDATA[/*><!--*/
  204. function CodeHighlightOn(elem, id)
  205. {
  206. var target = document.getElementById(id);
  207. if(null != target) {
  208. elem.cacheClassElem = elem.className;
  209. elem.cacheClassTarget = target.className;
  210. target.className = "code-highlighted";
  211. elem.className = "code-highlighted";
  212. }
  213. }
  214. function CodeHighlightOff(elem, id)
  215. {
  216. var target = document.getElementById(id);
  217. if(elem.cacheClassElem)
  218. elem.className = elem.cacheClassElem;
  219. if(elem.cacheClassTarget)
  220. target.className = elem.cacheClassTarget;
  221. }
  222. /*]]>*///-->
  223. </script>
  224. </head>
  225. <body>
  226. <div id="content">
  227. <h1 class="title">Emacs Configuration</h1>
  228. <div id="table-of-contents">
  229. <h2>Table of Contents</h2>
  230. <div id="text-table-of-contents">
  231. <ul>
  232. <li><a href="#org16a3131">1. Summary</a></li>
  233. <li><a href="#orgd2454b8">2. Required Magic</a>
  234. <ul>
  235. <li><a href="#orge7f7842">2.1. Lexical Binding</a></li>
  236. <li><a href="#orgeac8741">2.2. The Magical Glue</a></li>
  237. </ul>
  238. </li>
  239. <li><a href="#orgdd7a8f9">3. Config</a>
  240. <ul>
  241. <li><a href="#orgef94b48">3.1. Packages</a></li>
  242. <li><a href="#org9ed8991">3.2. Better Defaults</a></li>
  243. <li><a href="#orgf243037">3.3. Splash Screen</a></li>
  244. <li><a href="#orgb5be00a">3.4. Basic Customization</a></li>
  245. <li><a href="#org562681e">3.5. Tools</a>
  246. <ul>
  247. <li><a href="#org109467d">3.5.1. General</a></li>
  248. <li><a href="#orgd250d2a">3.5.2. Company</a></li>
  249. <li><a href="#org9528493">3.5.3. Diminish</a></li>
  250. <li><a href="#org749f012">3.5.4. Dired</a></li>
  251. <li><a href="#org8d51860">3.5.5. Ivy</a></li>
  252. <li><a href="#org2368349">3.5.6. Magit</a></li>
  253. <li><a href="#org1a832bf">3.5.7. Projectile</a></li>
  254. </ul>
  255. </li>
  256. <li><a href="#org1fb6ffa">3.6. Development Specific</a>
  257. <ul>
  258. <li><a href="#org1702ed3">3.6.1. General</a></li>
  259. <li><a href="#org4730a23">3.6.2. Python</a></li>
  260. <li><a href="#org99bcdb6">3.6.3. Go</a></li>
  261. <li><a href="#orgdb1f163">3.6.4. TypeScript</a>
  262. <ul>
  263. <li><a href="#org8ffb8dc">3.6.4.1. TSX</a></li>
  264. <li><a href="#orgebde919">3.6.4.2. JSX</a></li>
  265. </ul>
  266. </li>
  267. <li><a href="#org25376dc">3.6.5. Org</a></li>
  268. </ul>
  269. </li>
  270. <li><a href="#org248d7b2">3.7. Functions</a></li>
  271. <li><a href="#org094bf6b">3.8. Bindings</a></li>
  272. <li><a href="#orgeb794c7">3.9. UI</a>
  273. <ul>
  274. <li><a href="#org7e266c5">3.9.1. Modeline</a></li>
  275. </ul>
  276. </li>
  277. </ul>
  278. </li>
  279. </ul>
  280. </div>
  281. </div>
  282. <div id="outline-container-org16a3131" class="outline-2">
  283. <h2 id="org16a3131"><span class="section-number-2">1</span> Summary</h2>
  284. <div class="outline-text-2" id="text-1">
  285. <p>
  286. I've really been wanting to have a nicely formatted emacs config file and this is my attempt at it.
  287. </p>
  288. </div>
  289. </div>
  290. <div id="outline-container-orgd2454b8" class="outline-2">
  291. <h2 id="orgd2454b8"><span class="section-number-2">2</span> Required Magic</h2>
  292. <div class="outline-text-2" id="text-2">
  293. </div>
  294. <div id="outline-container-orge7f7842" class="outline-3">
  295. <h3 id="orge7f7842"><span class="section-number-3">2.1</span> Lexical Binding</h3>
  296. <div class="outline-text-3" id="text-2-1">
  297. <div class="org-src-container">
  298. <pre class="src src-emacs-lisp"><span style="color: #3e4451;">;;; </span><span style="color: #545862;">-*- lexical-binding: t -*-</span>
  299. <span style="color: #3e4451;">;;; </span><span style="color: #545862;">DO NOT EDIT THIS FILE DIRECTLY</span>
  300. <span style="color: #3e4451;">;;; </span><span style="color: #545862;">EDIT ~init.org~ instead</span>
  301. </pre>
  302. </div>
  303. </div>
  304. </div>
  305. <div id="outline-container-orgeac8741" class="outline-3">
  306. <h3 id="orgeac8741"><span class="section-number-3">2.2</span> The Magical Glue</h3>
  307. <div class="outline-text-3" id="text-2-2">
  308. <p>
  309. The following auto compiles the emacs-lisp within the <code>init.org</code> file.
  310. Simply run `org-babel-tangle` to make it RAIN!
  311. </p>
  312. <div class="org-src-container">
  313. <pre class="src src-emacs-lisp"><span style="color: #3e4451;">;; </span><span style="color: #545862;">(setq byte-compile-warnings nil)</span>
  314. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">tangle-init</span> <span style="color: #61afef;">()</span>
  315. <span style="color: #565c64;">"If the current buffer is 'init.org' the code-blocks are tangled, and the tangled file is compiled."</span>
  316. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span>equal <span style="color: #98c379;">(</span>buffer-file-name<span style="color: #98c379;">)</span>
  317. <span style="color: #98c379;">(</span>expand-file-name <span style="color: #e5c07b;">(</span>concat user-emacs-directory <span style="color: #98c379;">"init.org"</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  318. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Avoid running hooks when tangling.</span>
  319. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>prog-mode-hook nil<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  320. <span style="color: #98c379;">(</span>org-babel-tangle<span style="color: #98c379;">)</span>
  321. <span style="color: #98c379;">(</span>byte-compile-file <span style="color: #e5c07b;">(</span>concat user-emacs-directory <span style="color: #98c379;">"init.el"</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  322. <span style="color: #c678dd;">(</span>add-hook 'after-save-hook 'tangle-init<span style="color: #c678dd;">)</span>
  323. </pre>
  324. </div>
  325. </div>
  326. </div>
  327. </div>
  328. <div id="outline-container-orgdd7a8f9" class="outline-2">
  329. <h2 id="orgdd7a8f9"><span class="section-number-2">3</span> Config</h2>
  330. <div class="outline-text-2" id="text-3">
  331. </div>
  332. <div id="outline-container-orgef94b48" class="outline-3">
  333. <h3 id="orgef94b48"><span class="section-number-3">3.1</span> Packages</h3>
  334. <div class="outline-text-3" id="text-3-1">
  335. <div class="org-src-container">
  336. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">package</span><span style="color: #c678dd;">)</span>
  337. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">my-packages</span>
  338. '<span style="color: #61afef;">(</span>all-the-icons
  339. anzu
  340. base16-theme
  341. better-defaults
  342. company
  343. company-go
  344. counsel
  345. counsel-projectile
  346. dash-at-point
  347. diminish
  348. dockerfile-mode
  349. doom-themes
  350. ein
  351. eldoc-eval
  352. elpy
  353. expand-region
  354. fic-mode
  355. gitignore-mode
  356. go-mode
  357. go-playground
  358. gorepl-mode
  359. flycheck
  360. iedit
  361. ivy
  362. ivy-hydra
  363. json-mode
  364. magit
  365. material-theme
  366. multiple-cursors
  367. projectile
  368. py-autopep8
  369. rainbow-delimiters
  370. shrink-path
  371. tide
  372. typescript-mode
  373. use-package
  374. web-mode
  375. which-key<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  376. <span style="color: #c678dd;">(</span>add-to-list 'package-archives '<span style="color: #61afef;">(</span><span style="color: #98c379;">"melpa"</span> . <span style="color: #98c379;">"http://melpa.org/packages/"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  377. <span style="color: #c678dd;">(</span>add-to-list 'package-archives '<span style="color: #61afef;">(</span><span style="color: #98c379;">"melpa-stable"</span> . <span style="color: #98c379;">"http://stable.melpa.org/packages/"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  378. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">when</span> <span style="color: #61afef;">(</span>not package-archive-contents<span style="color: #61afef;">)</span>
  379. <span style="color: #61afef;">(</span>package-refresh-contents<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  380. <span style="color: #c678dd;">(</span>package-initialize<span style="color: #c678dd;">)</span>
  381. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">dolist</span> <span style="color: #61afef;">(</span>p my-packages<span style="color: #61afef;">)</span>
  382. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span>not <span style="color: #98c379;">(</span>package-installed-p p<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  383. <span style="color: #56b6c2;">(</span>package-install p<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  384. </pre>
  385. </div>
  386. </div>
  387. </div>
  388. <div id="outline-container-org9ed8991" class="outline-3">
  389. <h3 id="org9ed8991"><span class="section-number-3">3.2</span> Better Defaults</h3>
  390. <div class="outline-text-3" id="text-3-2">
  391. <div class="org-src-container">
  392. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">better-defaults</span><span style="color: #c678dd;">)</span>
  393. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Instead of the annoying giant warning icon, just flash the modeline.</span>
  394. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(this happens when you do something like C-g)</span>
  395. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> ring-bell-function
  396. <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span>
  397. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>orig-fg <span style="color: #d19a66;">(</span>face-foreground 'mode-line<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  398. <span style="color: #98c379;">(</span>set-face-foreground 'mode-line <span style="color: #98c379;">"#F2804F"</span><span style="color: #98c379;">)</span>
  399. <span style="color: #98c379;">(</span>run-with-idle-timer 0.1 nil
  400. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #d19a66;">(</span>fg<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span>set-face-foreground 'mode-line fg<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  401. orig-fg<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  402. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">set-frame-size-according-to-resolution</span> <span style="color: #61afef;">()</span>
  403. <span style="color: #565c64;">"Set the Emacs window size on startup."</span>
  404. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  405. <span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> window-system
  406. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">progn</span>
  407. <span style="color: #3e4451;">;; </span><span style="color: #545862;">WIDTH</span>
  408. <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>&gt; <span style="color: #d19a66;">(</span>x-display-pixel-width<span style="color: #d19a66;">)</span> 1280<span style="color: #e5c07b;">)</span>
  409. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Large Screen (only show 120 cols)</span>
  410. <span style="color: #e5c07b;">(</span>add-to-list 'default-frame-alist <span style="color: #d19a66;">(</span>cons 'width 240<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  411. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Small Screen (fill window)</span>
  412. <span style="color: #e5c07b;">(</span>add-to-list 'default-frame-alist <span style="color: #d19a66;">(</span>cons 'width <span style="color: #e06c75;">(</span>/ <span style="color: #545862;">(</span>x-display-pixel-width<span style="color: #545862;">)</span> <span style="color: #545862;">(</span>frame-char-width<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  413. <span style="color: #3e4451;">;; </span><span style="color: #545862;">HEIGHT</span>
  414. <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>&gt; <span style="color: #d19a66;">(</span>x-display-pixel-height<span style="color: #d19a66;">)</span> 1080<span style="color: #e5c07b;">)</span>
  415. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Large Screen (only fill half screen)</span>
  416. <span style="color: #e5c07b;">(</span>add-to-list 'default-frame-alist <span style="color: #d19a66;">(</span>cons 'height <span style="color: #e06c75;">(</span>/ <span style="color: #545862;">(</span>/ <span style="color: #abb2bf;">(</span>x-display-pixel-height<span style="color: #abb2bf;">)</span> 2<span style="color: #545862;">)</span>
  417. <span style="color: #545862;">(</span>frame-char-height<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  418. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Small Screen (fill window)</span>
  419. <span style="color: #e5c07b;">(</span>add-to-list 'default-frame-alist <span style="color: #d19a66;">(</span>cons 'height <span style="color: #e06c75;">(</span>/ <span style="color: #545862;">(</span>x-display-pixel-height<span style="color: #545862;">)</span> <span style="color: #545862;">(</span>frame-char-height<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  420. <span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  421. <span style="color: #c678dd;">(</span>set-frame-size-according-to-resolution<span style="color: #c678dd;">)</span>
  422. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">window-px-width</span> <span style="color: #61afef;">()</span>
  423. <span style="color: #565c64;">"Get the width of the Emacs window in pixels."</span>
  424. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  425. <span style="color: #61afef;">(</span>* <span style="color: #56b6c2;">(</span>* <span style="color: #98c379;">(</span>window-total-width<span style="color: #98c379;">)</span> 2.874<span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>frame-char-width<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  426. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">window-px-left-pos</span> <span style="color: #61afef;">()</span>
  427. <span style="color: #565c64;">"Calculate the left position of the Emacs window."</span>
  428. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  429. <span style="color: #61afef;">(</span>/ <span style="color: #56b6c2;">(</span>- <span style="color: #98c379;">(</span>x-display-pixel-width<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>window-px-width<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span> 2<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  430. <span style="color: #c678dd;">(</span>add-to-list 'default-frame-alist <span style="color: #61afef;">(</span>cons 'top 0<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  431. <span style="color: #c678dd;">(</span>add-to-list 'default-frame-alist <span style="color: #61afef;">(</span>cons 'left 1000<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  432. </pre>
  433. </div>
  434. </div>
  435. </div>
  436. <div id="outline-container-orgf243037" class="outline-3">
  437. <h3 id="orgf243037"><span class="section-number-3">3.3</span> Splash Screen</h3>
  438. <div class="outline-text-3" id="text-3-3">
  439. <div class="org-src-container">
  440. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> inhibit-splash-screen nil
  441. fancy-splash-image <span style="color: #98c379;">"~/.emacs.d/public/emacs-logo.png"</span>
  442. fancy-splash-image-file <span style="color: #98c379;">"~/.emacs.d/public/emacs-logo.png"</span><span style="color: #c678dd;">)</span>
  443. </pre>
  444. </div>
  445. </div>
  446. </div>
  447. <div id="outline-container-orgb5be00a" class="outline-3">
  448. <h3 id="orgb5be00a"><span class="section-number-3">3.4</span> Basic Customization</h3>
  449. <div class="outline-text-3" id="text-3-4">
  450. <div class="org-src-container">
  451. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">backup-dir</span> <span style="color: #61afef;">(</span>expand-file-name <span style="color: #98c379;">"~/.emacs.d/backup/"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  452. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">autosave-dir</span> <span style="color: #61afef;">(</span>expand-file-name <span style="color: #98c379;">"~/.emacs.d/autosave/"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  453. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> initial-scratch-message nil
  454. backup-directory-alist <span style="color: #61afef;">(</span>list <span style="color: #56b6c2;">(</span>cons <span style="color: #98c379;">".*"</span> backup-dir<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  455. auto-save-list-file-prefix autosave-dir
  456. auto-save-file-name-transforms `<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span><span style="color: #98c379;">".*"</span> ,autosave-dir t<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  457. <span style="color: #c678dd;">(</span>menu-bar-mode 0<span style="color: #c678dd;">)</span>
  458. <span style="color: #c678dd;">(</span>scroll-bar-mode 0<span style="color: #c678dd;">)</span>
  459. <span style="color: #c678dd;">(</span>tool-bar-mode 0<span style="color: #c678dd;">)</span>
  460. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(load-theme 'doom-city-lights t)</span>
  461. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(load-theme 'doom-dracula t)</span>
  462. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(load-theme 'doom-nord t)</span>
  463. <span style="color: #c678dd;">(</span>load-theme 'doom-one t<span style="color: #c678dd;">)</span>
  464. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(load-theme 'doom-spacegrey t)</span>
  465. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(load-theme 'base16-ocean t)</span>
  466. <span style="color: #c678dd;">(</span>load-theme 'base16-onedark t<span style="color: #c678dd;">)</span>
  467. <span style="color: #c678dd;">(</span>global-linum-mode t<span style="color: #c678dd;">)</span>
  468. <span style="color: #c678dd;">(</span>global-auto-revert-mode t<span style="color: #c678dd;">)</span>
  469. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defalias</span> '<span style="color: #61afef;">yes-or-no-p</span> 'y-or-n-p<span style="color: #c678dd;">)</span>
  470. </pre>
  471. </div>
  472. </div>
  473. </div>
  474. <div id="outline-container-org562681e" class="outline-3">
  475. <h3 id="org562681e"><span class="section-number-3">3.5</span> Tools</h3>
  476. <div class="outline-text-3" id="text-3-5">
  477. </div>
  478. <div id="outline-container-org109467d" class="outline-4">
  479. <h4 id="org109467d"><span class="section-number-4">3.5.1</span> General</h4>
  480. <div class="outline-text-4" id="text-3-5-1">
  481. <div class="org-src-container">
  482. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">which-key</span><span style="color: #c678dd;">)</span>
  483. <span style="color: #c678dd;">(</span>which-key-setup-minibuffer<span style="color: #c678dd;">)</span>
  484. <span style="color: #c678dd;">(</span>which-key-mode<span style="color: #c678dd;">)</span>
  485. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">fic-mode</span><span style="color: #c678dd;">)</span>
  486. <span style="color: #c678dd;">(</span>add-hook 'js-mode-hook 'fic-mode<span style="color: #c678dd;">)</span>
  487. </pre>
  488. </div>
  489. </div>
  490. </div>
  491. <div id="outline-container-orgd250d2a" class="outline-4">
  492. <h4 id="orgd250d2a"><span class="section-number-4">3.5.2</span> Company</h4>
  493. <div class="outline-text-4" id="text-3-5-2">
  494. <div class="org-src-container">
  495. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">company</span><span style="color: #c678dd;">)</span>
  496. <span style="color: #c678dd;">(</span>add-hook 'after-init-hook 'global-company-mode<span style="color: #c678dd;">)</span>
  497. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> company-dabbrev-downcase nil<span style="color: #c678dd;">)</span>
  498. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> company-idle-delay 0.1<span style="color: #c678dd;">)</span>
  499. </pre>
  500. </div>
  501. </div>
  502. </div>
  503. <div id="outline-container-org9528493" class="outline-4">
  504. <h4 id="org9528493"><span class="section-number-4">3.5.3</span> Diminish</h4>
  505. <div class="outline-text-4" id="text-3-5-3">
  506. <div class="org-src-container">
  507. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">diminish</span><span style="color: #c678dd;">)</span>
  508. <span style="color: #c678dd;">(</span>diminish 'auto-revert-mode<span style="color: #c678dd;">)</span>
  509. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"company"</span> '<span style="color: #61afef;">(</span>diminish 'company-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  510. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"counsel"</span> '<span style="color: #61afef;">(</span>diminish 'counsel-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  511. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"elpy"</span> '<span style="color: #61afef;">(</span>diminish 'elpy-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  512. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"go-mode"</span> '<span style="color: #61afef;">(</span>diminish 'go-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  513. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"go-playground"</span> '<span style="color: #61afef;">(</span>diminish 'go-playground-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  514. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"gorepl-mode"</span> '<span style="color: #61afef;">(</span>diminish 'gorepl-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  515. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"flycheck"</span> '<span style="color: #61afef;">(</span>diminish 'flycheck-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  516. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"ivy"</span> '<span style="color: #61afef;">(</span>diminish 'ivy-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  517. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"projectile"</span> '<span style="color: #61afef;">(</span>diminish 'projectile-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  518. <span style="color: #c678dd;">(</span>eval-after-load <span style="color: #98c379;">"which-key"</span> '<span style="color: #61afef;">(</span>diminish 'which-key-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  519. </pre>
  520. </div>
  521. </div>
  522. </div>
  523. <div id="outline-container-org749f012" class="outline-4">
  524. <h4 id="org749f012"><span class="section-number-4">3.5.4</span> Dired</h4>
  525. <div class="outline-text-4" id="text-3-5-4">
  526. <div class="org-src-container">
  527. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">dired-mode-setup</span> <span style="color: #61afef;">()</span>
  528. <span style="color: #565c64;">"Will run as hook for `</span><span style="color: #d19a66;">dired-mode</span><span style="color: #565c64;">'."</span>
  529. <span style="color: #61afef;">(</span>dired-hide-details-mode 1<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  530. <span style="color: #c678dd;">(</span>add-hook 'dired-mode-hook 'dired-mode-setup<span style="color: #c678dd;">)</span>
  531. </pre>
  532. </div>
  533. </div>
  534. </div>
  535. <div id="outline-container-org8d51860" class="outline-4">
  536. <h4 id="org8d51860"><span class="section-number-4">3.5.5</span> Ivy</h4>
  537. <div class="outline-text-4" id="text-3-5-5">
  538. <div class="org-src-container">
  539. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">ivy-hydra</span><span style="color: #c678dd;">)</span>
  540. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">ivy</span><span style="color: #c678dd;">)</span>
  541. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">swiper</span><span style="color: #c678dd;">)</span>
  542. <span style="color: #c678dd;">(</span>ivy-mode 1<span style="color: #c678dd;">)</span>
  543. <span style="color: #c678dd;">(</span>counsel-mode<span style="color: #c678dd;">)</span>
  544. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> ivy-use-virtual-buffers t
  545. enable-recursive-minibuffers t
  546. ivy-height 25
  547. ivy-initial-inputs-alist nil
  548. ivy-extra-directories nil<span style="color: #c678dd;">)</span>
  549. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-s"</span><span style="color: #61afef;">)</span> 'swiper<span style="color: #c678dd;">)</span>
  550. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c C-r"</span><span style="color: #61afef;">)</span> 'ivy-resume<span style="color: #c678dd;">)</span>
  551. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-x"</span><span style="color: #61afef;">)</span> 'counsel-M-x<span style="color: #c678dd;">)</span>
  552. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-x C-f"</span><span style="color: #61afef;">)</span> 'counsel-find-file<span style="color: #c678dd;">)</span>
  553. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c g"</span><span style="color: #61afef;">)</span> 'counsel-git<span style="color: #c678dd;">)</span>
  554. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c j"</span><span style="color: #61afef;">)</span> 'counsel-git-grep<span style="color: #c678dd;">)</span>
  555. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c k"</span><span style="color: #61afef;">)</span> 'counsel-ag<span style="color: #c678dd;">)</span>
  556. <span style="color: #c678dd;">(</span>define-key minibuffer-local-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-r"</span><span style="color: #61afef;">)</span> 'counsel-minibuffer-history<span style="color: #c678dd;">)</span>
  557. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">ivy-open-current-typed-path</span> <span style="color: #61afef;">()</span>
  558. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  559. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> ivy--directory
  560. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>dir ivy--directory<span style="color: #e5c07b;">)</span>
  561. <span style="color: #e5c07b;">(</span>text-typed ivy-text<span style="color: #e5c07b;">)</span>
  562. <span style="color: #e5c07b;">(</span>path <span style="color: #d19a66;">(</span>concat dir text-typed<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  563. <span style="color: #98c379;">(</span>delete-minibuffer-contents<span style="color: #98c379;">)</span>
  564. <span style="color: #98c379;">(</span>ivy--done path<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  565. <span style="color: #c678dd;">(</span>define-key ivy-minibuffer-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"&lt;return&gt;"</span><span style="color: #61afef;">)</span> 'ivy-alt-done<span style="color: #c678dd;">)</span>
  566. <span style="color: #c678dd;">(</span>define-key ivy-minibuffer-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-f"</span><span style="color: #61afef;">)</span> 'ivy-open-current-typed-path<span style="color: #c678dd;">)</span>
  567. </pre>
  568. </div>
  569. </div>
  570. </div>
  571. <div id="outline-container-org2368349" class="outline-4">
  572. <h4 id="org2368349"><span class="section-number-4">3.5.6</span> Magit</h4>
  573. <div class="outline-text-4" id="text-3-5-6">
  574. <div class="org-src-container">
  575. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">magit</span><span style="color: #c678dd;">)</span>
  576. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-x g"</span><span style="color: #61afef;">)</span> 'magit-status<span style="color: #c678dd;">)</span>
  577. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c g"</span><span style="color: #61afef;">)</span> 'magit-status<span style="color: #c678dd;">)</span>
  578. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> magit-completing-read-function 'ivy-completing-read<span style="color: #c678dd;">)</span>
  579. </pre>
  580. </div>
  581. </div>
  582. </div>
  583. <div id="outline-container-org1a832bf" class="outline-4">
  584. <h4 id="org1a832bf"><span class="section-number-4">3.5.7</span> Projectile</h4>
  585. <div class="outline-text-4" id="text-3-5-7">
  586. <div class="org-src-container">
  587. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">projectile</span><span style="color: #c678dd;">)</span>
  588. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">counsel-projectile</span><span style="color: #c678dd;">)</span>
  589. <span style="color: #c678dd;">(</span>projectile-mode<span style="color: #c678dd;">)</span>
  590. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> projectile-mode-line '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">:eval</span> <span style="color: #56b6c2;">(</span>format <span style="color: #98c379;">" %s"</span> <span style="color: #98c379;">(</span>projectile-project-name<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  591. projectile-remember-window-configs t
  592. projectile-completion-system 'ivy<span style="color: #c678dd;">)</span>
  593. <span style="color: #c678dd;">(</span>counsel-projectile-mode<span style="color: #c678dd;">)</span>
  594. </pre>
  595. </div>
  596. </div>
  597. </div>
  598. </div>
  599. <div id="outline-container-org1fb6ffa" class="outline-3">
  600. <h3 id="org1fb6ffa"><span class="section-number-3">3.6</span> Development Specific</h3>
  601. <div class="outline-text-3" id="text-3-6">
  602. </div>
  603. <div id="outline-container-org1702ed3" class="outline-4">
  604. <h4 id="org1702ed3"><span class="section-number-4">3.6.1</span> General</h4>
  605. <div class="outline-text-4" id="text-3-6-1">
  606. <div class="org-src-container">
  607. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">rainbow-delimiters</span><span style="color: #c678dd;">)</span>
  608. <span style="color: #c678dd;">(</span>global-flycheck-mode<span style="color: #c678dd;">)</span>
  609. <span style="color: #c678dd;">(</span>add-hook 'before-save-hook 'delete-trailing-whitespace<span style="color: #c678dd;">)</span>
  610. <span style="color: #c678dd;">(</span>add-hook 'prog-mode-hook 'rainbow-delimiters-mode<span style="color: #c678dd;">)</span>
  611. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq-default</span> indent-tabs-mode nil
  612. tab-width 4<span style="color: #c678dd;">)</span>
  613. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvaralias</span> '<span style="color: #e06c75;">c-basic-offset</span> 'tab-width<span style="color: #c678dd;">)</span>
  614. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvaralias</span> '<span style="color: #e06c75;">cperl-indent-level</span> 'tab-width<span style="color: #c678dd;">)</span>
  615. <span style="color: #c678dd;">(</span>electric-pair-mode 1<span style="color: #c678dd;">)</span>
  616. <span style="color: #c678dd;">(</span>show-paren-mode 1<span style="color: #c678dd;">)</span>
  617. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">dockerfile-mode</span><span style="color: #c678dd;">)</span>
  618. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"Dockerfile*\\'"</span> . dockerfile-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  619. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">gitignore-mode</span><span style="color: #c678dd;">)</span>
  620. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"gitignore\\'"</span> . gitignore-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  621. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">json-mode</span><span style="color: #c678dd;">)</span>
  622. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.json\\'"</span> . json-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  623. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">web-mode</span><span style="color: #c678dd;">)</span>
  624. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.html\\'"</span> . web-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  625. </pre>
  626. </div>
  627. </div>
  628. </div>
  629. <div id="outline-container-org4730a23" class="outline-4">
  630. <h4 id="org4730a23"><span class="section-number-4">3.6.2</span> Python</h4>
  631. <div class="outline-text-4" id="text-3-6-2">
  632. <div class="org-src-container">
  633. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span>elpy-enable<span style="color: #c678dd;">)</span>
  634. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> python-shell-interpreter <span style="color: #98c379;">"jupyter"</span>
  635. python-shell-interpreter-args <span style="color: #98c379;">"console --simple-prompt"</span><span style="color: #c678dd;">)</span>
  636. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">when</span> <span style="color: #61afef;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">flycheck</span> nil t<span style="color: #61afef;">)</span>
  637. <span style="color: #61afef;">(</span><span style="color: #c678dd;">setq</span> elpy-modules <span style="color: #56b6c2;">(</span>delq 'elpy-module-flymake elpy-modules<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  638. <span style="color: #61afef;">(</span>add-hook 'elpy-mode-hook 'flycheck-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  639. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">py-autopep8</span><span style="color: #c678dd;">)</span>
  640. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> py-autopep8-options '<span style="color: #61afef;">(</span><span style="color: #98c379;">"--ignore=E501"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  641. <span style="color: #c678dd;">(</span>add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save<span style="color: #c678dd;">)</span>
  642. </pre>
  643. </div>
  644. </div>
  645. </div>
  646. <div id="outline-container-org99bcdb6" class="outline-4">
  647. <h4 id="org99bcdb6"><span class="section-number-4">3.6.3</span> Go</h4>
  648. <div class="outline-text-4" id="text-3-6-3">
  649. <div class="org-src-container">
  650. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">go-mode</span><span style="color: #c678dd;">)</span>
  651. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">go-playground</span><span style="color: #c678dd;">)</span>
  652. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">gorepl-mode</span><span style="color: #c678dd;">)</span>
  653. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">company-go</span><span style="color: #c678dd;">)</span>
  654. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.go\\'"</span> . go-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  655. <span style="color: #c678dd;">(</span>add-hook 'go-mode-hook <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span>
  656. <span style="color: #56b6c2;">(</span>add-hook 'before-save-hook 'gofmt-before-save<span style="color: #56b6c2;">)</span>
  657. <span style="color: #56b6c2;">(</span>local-set-key <span style="color: #98c379;">(</span>kbd <span style="color: #98c379;">"M-."</span><span style="color: #98c379;">)</span> 'godef-jump<span style="color: #56b6c2;">)</span>
  658. <span style="color: #56b6c2;">(</span>local-set-key <span style="color: #98c379;">(</span>kbd <span style="color: #98c379;">"M-,"</span><span style="color: #98c379;">)</span> 'pop-tag-mark<span style="color: #56b6c2;">)</span>
  659. <span style="color: #56b6c2;">(</span>local-set-key <span style="color: #98c379;">(</span>kbd <span style="color: #98c379;">"C-c C-c"</span><span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #e5c07b;">()</span>
  660. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #e5c07b;">)</span>
  661. <span style="color: #e5c07b;">(</span>ansi-term<span style="color: #e5c07b;">)</span>
  662. <span style="color: #e5c07b;">(</span>comint-send-string <span style="color: #98c379;">"*ansi-term*"</span> <span style="color: #98c379;">"make\n"</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  663. <span style="color: #56b6c2;">(</span>set <span style="color: #98c379;">(</span>make-local-variable 'company-backends<span style="color: #98c379;">)</span> '<span style="color: #98c379;">(</span>company-go<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  664. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">setq</span> company-tooltip-limit 20
  665. company-echo-delay 0
  666. company-begin-commands '<span style="color: #98c379;">(</span>self-insert-command<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  667. <span style="color: #56b6c2;">(</span>gorepl-mode<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  668. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">set-exec-path-from-shell-PATH</span> <span style="color: #61afef;">()</span>
  669. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>path-from-shell <span style="color: #e5c07b;">(</span>replace-regexp-in-string
  670. <span style="color: #98c379;">"[ \t\n]*$"</span>
  671. <span style="color: #98c379;">""</span>
  672. <span style="color: #d19a66;">(</span>shell-command-to-string <span style="color: #98c379;">"$SHELL --login -i -c 'echo $PATH'"</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  673. <span style="color: #56b6c2;">(</span>setenv <span style="color: #98c379;">"PATH"</span> path-from-shell<span style="color: #56b6c2;">)</span>
  674. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">setq</span> eshell-path-env path-from-shell<span style="color: #56b6c2;">)</span>
  675. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">setq</span> exec-path <span style="color: #98c379;">(</span>split-string path-from-shell path-separator<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  676. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">when</span> window-system <span style="color: #61afef;">(</span>set-exec-path-from-shell-PATH<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  677. <span style="color: #c678dd;">(</span>setenv <span style="color: #98c379;">"GOPATH"</span> <span style="color: #98c379;">"/Users/leviolson/go"</span><span style="color: #c678dd;">)</span>
  678. <span style="color: #c678dd;">(</span>add-to-list 'exec-path <span style="color: #98c379;">"/Users/leviolson/go/bin"</span><span style="color: #c678dd;">)</span>
  679. </pre>
  680. </div>
  681. </div>
  682. </div>
  683. <div id="outline-container-orgdb1f163" class="outline-4">
  684. <h4 id="orgdb1f163"><span class="section-number-4">3.6.4</span> TypeScript</h4>
  685. <div class="outline-text-4" id="text-3-6-4">
  686. <div class="org-src-container">
  687. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">setup-tide-mode</span> <span style="color: #61afef;">()</span>
  688. <span style="color: #565c64;">"Tide setup function."</span>
  689. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  690. <span style="color: #61afef;">(</span>tide-setup<span style="color: #61afef;">)</span>
  691. <span style="color: #61afef;">(</span>flycheck-mode +1<span style="color: #61afef;">)</span>
  692. <span style="color: #61afef;">(</span><span style="color: #c678dd;">setq</span> flycheck-check-syntax-automatically '<span style="color: #56b6c2;">(</span>save mode-enabled<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  693. <span style="color: #61afef;">(</span>eldoc-mode +1<span style="color: #61afef;">)</span>
  694. <span style="color: #61afef;">(</span>tide-hl-identifier-mode +1<span style="color: #61afef;">)</span>
  695. <span style="color: #61afef;">(</span>company-mode +1<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  696. <span style="color: #3e4451;">;; </span><span style="color: #545862;">aligns annotation to the right hand side</span>
  697. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> company-tooltip-align-annotations t<span style="color: #c678dd;">)</span>
  698. <span style="color: #3e4451;">;; </span><span style="color: #545862;">formats the buffer before saving</span>
  699. <span style="color: #c678dd;">(</span>add-hook 'before-save-hook 'tide-format-before-save<span style="color: #c678dd;">)</span>
  700. <span style="color: #c678dd;">(</span>add-hook 'typescript-mode-hook #'setup-tide-mode<span style="color: #c678dd;">)</span>
  701. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">typescript-mode</span><span style="color: #c678dd;">)</span>
  702. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">tide</span><span style="color: #c678dd;">)</span>
  703. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.ts\\'"</span> . typescript-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  704. <span style="color: #c678dd;">(</span>add-hook 'typescript-mode-hook
  705. '<span style="color: #61afef;">(</span>lambda <span style="color: #56b6c2;">()</span>
  706. <span style="color: #56b6c2;">(</span>set <span style="color: #98c379;">(</span>make-local-variable 'company-backends<span style="color: #98c379;">)</span> '<span style="color: #98c379;">(</span>company-tide<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  707. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">setq</span> company-tooltip-limit 20
  708. company-echo-delay 0
  709. company-begin-commands '<span style="color: #98c379;">(</span>self-insert-command<span style="color: #98c379;">)</span>
  710. tide-format-options '<span style="color: #98c379;">(</span><span style="color: #56b6c2;">:insertSpaceAfterFunctionKeywordForAnonymousFunctions</span> t <span style="color: #56b6c2;">:placeOpenBraceOnNewLineForFunctions</span> nil<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  711. <span style="color: #56b6c2;">(</span>tide-setup<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  712. </pre>
  713. </div>
  714. </div>
  715. <div id="outline-container-org8ffb8dc" class="outline-5">
  716. <h5 id="org8ffb8dc"><span class="section-number-5">3.6.4.1</span> TSX</h5>
  717. <div class="outline-text-5" id="text-3-6-4-1">
  718. <div class="org-src-container">
  719. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">web-mode</span><span style="color: #c678dd;">)</span>
  720. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.tsx\\'"</span> . web-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  721. <span style="color: #c678dd;">(</span>add-hook 'web-mode-hook
  722. <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span>
  723. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">when</span> <span style="color: #98c379;">(</span>string-equal <span style="color: #98c379;">"tsx"</span> <span style="color: #e5c07b;">(</span>file-name-extension buffer-file-name<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  724. <span style="color: #98c379;">(</span>setup-tide-mode<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  725. <span style="color: #3e4451;">;; </span><span style="color: #545862;">enable typescript-tslint checker</span>
  726. <span style="color: #c678dd;">(</span>flycheck-add-mode 'typescript-tslint 'web-mode<span style="color: #c678dd;">)</span>
  727. </pre>
  728. </div>
  729. </div>
  730. </div>
  731. <div id="outline-container-orgebde919" class="outline-5">
  732. <h5 id="orgebde919"><span class="section-number-5">3.6.4.2</span> JSX</h5>
  733. <div class="outline-text-5" id="text-3-6-4-2">
  734. <div class="org-src-container">
  735. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">web-mode</span><span style="color: #c678dd;">)</span>
  736. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.jsx\\'"</span> . web-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  737. <span style="color: #c678dd;">(</span>add-hook 'web-mode-hook
  738. <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span>
  739. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">when</span> <span style="color: #98c379;">(</span>string-equal <span style="color: #98c379;">"jsx"</span> <span style="color: #e5c07b;">(</span>file-name-extension buffer-file-name<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  740. <span style="color: #98c379;">(</span>setup-tide-mode<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  741. <span style="color: #3e4451;">;; </span><span style="color: #545862;">configure jsx-tide checker to run after your default jsx checker</span>
  742. <span style="color: #c678dd;">(</span>flycheck-add-mode 'javascript-eslint 'web-mode<span style="color: #c678dd;">)</span>
  743. <span style="color: #c678dd;">(</span>flycheck-add-next-checker 'javascript-eslint 'jsx-tide 'append<span style="color: #c678dd;">)</span>
  744. </pre>
  745. </div>
  746. </div>
  747. </div>
  748. </div>
  749. <div id="outline-container-org25376dc" class="outline-4">
  750. <h4 id="org25376dc"><span class="section-number-4">3.6.5</span> Org</h4>
  751. <div class="outline-text-4" id="text-3-6-5">
  752. <div class="org-src-container">
  753. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span>org-babel-do-load-languages
  754. 'org-babel-load-languages
  755. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>js . t<span style="color: #56b6c2;">)</span>
  756. <span style="color: #56b6c2;">(</span>shell . t<span style="color: #56b6c2;">)</span>
  757. <span style="color: #56b6c2;">(</span>emacs-lisp . t<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  758. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">org-src-tab-acts-natively</span><span style="color: #c678dd;">)</span>
  759. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> org-src-tab-acts-natively t<span style="color: #c678dd;">)</span>
  760. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(setenv "NODE_PATH"</span>
  761. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(getenv "NODE_PATH"))</span>
  762. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">org-confirm-babel-evaluate</span><span style="color: #c678dd;">)</span>
  763. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">my-org-confirm-babel-evaluate</span> <span style="color: #61afef;">(</span>lang body<span style="color: #61afef;">)</span>
  764. <span style="color: #565c64;">"Execute certain languages without confirming.</span>
  765. <span style="color: #565c64;"> Takes LANG to allow and BODY to execute."</span>
  766. <span style="color: #61afef;">(</span>not <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">or</span> <span style="color: #98c379;">(</span>string= lang <span style="color: #98c379;">"js"</span><span style="color: #98c379;">)</span>
  767. <span style="color: #98c379;">(</span>string= lang <span style="color: #98c379;">"restclient"</span><span style="color: #98c379;">)</span>
  768. <span style="color: #98c379;">(</span>string= lang <span style="color: #98c379;">"emacs-lisp"</span><span style="color: #98c379;">)</span>
  769. <span style="color: #98c379;">(</span>string= lang <span style="color: #98c379;">"shell"</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  770. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">setq</span> org-confirm-babel-evaluate #'my-org-confirm-babel-evaluate<span style="color: #c678dd;">)</span>
  771. <span style="color: #c678dd;">(</span>add-to-list 'org-structure-template-alist
  772. <span style="color: #61afef;">(</span>list <span style="color: #98c379;">"e"</span> <span style="color: #56b6c2;">(</span>concat <span style="color: #98c379;">"#+BEGIN_SRC emacs-lisp :results silent\n"</span>
  773. <span style="color: #98c379;">"\n"</span>
  774. <span style="color: #98c379;">"#+END_SRC"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  775. <span style="color: #c678dd;">(</span>add-to-list 'org-structure-template-alist
  776. <span style="color: #61afef;">(</span>list <span style="color: #98c379;">"j"</span> <span style="color: #56b6c2;">(</span>concat <span style="color: #98c379;">"#+BEGIN_SRC js :cmd \"babel-node\"\n"</span>
  777. <span style="color: #98c379;">"\n"</span>
  778. <span style="color: #98c379;">"#+END_SRC"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  779. <span style="color: #c678dd;">(</span>add-to-list 'org-structure-template-alist
  780. <span style="color: #61afef;">(</span>list <span style="color: #98c379;">"r"</span> <span style="color: #56b6c2;">(</span>concat <span style="color: #98c379;">"#+BEGIN_SRC restclient :results raw\n"</span>
  781. <span style="color: #98c379;">"\n"</span>
  782. <span style="color: #98c379;">"#+END_SRC"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  783. </pre>
  784. </div>
  785. </div>
  786. </div>
  787. </div>
  788. <div id="outline-container-org248d7b2" class="outline-3">
  789. <h3 id="org248d7b2"><span class="section-number-3">3.7</span> Functions</h3>
  790. <div class="outline-text-3" id="text-3-7">
  791. <div class="org-src-container">
  792. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">find-user-init-file</span> <span style="color: #61afef;">()</span>
  793. <span style="color: #565c64;">"Edit the `</span><span style="color: #d19a66;">~/.emacs.d/init.org</span><span style="color: #565c64;">' file."</span>
  794. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  795. <span style="color: #61afef;">(</span>find-file <span style="color: #98c379;">"~/.emacs.d/init.org"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  796. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">load-user-init-file</span> <span style="color: #61afef;">()</span>
  797. <span style="color: #565c64;">"LO: Reload the `</span><span style="color: #d19a66;">~/.emacs.d/init.elc</span><span style="color: #565c64;">' file."</span>
  798. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  799. <span style="color: #61afef;">(</span>load-file <span style="color: #98c379;">"~/.emacs.d/init.elc"</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  800. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">jump-to-symbol-internal</span> <span style="color: #61afef;">(</span><span style="color: #e5c07b;">&amp;optional</span> backwardp<span style="color: #61afef;">)</span>
  801. <span style="color: #565c64;">"Jumps to the next symbol near the point if such a symbol exists. If BACKWARDP is non-nil it jumps backward."</span>
  802. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>point <span style="color: #e5c07b;">(</span>point<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  803. <span style="color: #98c379;">(</span>bounds <span style="color: #e5c07b;">(</span>find-tag-default-bounds<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  804. <span style="color: #98c379;">(</span>beg <span style="color: #e5c07b;">(</span>car bounds<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>end <span style="color: #e5c07b;">(</span>cdr bounds<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  805. <span style="color: #98c379;">(</span>str <span style="color: #e5c07b;">(</span>isearch-symbol-regexp <span style="color: #d19a66;">(</span>find-tag-default<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  806. <span style="color: #98c379;">(</span>search <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> backwardp 'search-backward-regexp
  807. 'search-forward-regexp<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  808. <span style="color: #56b6c2;">(</span>goto-char <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> backwardp beg end<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  809. <span style="color: #56b6c2;">(</span>funcall search str nil t<span style="color: #56b6c2;">)</span>
  810. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>&lt;= beg <span style="color: #d19a66;">(</span>point<span style="color: #d19a66;">)</span> end<span style="color: #e5c07b;">)</span> <span style="color: #e5c07b;">(</span>goto-char point<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  811. <span style="color: #98c379;">(</span>backwardp <span style="color: #e5c07b;">(</span>forward-char <span style="color: #d19a66;">(</span>- point beg<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  812. <span style="color: #98c379;">(</span>t <span style="color: #e5c07b;">(</span>backward-char <span style="color: #d19a66;">(</span>- end point<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  813. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">jump-to-previous-like-this</span> <span style="color: #61afef;">()</span>
  814. <span style="color: #565c64;">"Jumps to the previous occurrence of the symbol at point."</span>
  815. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  816. <span style="color: #61afef;">(</span>jump-to-symbol-internal t<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  817. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">jump-to-next-like-this</span> <span style="color: #61afef;">()</span>
  818. <span style="color: #565c64;">"Jumps to the next occurrence of the symbol at point."</span>
  819. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  820. <span style="color: #61afef;">(</span>jump-to-symbol-internal<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  821. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">match-paren</span> <span style="color: #61afef;">(</span>arg<span style="color: #61afef;">)</span>
  822. <span style="color: #565c64;">"Go to the matching paren if on a paren; otherwise insert ARG (a literal % sign)."</span>
  823. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span> <span style="color: #98c379;">"p"</span><span style="color: #61afef;">)</span>
  824. <span style="color: #61afef;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>looking-at <span style="color: #98c379;">"\\s("</span><span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>forward-list 1<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  825. <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>looking-back <span style="color: #98c379;">"\\s("</span> 2<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>backward-char 1<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>forward-list 1<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  826. <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>looking-at <span style="color: #98c379;">"\\s)"</span><span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>forward-char 1<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>backward-list 1<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  827. <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>looking-back <span style="color: #98c379;">"\\s)"</span> 2<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>backward-list 1<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  828. <span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span>self-insert-command <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">or</span> arg 1<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  829. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">kill-this-buffer-unless-scratch</span> <span style="color: #61afef;">()</span>
  830. <span style="color: #565c64;">"Works like `</span><span style="color: #d19a66;">kill-this-buffer</span><span style="color: #565c64;">' unless the current buffer is the *scratch* buffer. In which case the buffer content is deleted and the buffer is buried."</span>
  831. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  832. <span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> <span style="color: #56b6c2;">(</span>not <span style="color: #98c379;">(</span>string= <span style="color: #e5c07b;">(</span>buffer-name<span style="color: #e5c07b;">)</span> <span style="color: #98c379;">"*scratch*"</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  833. <span style="color: #56b6c2;">(</span>kill-this-buffer<span style="color: #56b6c2;">)</span>
  834. <span style="color: #56b6c2;">(</span>delete-region <span style="color: #98c379;">(</span>point-min<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>point-max<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  835. <span style="color: #56b6c2;">(</span>switch-to-buffer <span style="color: #98c379;">(</span>other-buffer<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  836. <span style="color: #56b6c2;">(</span>bury-buffer <span style="color: #98c379;">"*scratch*"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  837. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">delete-backward-sentence</span> <span style="color: #61afef;">()</span>
  838. <span style="color: #565c64;">"LO: Delete to the beginning of the sentence/line."</span>
  839. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  840. <span style="color: #61afef;">(</span>delete-region <span style="color: #56b6c2;">(</span>point<span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">progn</span> <span style="color: #98c379;">(</span>backward-sentence<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>point<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  841. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">delete-backward-to-boundary</span> <span style="color: #61afef;">(</span>arg<span style="color: #61afef;">)</span>
  842. <span style="color: #565c64;">"LO: Delete backward to the previous word boundary. With ARG, do this many times."</span>
  843. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span> <span style="color: #98c379;">"p"</span><span style="color: #61afef;">)</span>
  844. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>a <span style="color: #e5c07b;">(</span>point<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  845. <span style="color: #98c379;">(</span>b <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">progn</span>
  846. <span style="color: #d19a66;">(</span>backward-word arg<span style="color: #d19a66;">)</span>
  847. <span style="color: #d19a66;">(</span>forward-word<span style="color: #d19a66;">)</span>
  848. <span style="color: #d19a66;">(</span>point<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  849. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>&lt; a b<span style="color: #98c379;">)</span>
  850. <span style="color: #98c379;">(</span>delete-region a <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">progn</span> <span style="color: #d19a66;">(</span>backward-word arg<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span>point<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  851. <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>= a b<span style="color: #e5c07b;">)</span>
  852. <span style="color: #e5c07b;">(</span>delete-region a <span style="color: #d19a66;">(</span><span style="color: #c678dd;">progn</span> <span style="color: #e06c75;">(</span>backward-word arg<span style="color: #e06c75;">)</span> <span style="color: #e06c75;">(</span>point<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  853. <span style="color: #e5c07b;">(</span>delete-region a b<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  854. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">comment-or-uncomment-region-or-line</span> <span style="color: #61afef;">()</span>
  855. <span style="color: #565c64;">"Comments or uncomments the region or the current line if there's no active region."</span>
  856. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  857. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span>beg end<span style="color: #56b6c2;">)</span>
  858. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>region-active-p<span style="color: #98c379;">)</span>
  859. <span style="color: #98c379;">(</span><span style="color: #c678dd;">setq</span> beg <span style="color: #e5c07b;">(</span>region-beginning<span style="color: #e5c07b;">)</span> end <span style="color: #e5c07b;">(</span>region-end<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  860. <span style="color: #98c379;">(</span><span style="color: #c678dd;">setq</span> beg <span style="color: #e5c07b;">(</span>line-beginning-position<span style="color: #e5c07b;">)</span> end <span style="color: #e5c07b;">(</span>line-end-position<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  861. <span style="color: #56b6c2;">(</span>comment-or-uncomment-region beg end<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  862. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">fold-toggle</span> <span style="color: #61afef;">(</span>column<span style="color: #61afef;">)</span>
  863. <span style="color: #565c64;">"Code folding by COLUMN."</span>
  864. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span> <span style="color: #98c379;">"P"</span><span style="color: #61afef;">)</span>
  865. <span style="color: #61afef;">(</span>set-selective-display
  866. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">or</span> column
  867. <span style="color: #98c379;">(</span><span style="color: #c678dd;">unless</span> selective-display
  868. <span style="color: #e5c07b;">(</span>1+ <span style="color: #d19a66;">(</span>current-column<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  869. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">new-line-below</span> <span style="color: #61afef;">()</span>
  870. <span style="color: #565c64;">"LO: Create a new line below current line."</span>
  871. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  872. <span style="color: #61afef;">(</span>move-end-of-line 1<span style="color: #61afef;">)</span>
  873. <span style="color: #61afef;">(</span>newline-and-indent<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  874. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">new-line-above</span> <span style="color: #61afef;">()</span>
  875. <span style="color: #565c64;">"LO: Create a new line above current line."</span>
  876. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  877. <span style="color: #61afef;">(</span>move-beginning-of-line 1<span style="color: #61afef;">)</span>
  878. <span style="color: #61afef;">(</span>newline<span style="color: #61afef;">)</span>
  879. <span style="color: #61afef;">(</span>forward-line -1<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  880. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">duplicate-thing</span> <span style="color: #61afef;">(</span>comment<span style="color: #61afef;">)</span>
  881. <span style="color: #565c64;">"LO: Duplicates the current line, or the region if active. If an argument (COMMENT) is given, the duplicated region will be commented out."</span>
  882. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span> <span style="color: #98c379;">"P"</span><span style="color: #61afef;">)</span>
  883. <span style="color: #61afef;">(</span><span style="color: #c678dd;">save-excursion</span>
  884. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>start <span style="color: #d19a66;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e06c75;">(</span>region-active-p<span style="color: #e06c75;">)</span> <span style="color: #e06c75;">(</span>region-beginning<span style="color: #e06c75;">)</span> <span style="color: #e06c75;">(</span>point-at-bol<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  885. <span style="color: #e5c07b;">(</span>end <span style="color: #d19a66;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e06c75;">(</span>region-active-p<span style="color: #e06c75;">)</span> <span style="color: #e06c75;">(</span>region-end<span style="color: #e06c75;">)</span> <span style="color: #e06c75;">(</span>point-at-eol<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  886. <span style="color: #98c379;">(</span>goto-char end<span style="color: #98c379;">)</span>
  887. <span style="color: #98c379;">(</span><span style="color: #c678dd;">unless</span> <span style="color: #e5c07b;">(</span>region-active-p<span style="color: #e5c07b;">)</span>
  888. <span style="color: #e5c07b;">(</span>newline<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  889. <span style="color: #98c379;">(</span>insert <span style="color: #e5c07b;">(</span>buffer-substring start end<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  890. <span style="color: #98c379;">(</span><span style="color: #c678dd;">when</span> comment <span style="color: #e5c07b;">(</span>comment-region start end<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  891. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">tidy</span> <span style="color: #61afef;">()</span>
  892. <span style="color: #565c64;">"LO: Ident, untabify and unwhitespacify current buffer, or region if active."</span>
  893. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  894. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>beg <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> <span style="color: #d19a66;">(</span>region-active-p<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span>region-beginning<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span>point-min<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  895. <span style="color: #98c379;">(</span>end <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> <span style="color: #d19a66;">(</span>region-active-p<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span>region-end<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span>point-max<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  896. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>inhibit-message t<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  897. <span style="color: #98c379;">(</span>indent-region beg end<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  898. <span style="color: #56b6c2;">(</span>whitespace-cleanup<span style="color: #56b6c2;">)</span>
  899. <span style="color: #56b6c2;">(</span>untabify beg <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>&lt; end <span style="color: #d19a66;">(</span>point-max<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span> end <span style="color: #e5c07b;">(</span>point-max<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  900. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>region-active-p<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>message <span style="color: #98c379;">"Indenting Region...Done"</span><span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span>message <span style="color: #98c379;">"Indenting File...Done"</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  901. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">phil-columns</span> <span style="color: #61afef;">()</span>
  902. <span style="color: #565c64;">"LO: Good 'ol Phil-Columns."</span>
  903. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  904. <span style="color: #61afef;">(</span>message <span style="color: #98c379;">"Good 'ol fill-columns"</span><span style="color: #61afef;">)</span>
  905. <span style="color: #61afef;">(</span><span style="color: #c678dd;">with-output-to-temp-buffer</span> <span style="color: #98c379;">"*PHIL-COLUMN*"</span>
  906. <span style="color: #56b6c2;">(</span>shell-command <span style="color: #98c379;">"mpv --no-video 'https://www.youtube.com/watch?v=YkADj0TPrJA&amp;t=3m16s' &gt; /dev/null 2&gt;&amp;1 &amp; sleep 8; pkill mpv"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  907. <span style="color: #61afef;">(</span>other-window 1<span style="color: #61afef;">)</span>
  908. <span style="color: #61afef;">(</span>delete-window<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  909. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">declare-function</span> first <span style="color: #98c379;">"Goto FIRST shell."</span><span style="color: #c678dd;">)</span>
  910. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">declare-function</span> goto-non-shell-buffer <span style="color: #98c379;">"Goto something other than a shell buffer."</span><span style="color: #c678dd;">)</span>
  911. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">declare-function</span> switch-shell <span style="color: #98c379;">"Switch shell."</span><span style="color: #c678dd;">)</span>
  912. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">let</span> <span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>last-shell <span style="color: #98c379;">""</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  913. <span style="color: #61afef;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">toggle-shell</span> <span style="color: #56b6c2;">()</span>
  914. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #56b6c2;">)</span>
  915. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>string-match-p <span style="color: #98c379;">"^\\*shell&lt;[1-9][0-9]*&gt;\\*$"</span> <span style="color: #d19a66;">(</span>buffer-name<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  916. <span style="color: #e5c07b;">(</span>goto-non-shell-buffer<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  917. <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>get-buffer last-shell<span style="color: #e5c07b;">)</span> <span style="color: #e5c07b;">(</span>switch-to-buffer last-shell<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  918. <span style="color: #98c379;">(</span>t <span style="color: #e5c07b;">(</span>shell <span style="color: #d19a66;">(</span><span style="color: #c678dd;">setq</span> last-shell <span style="color: #98c379;">"*shell&lt;1&gt;*"</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  919. <span style="color: #61afef;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">switch-shell</span> <span style="color: #56b6c2;">(</span>n<span style="color: #56b6c2;">)</span>
  920. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>buffer-name <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">"*shell&lt;%d&gt;*"</span> n<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  921. <span style="color: #98c379;">(</span><span style="color: #c678dd;">setq</span> last-shell buffer-name<span style="color: #98c379;">)</span>
  922. <span style="color: #98c379;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>get-buffer buffer-name<span style="color: #d19a66;">)</span>
  923. <span style="color: #d19a66;">(</span>switch-to-buffer buffer-name<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  924. <span style="color: #e5c07b;">(</span>t <span style="color: #d19a66;">(</span>shell buffer-name<span style="color: #d19a66;">)</span>
  925. <span style="color: #d19a66;">(</span>rename-buffer buffer-name<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  926. <span style="color: #61afef;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">goto-non-shell-buffer</span> <span style="color: #56b6c2;">()</span>
  927. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>r <span style="color: #98c379;">"^\\*shell&lt;[1-9][0-9]*&gt;\\*$"</span><span style="color: #e5c07b;">)</span>
  928. <span style="color: #e5c07b;">(</span>shell-buffer-p <span style="color: #d19a66;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #e06c75;">(</span>b<span style="color: #e06c75;">)</span> <span style="color: #e06c75;">(</span>string-match-p r <span style="color: #545862;">(</span>buffer-name b<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  929. <span style="color: #e5c07b;">(</span>non-shells <span style="color: #d19a66;">(</span>cl-remove-if shell-buffer-p <span style="color: #e06c75;">(</span>buffer-list<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  930. <span style="color: #98c379;">(</span><span style="color: #c678dd;">when</span> non-shells
  931. <span style="color: #e5c07b;">(</span>switch-to-buffer <span style="color: #d19a66;">(</span>first non-shells<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  932. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defadvice</span> <span style="color: #61afef;">shell</span> <span style="color: #61afef;">(</span>after kill-with-no-query nil activate<span style="color: #61afef;">)</span>
  933. <span style="color: #565c64;">"."</span>
  934. <span style="color: #61afef;">(</span>set-process-query-on-exit-flag <span style="color: #56b6c2;">(</span>get-buffer-process ad-return-value<span style="color: #56b6c2;">)</span> nil<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  935. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">declare-function</span> comint-truncate-buffer <span style="color: #98c379;">"."</span><span style="color: #c678dd;">)</span>
  936. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">clear-comint</span> <span style="color: #61afef;">()</span>
  937. <span style="color: #565c64;">"Run `</span><span style="color: #d19a66;">comint-truncate-buffer</span><span style="color: #565c64;">' with the `</span><span style="color: #d19a66;">comint-buffer-maximum-size</span><span style="color: #565c64;">' set to zero."</span>
  938. <span style="color: #61afef;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #61afef;">)</span>
  939. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>comint-buffer-maximum-size 0<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  940. <span style="color: #56b6c2;">(</span>comint-truncate-buffer<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  941. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">c-setup</span> <span style="color: #61afef;">()</span>
  942. <span style="color: #565c64;">"Compile."</span>
  943. <span style="color: #61afef;">(</span>local-set-key <span style="color: #56b6c2;">(</span>kbd <span style="color: #98c379;">"C-c C-c"</span><span style="color: #56b6c2;">)</span> 'compile<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  944. </pre>
  945. </div>
  946. </div>
  947. </div>
  948. <div id="outline-container-org094bf6b" class="outline-3">
  949. <h3 id="org094bf6b"><span class="section-number-3">3.8</span> Bindings</h3>
  950. <div class="outline-text-3" id="text-3-8">
  951. <div class="org-src-container">
  952. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">company</span><span style="color: #c678dd;">)</span>
  953. <span style="color: #c678dd;">(</span>add-hook 'comint-mode-hook <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span> <span style="color: #56b6c2;">(</span>local-set-key <span style="color: #98c379;">(</span>kbd <span style="color: #98c379;">"C-l"</span><span style="color: #98c379;">)</span> 'clear-comint<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  954. <span style="color: #c678dd;">(</span>add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode<span style="color: #c678dd;">)</span>
  955. <span style="color: #c678dd;">(</span>add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode<span style="color: #c678dd;">)</span>
  956. <span style="color: #c678dd;">(</span>add-hook 'c-mode-common-hook 'c-setup<span style="color: #c678dd;">)</span>
  957. <span style="color: #c678dd;">(</span>add-to-list 'auto-mode-alist '<span style="color: #61afef;">(</span><span style="color: #98c379;">"\\.md\\'"</span> . markdown-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  958. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">company-active-map</span> <span style="color: #61afef;">(</span>make-keymap<span style="color: #61afef;">)</span>
  959. <span style="color: #565c64;">"Company Mode keymap."</span><span style="color: #c678dd;">)</span>
  960. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">custom-bindings</span> <span style="color: #61afef;">(</span>make-keymap<span style="color: #61afef;">)</span>
  961. <span style="color: #565c64;">"A keymap of custom bindings."</span><span style="color: #c678dd;">)</span>
  962. <span style="color: #c678dd;">(</span>define-key global-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-p"</span><span style="color: #61afef;">)</span> 'jump-to-previous-like-this<span style="color: #c678dd;">)</span>
  963. <span style="color: #c678dd;">(</span>define-key global-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-n"</span><span style="color: #61afef;">)</span> 'jump-to-next-like-this<span style="color: #c678dd;">)</span>
  964. <span style="color: #c678dd;">(</span>define-key global-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-&lt;tab&gt;"</span><span style="color: #61afef;">)</span> 'switch-to-next-buffer<span style="color: #c678dd;">)</span>
  965. <span style="color: #c678dd;">(</span>define-key global-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-&lt;backspace&gt;"</span><span style="color: #61afef;">)</span>'delete-backward-to-boundary<span style="color: #c678dd;">)</span>
  966. <span style="color: #c678dd;">(</span>define-key global-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-&lt;backspace&gt;"</span><span style="color: #61afef;">)</span>'delete-backward-to-boundary<span style="color: #c678dd;">)</span>
  967. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-S-&lt;down&gt;"</span><span style="color: #61afef;">)</span> 'mc/mark-next-like-this<span style="color: #c678dd;">)</span>
  968. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-&gt;"</span><span style="color: #61afef;">)</span> 'mc/mark-next-like-this-symbol<span style="color: #c678dd;">)</span>
  969. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-S-&lt;up&gt;"</span><span style="color: #61afef;">)</span> 'mc/mark-previous-like-this<span style="color: #c678dd;">)</span>
  970. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-&lt;"</span><span style="color: #61afef;">)</span> 'mc/mark-previous-like-this<span style="color: #c678dd;">)</span>
  971. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c C-&gt;"</span><span style="color: #61afef;">)</span> 'mc/mark-all-like-this<span style="color: #c678dd;">)</span>
  972. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #98c379;">"%"</span> 'match-paren<span style="color: #c678dd;">)</span>
  973. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-x ."</span><span style="color: #61afef;">)</span> 'dash-at-point<span style="color: #c678dd;">)</span>
  974. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-x ,"</span><span style="color: #61afef;">)</span> 'dash-at-point-with-docset<span style="color: #c678dd;">)</span>
  975. <span style="color: #c678dd;">(</span>global-set-key <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-s"</span><span style="color: #61afef;">)</span> <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>swiper <span style="color: #98c379;">(</span>format <span style="color: #98c379;">"%s"</span> <span style="color: #e5c07b;">(</span>thing-at-point 'symbol<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  976. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(dolist (n (number-sequence 1 9))</span>
  977. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(global-set-key (kbd (concat "M-" (int-to-string n)))</span>
  978. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(lambda () (interactive) (switch-shell n))))</span>
  979. <span style="color: #c678dd;">(</span>define-key company-active-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-d"</span><span style="color: #61afef;">)</span> 'company-show-doc-buffer<span style="color: #c678dd;">)</span>
  980. <span style="color: #c678dd;">(</span>define-key company-active-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-n"</span><span style="color: #61afef;">)</span> 'company-select-next<span style="color: #c678dd;">)</span>
  981. <span style="color: #c678dd;">(</span>define-key company-active-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-p"</span><span style="color: #61afef;">)</span> 'company-select-previous<span style="color: #c678dd;">)</span>
  982. <span style="color: #c678dd;">(</span>define-key company-active-map <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"&lt;tab&gt;"</span><span style="color: #61afef;">)</span> 'company-complete<span style="color: #c678dd;">)</span>
  983. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c p"</span><span style="color: #61afef;">)</span> 'counsel-projectile-switch-project<span style="color: #c678dd;">)</span>
  984. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c f"</span><span style="color: #61afef;">)</span> 'counsel-projectile-find-file<span style="color: #c678dd;">)</span>
  985. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c m"</span><span style="color: #61afef;">)</span> 'magit-status<span style="color: #c678dd;">)</span>
  986. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c D"</span><span style="color: #61afef;">)</span> 'define-word-at-point<span style="color: #c678dd;">)</span>
  987. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-@"</span><span style="color: #61afef;">)</span> 'er/expand-region<span style="color: #c678dd;">)</span>
  988. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-#"</span><span style="color: #61afef;">)</span> 'er/contract-region<span style="color: #c678dd;">)</span>
  989. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-S-c C-S-c"</span><span style="color: #61afef;">)</span> 'mc/edit-lines<span style="color: #c678dd;">)</span>
  990. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c b"</span><span style="color: #61afef;">)</span> 'ivy-switch-buffer<span style="color: #c678dd;">)</span>
  991. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c l"</span><span style="color: #61afef;">)</span> 'org-store-link<span style="color: #c678dd;">)</span>
  992. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c t"</span><span style="color: #61afef;">)</span> 'org-set-tags<span style="color: #c678dd;">)</span>
  993. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-u"</span><span style="color: #61afef;">)</span> 'upcase-dwim<span style="color: #c678dd;">)</span>
  994. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-c"</span><span style="color: #61afef;">)</span> 'capitalize-dwim<span style="color: #c678dd;">)</span>
  995. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-l"</span><span style="color: #61afef;">)</span> 'downcase-dwim<span style="color: #c678dd;">)</span>
  996. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-o"</span><span style="color: #61afef;">)</span> 'other-window<span style="color: #c678dd;">)</span>
  997. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c s"</span><span style="color: #61afef;">)</span> 'ispell-word<span style="color: #c678dd;">)</span>
  998. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c C-d"</span><span style="color: #61afef;">)</span> 'org-capture<span style="color: #c678dd;">)</span>
  999. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c &lt;up&gt;"</span><span style="color: #61afef;">)</span> 'windmove-up<span style="color: #c678dd;">)</span>
  1000. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c &lt;down&gt;"</span><span style="color: #61afef;">)</span> 'windmove-down<span style="color: #c678dd;">)</span>
  1001. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c &lt;left&gt;"</span><span style="color: #61afef;">)</span> 'windmove-left<span style="color: #c678dd;">)</span>
  1002. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c &lt;right&gt;"</span><span style="color: #61afef;">)</span> 'windmove-right<span style="color: #c678dd;">)</span>
  1003. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c a"</span><span style="color: #61afef;">)</span> <span style="color: #61afef;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #56b6c2;">()</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>org-agenda nil <span style="color: #98c379;">"n"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1004. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c e"</span><span style="color: #61afef;">)</span> 'find-user-init-file<span style="color: #c678dd;">)</span>
  1005. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-x f"</span><span style="color: #61afef;">)</span> 'phil-columns<span style="color: #c678dd;">)</span>
  1006. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-x k"</span><span style="color: #61afef;">)</span> 'kill-this-buffer-unless-scratch<span style="color: #c678dd;">)</span>
  1007. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c d"</span><span style="color: #61afef;">)</span> 'duplicate-thing<span style="color: #c678dd;">)</span>
  1008. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-c c"</span><span style="color: #61afef;">)</span> 'comment-or-uncomment-region-or-line<span style="color: #c678dd;">)</span>
  1009. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-;"</span><span style="color: #61afef;">)</span> 'comment-or-uncomment-region-or-line<span style="color: #c678dd;">)</span>
  1010. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-o"</span><span style="color: #61afef;">)</span> 'new-line-below<span style="color: #c678dd;">)</span>
  1011. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"C-S-o"</span><span style="color: #61afef;">)</span> 'new-line-above<span style="color: #c678dd;">)</span>
  1012. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"&lt;C-tab&gt;"</span><span style="color: #61afef;">)</span> 'tidy<span style="color: #c678dd;">)</span>
  1013. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-q"</span><span style="color: #61afef;">)</span> 'kill-this-buffer<span style="color: #c678dd;">)</span>
  1014. <span style="color: #c678dd;">(</span>define-key custom-bindings <span style="color: #61afef;">(</span>kbd <span style="color: #98c379;">"M-RET"</span><span style="color: #61afef;">)</span> '<span style="color: #61afef;">(</span>lambda <span style="color: #56b6c2;">()</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">interactive</span><span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>term <span style="color: #98c379;">(</span>getenv <span style="color: #98c379;">"SHELL"</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1015. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">define-minor-mode</span> <span style="color: #61afef;">custom-bindings-mode</span>
  1016. <span style="color: #565c64;">"A mode that activates custom-bindings."</span>
  1017. t nil custom-bindings<span style="color: #c678dd;">)</span>
  1018. </pre>
  1019. </div>
  1020. </div>
  1021. </div>
  1022. <div id="outline-container-orgeb794c7" class="outline-3">
  1023. <h3 id="orgeb794c7"><span class="section-number-3">3.9</span> UI</h3>
  1024. <div class="outline-text-3" id="text-3-9">
  1025. <div class="org-src-container">
  1026. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>member <span style="color: #98c379;">"PragmataPro"</span> <span style="color: #98c379;">(</span>font-family-list<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1027. <span style="color: #56b6c2;">(</span>set-face-attribute 'default nil <span style="color: #56b6c2;">:font</span> <span style="color: #98c379;">"PragmataPro-14"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1028. </pre>
  1029. </div>
  1030. </div>
  1031. <div id="outline-container-org7e266c5" class="outline-4">
  1032. <h4 id="org7e266c5"><span class="section-number-4">3.9.1</span> Modeline</h4>
  1033. <div class="outline-text-4" id="text-3-9-1">
  1034. <div class="org-src-container">
  1035. <pre class="src src-emacs-lisp"><span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">use-package</span><span style="color: #c678dd;">)</span>
  1036. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">anzu</span><span style="color: #c678dd;">)</span>
  1037. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">eldoc-eval</span><span style="color: #c678dd;">)</span>
  1038. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">iedit</span><span style="color: #c678dd;">)</span>
  1039. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">projectile</span><span style="color: #c678dd;">)</span>
  1040. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">require</span> '<span style="color: #d19a66;">all-the-icons</span><span style="color: #c678dd;">)</span>
  1041. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defsubst</span> <span style="color: #61afef;">doom--prepare-modeline-segments</span> <span style="color: #61afef;">(</span>segments<span style="color: #61afef;">)</span>
  1042. <span style="color: #61afef;">(</span><span style="color: #c678dd;">cl-loop</span> for seg in segments
  1043. if <span style="color: #56b6c2;">(</span>stringp seg<span style="color: #56b6c2;">)</span>
  1044. collect seg
  1045. else
  1046. collect <span style="color: #56b6c2;">(</span>list <span style="color: #98c379;">(</span>intern <span style="color: #e5c07b;">(</span>format <span style="color: #98c379;">"doom-modeline-segment--%s"</span> <span style="color: #d19a66;">(</span>symbol-name seg<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1047. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">doom--transient-counter</span> 0<span style="color: #c678dd;">)</span>
  1048. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defmacro</span> <span style="color: #61afef;">add-transient-hook!</span> <span style="color: #61afef;">(</span>hook <span style="color: #e5c07b;">&amp;rest</span> forms<span style="color: #61afef;">)</span>
  1049. <span style="color: #565c64;">"Attaches transient forms to a HOOK.</span>
  1050. <span style="color: #565c64;">HOOK can be a quoted hook or a sharp-quoted function (which will be advised).</span>
  1051. <span style="color: #565c64;">These forms will be evaluated once when that function/hook is first invoked,</span>
  1052. <span style="color: #565c64;">then it detaches itself."</span>
  1053. <span style="color: #61afef;">(</span><span style="color: #c678dd;">declare</span> <span style="color: #56b6c2;">(</span>indent 1<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1054. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>append <span style="color: #e5c07b;">(</span>eq <span style="color: #d19a66;">(</span>car forms<span style="color: #d19a66;">)</span> <span style="color: #56b6c2;">:after</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1055. <span style="color: #98c379;">(</span>fn <span style="color: #e5c07b;">(</span>intern <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">"doom-transient-hook-%s"</span> <span style="color: #e06c75;">(</span><span style="color: #c678dd;">cl-incf</span> doom--transient-counter<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1056. `<span style="color: #56b6c2;">(</span><span style="color: #c678dd;">when</span> ,hook
  1057. <span style="color: #98c379;">(</span>fset ',fn
  1058. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #d19a66;">(</span><span style="color: #e5c07b;">&amp;rest</span> _<span style="color: #d19a66;">)</span>
  1059. ,@forms
  1060. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>functionp ,hook<span style="color: #545862;">)</span> <span style="color: #545862;">(</span>advice-remove ,hook #',fn<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1061. <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>symbolp ,hook<span style="color: #545862;">)</span> <span style="color: #545862;">(</span>remove-hook ,hook #',fn<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1062. <span style="color: #d19a66;">(</span>unintern ',fn nil<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1063. <span style="color: #98c379;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>functionp ,hook<span style="color: #d19a66;">)</span>
  1064. <span style="color: #d19a66;">(</span>advice-add ,hook ,<span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> append <span style="color: #56b6c2;">:after</span> <span style="color: #56b6c2;">:before</span><span style="color: #e06c75;">)</span> #',fn<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1065. <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>symbolp ,hook<span style="color: #d19a66;">)</span>
  1066. <span style="color: #d19a66;">(</span>add-hook ,hook #',fn ,append<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1067. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defmacro</span> <span style="color: #61afef;">add-hook!</span> <span style="color: #61afef;">(</span><span style="color: #e5c07b;">&amp;rest</span> args<span style="color: #61afef;">)</span>
  1068. <span style="color: #565c64;">"A convenience macro for `</span><span style="color: #d19a66;">add-hook</span><span style="color: #565c64;">'. Takes, in order:</span>
  1069. <span style="color: #565c64;"> 1. Optional properties :local and/or :append, which will make the hook</span>
  1070. <span style="color: #565c64;"> buffer-local or append to the list of hooks (respectively),</span>
  1071. <span style="color: #565c64;"> 2. The hooks: either an unquoted major mode, an unquoted list of major-modes,</span>
  1072. <span style="color: #565c64;"> a quoted hook variable or a quoted list of hook variables. If unquoted, the</span>
  1073. <span style="color: #565c64;"> hooks will be resolved by appending -hook to each symbol.</span>
  1074. <span style="color: #565c64;"> 3. A function, list of functions, or body forms to be wrapped in a lambda.</span>
  1075. <span style="color: #565c64;">Examples:</span>
  1076. <span style="color: #565c64;"> (add-hook! 'some-mode-hook 'enable-something)</span>
  1077. <span style="color: #565c64;"> (add-hook! some-mode '(enable-something and-another))</span>
  1078. <span style="color: #565c64;"> (add-hook! '(one-mode-hook second-mode-hook) 'enable-something)</span>
  1079. <span style="color: #565c64;"> (add-hook! (one-mode second-mode) 'enable-something)</span>
  1080. <span style="color: #565c64;"> (add-hook! :append (one-mode second-mode) 'enable-something)</span>
  1081. <span style="color: #565c64;"> (add-hook! :local (one-mode second-mode) 'enable-something)</span>
  1082. <span style="color: #565c64;"> (add-hook! (one-mode second-mode) (setq v 5) (setq a 2))</span>
  1083. <span style="color: #565c64;"> (add-hook! :append :local (one-mode second-mode) (setq v 5) (setq a 2))</span>
  1084. <span style="color: #565c64;">Body forms can access the hook's arguments through the let-bound variable</span>
  1085. <span style="color: #565c64;">`</span><span style="color: #d19a66;">args</span><span style="color: #565c64;">'."</span>
  1086. <span style="color: #61afef;">(</span><span style="color: #c678dd;">declare</span> <span style="color: #56b6c2;">(</span>indent defun<span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>debug t<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1087. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>hook-fn 'add-hook<span style="color: #98c379;">)</span>
  1088. append-p local-p<span style="color: #56b6c2;">)</span>
  1089. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">while</span> <span style="color: #98c379;">(</span>keywordp <span style="color: #e5c07b;">(</span>car args<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1090. <span style="color: #98c379;">(</span><span style="color: #c678dd;">pcase</span> <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">pop</span> args<span style="color: #e5c07b;">)</span>
  1091. <span style="color: #e5c07b;">(</span><span style="color: #56b6c2;">:append</span> <span style="color: #d19a66;">(</span><span style="color: #c678dd;">setq</span> append-p t<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1092. <span style="color: #e5c07b;">(</span><span style="color: #56b6c2;">:local</span> <span style="color: #d19a66;">(</span><span style="color: #c678dd;">setq</span> local-p t<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1093. <span style="color: #e5c07b;">(</span><span style="color: #56b6c2;">:remove</span> <span style="color: #d19a66;">(</span><span style="color: #c678dd;">setq</span> hook-fn 'remove-hook<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1094. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>hooks <span style="color: #d19a66;">(</span>doom--resolve-hook-forms <span style="color: #e06c75;">(</span><span style="color: #c678dd;">pop</span> args<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1095. <span style="color: #e5c07b;">(</span>funcs
  1096. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>val <span style="color: #abb2bf;">(</span>car args<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1097. <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> <span style="color: #545862;">(</span>memq <span style="color: #abb2bf;">(</span>car-safe val<span style="color: #abb2bf;">)</span> '<span style="color: #abb2bf;">(</span><span style="color: #c678dd;">quote</span> function<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1098. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> <span style="color: #abb2bf;">(</span>cdr-safe <span style="color: #c678dd;">(</span>cadr val<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1099. <span style="color: #abb2bf;">(</span>cadr val<span style="color: #abb2bf;">)</span>
  1100. <span style="color: #abb2bf;">(</span>list <span style="color: #c678dd;">(</span>cadr val<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1101. <span style="color: #545862;">(</span>list args<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1102. forms<span style="color: #98c379;">)</span>
  1103. <span style="color: #98c379;">(</span><span style="color: #c678dd;">dolist</span> <span style="color: #e5c07b;">(</span>fn funcs<span style="color: #e5c07b;">)</span>
  1104. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">setq</span> fn <span style="color: #d19a66;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e06c75;">(</span>symbolp fn<span style="color: #e06c75;">)</span>
  1105. `<span style="color: #e06c75;">(</span><span style="color: #c678dd;">function</span> ,fn<span style="color: #e06c75;">)</span>
  1106. `<span style="color: #e06c75;">(</span><span style="color: #c678dd;">lambda</span> <span style="color: #545862;">(</span><span style="color: #e5c07b;">&amp;rest</span> _<span style="color: #545862;">)</span> ,@args<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1107. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">dolist</span> <span style="color: #d19a66;">(</span>hook hooks<span style="color: #d19a66;">)</span>
  1108. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">push</span> <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> <span style="color: #545862;">(</span>eq hook-fn 'remove-hook<span style="color: #545862;">)</span>
  1109. `<span style="color: #545862;">(</span>remove-hook ',hook ,fn ,local-p<span style="color: #545862;">)</span>
  1110. `<span style="color: #545862;">(</span>add-hook ',hook ,fn ,append-p ,local-p<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1111. forms<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1112. `<span style="color: #98c379;">(</span><span style="color: #c678dd;">progn</span> ,@<span style="color: #e5c07b;">(</span>nreverse forms<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1113. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defmacro</span> <span style="color: #61afef;">def-modeline-segment!</span> <span style="color: #61afef;">(</span>name <span style="color: #e5c07b;">&amp;rest</span> forms<span style="color: #61afef;">)</span>
  1114. <span style="color: #565c64;">"Defines a modeline segment and byte compiles it."</span>
  1115. <span style="color: #61afef;">(</span><span style="color: #c678dd;">declare</span> <span style="color: #56b6c2;">(</span>indent defun<span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>doc-string 2<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1116. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>sym <span style="color: #e5c07b;">(</span>intern <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">"doom-modeline-segment--%s"</span> name<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1117. `<span style="color: #56b6c2;">(</span><span style="color: #c678dd;">progn</span>
  1118. <span style="color: #98c379;">(</span><span style="color: #c678dd;">defun</span> ,sym <span style="color: #e5c07b;">()</span> ,@forms<span style="color: #98c379;">)</span>
  1119. ,<span style="color: #98c379;">(</span><span style="color: #c678dd;">unless</span> <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">bound-and-true-p</span> byte-compile-current-file<span style="color: #e5c07b;">)</span>
  1120. `<span style="color: #e5c07b;">(</span><span style="color: #c678dd;">let</span> <span style="color: #d19a66;">(</span>byte-compile-warnings<span style="color: #d19a66;">)</span>
  1121. <span style="color: #d19a66;">(</span>byte-compile #',sym<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1122. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defmacro</span> <span style="color: #61afef;">def-modeline!</span> <span style="color: #61afef;">(</span>name lhs <span style="color: #e5c07b;">&amp;optional</span> rhs<span style="color: #61afef;">)</span>
  1123. <span style="color: #565c64;">"Defines a modeline format and byte-compiles it. NAME is a symbol to identify</span>
  1124. <span style="color: #565c64;">it (used by `</span><span style="color: #d19a66;">doom-modeline</span><span style="color: #565c64;">' for retrieval). LHS and RHS are lists of symbols of</span>
  1125. <span style="color: #565c64;">modeline segments defined with `</span><span style="color: #d19a66;">def-modeline-segment!</span><span style="color: #565c64;">'.</span>
  1126. <span style="color: #565c64;">Example:</span>
  1127. <span style="color: #565c64;"> (def-modeline! minimal</span>
  1128. <span style="color: #565c64;"> (bar matches \" \" buffer-info)</span>
  1129. <span style="color: #565c64;"> (media-info major-mode))</span>
  1130. <span style="color: #565c64;"> (doom-set-modeline 'minimal t)"</span>
  1131. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>sym <span style="color: #e5c07b;">(</span>intern <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">"doom-modeline-format--%s"</span> name<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1132. <span style="color: #98c379;">(</span>lhs-forms <span style="color: #e5c07b;">(</span>doom--prepare-modeline-segments lhs<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1133. <span style="color: #98c379;">(</span>rhs-forms <span style="color: #e5c07b;">(</span>doom--prepare-modeline-segments rhs<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1134. `<span style="color: #56b6c2;">(</span><span style="color: #c678dd;">progn</span>
  1135. <span style="color: #98c379;">(</span><span style="color: #c678dd;">defun</span> ,sym <span style="color: #e5c07b;">()</span>
  1136. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">let</span> <span style="color: #d19a66;">(</span><span style="color: #e06c75;">(</span>lhs <span style="color: #545862;">(</span>list ,@lhs-forms<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1137. <span style="color: #e06c75;">(</span>rhs <span style="color: #545862;">(</span>list ,@rhs-forms<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1138. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>rhs-str <span style="color: #abb2bf;">(</span>format-mode-line rhs<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1139. <span style="color: #e06c75;">(</span>list lhs
  1140. <span style="color: #545862;">(</span>propertize
  1141. <span style="color: #98c379;">" "</span> 'display
  1142. `<span style="color: #abb2bf;">(</span><span style="color: #c678dd;">(</span>space <span style="color: #56b6c2;">:align-to</span> <span style="color: #61afef;">(</span>- <span style="color: #56b6c2;">(</span>+ right right-fringe right-margin<span style="color: #56b6c2;">)</span>
  1143. ,<span style="color: #56b6c2;">(</span>+ 1 <span style="color: #98c379;">(</span>string-width rhs-str<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1144. rhs-str<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1145. ,<span style="color: #98c379;">(</span><span style="color: #c678dd;">unless</span> <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">bound-and-true-p</span> byte-compile-current-file<span style="color: #e5c07b;">)</span>
  1146. `<span style="color: #e5c07b;">(</span><span style="color: #c678dd;">let</span> <span style="color: #d19a66;">(</span>byte-compile-warnings<span style="color: #d19a66;">)</span>
  1147. <span style="color: #d19a66;">(</span>byte-compile #',sym<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1148. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">doom-modeline</span> <span style="color: #61afef;">(</span>key<span style="color: #61afef;">)</span>
  1149. <span style="color: #565c64;">"Returns a mode-line configuration associated with KEY (a symbol). Throws an</span>
  1150. <span style="color: #565c64;">error if it doesn't exist."</span>
  1151. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>fn <span style="color: #e5c07b;">(</span>intern <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">"doom-modeline-format--%s"</span> key<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1152. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">when</span> <span style="color: #98c379;">(</span>functionp fn<span style="color: #98c379;">)</span>
  1153. `<span style="color: #98c379;">(</span><span style="color: #56b6c2;">:eval</span> <span style="color: #e5c07b;">(</span>,fn<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1154. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">doom-set-modeline</span> <span style="color: #61afef;">(</span>key <span style="color: #e5c07b;">&amp;optional</span> default<span style="color: #61afef;">)</span>
  1155. <span style="color: #565c64;">"Set the modeline format. Does nothing if the modeline KEY doesn't exist. If</span>
  1156. <span style="color: #565c64;">DEFAULT is non-nil, set the default mode-line for all buffers."</span>
  1157. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when-let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>modeline <span style="color: #e5c07b;">(</span>doom-modeline key<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1158. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">setf</span> <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> default
  1159. <span style="color: #e5c07b;">(</span>default-value 'mode-line-format<span style="color: #e5c07b;">)</span>
  1160. <span style="color: #e5c07b;">(</span>buffer-local-value 'mode-line-format <span style="color: #d19a66;">(</span>current-buffer<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1161. modeline<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1162. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">use-package</span> <span style="color: #d19a66;">eldoc-eval</span>
  1163. <span style="color: #56b6c2;">:config</span>
  1164. <span style="color: #61afef;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline-eldoc</span> <span style="color: #56b6c2;">(</span>text<span style="color: #56b6c2;">)</span>
  1165. <span style="color: #56b6c2;">(</span>concat <span style="color: #98c379;">(</span><span style="color: #c678dd;">when</span> <span style="color: #e5c07b;">(</span>display-graphic-p<span style="color: #e5c07b;">)</span>
  1166. <span style="color: #e5c07b;">(</span>+doom-modeline--make-xpm
  1167. <span style="color: #d19a66;">(</span>face-background 'doom-modeline-eldoc-bar nil t<span style="color: #d19a66;">)</span>
  1168. +doom-modeline-height
  1169. +doom-modeline-bar-width<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1170. text<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1171. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Show eldoc in the mode-line with `</span><span style="color: #d19a66;">eval-expression</span><span style="color: #545862;">'</span>
  1172. <span style="color: #61afef;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline--show-eldoc</span> <span style="color: #56b6c2;">(</span>input<span style="color: #56b6c2;">)</span>
  1173. <span style="color: #565c64;">"Display string STR in the mode-line next to minibuffer."</span>
  1174. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">with-current-buffer</span> <span style="color: #98c379;">(</span>eldoc-current-buffer<span style="color: #98c379;">)</span>
  1175. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>str <span style="color: #e06c75;">(</span><span style="color: #c678dd;">and</span> <span style="color: #545862;">(</span>stringp input<span style="color: #545862;">)</span> input<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1176. <span style="color: #d19a66;">(</span>mode-line-format <span style="color: #e06c75;">(</span><span style="color: #c678dd;">or</span> <span style="color: #545862;">(</span><span style="color: #c678dd;">and</span> str <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">or</span> <span style="color: #c678dd;">(</span>+doom-modeline-eldoc str<span style="color: #c678dd;">)</span> str<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1177. mode-line-format<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1178. mode-line-in-non-selected-windows<span style="color: #e5c07b;">)</span>
  1179. <span style="color: #e5c07b;">(</span>force-mode-line-update<span style="color: #e5c07b;">)</span>
  1180. <span style="color: #e5c07b;">(</span>sit-for eldoc-show-in-mode-line-delay<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1181. <span style="color: #61afef;">(</span><span style="color: #c678dd;">setq</span> eldoc-in-minibuffer-show-fn #'+doom-modeline--show-eldoc<span style="color: #61afef;">)</span>
  1182. <span style="color: #61afef;">(</span>eldoc-in-minibuffer-mode +1<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1183. <span style="color: #3e4451;">;; </span><span style="color: #545862;">anzu and evil-anzu expose current/total state that can be displayed in the</span>
  1184. <span style="color: #3e4451;">;; </span><span style="color: #545862;">mode-line.</span>
  1185. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">use-package</span> <span style="color: #d19a66;">anzu</span>
  1186. <span style="color: #56b6c2;">:init</span>
  1187. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(add-transient-hook! #'ex-start-search (require 'anzu))</span>
  1188. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(add-transient-hook! #'ex-start-word-search (require 'anzu))</span>
  1189. <span style="color: #56b6c2;">:config</span>
  1190. <span style="color: #61afef;">(</span><span style="color: #c678dd;">setq</span> anzu-cons-mode-line-p nil
  1191. anzu-minimum-input-length 1
  1192. anzu-search-threshold 250<span style="color: #61afef;">)</span>
  1193. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Avoid anzu conflicts across buffers</span>
  1194. <span style="color: #61afef;">(</span>mapc #'make-variable-buffer-local
  1195. '<span style="color: #56b6c2;">(</span>anzu--total-matched anzu--current-position anzu--state
  1196. anzu--cached-count anzu--cached-positions anzu--last-command
  1197. anzu--last-isearch-string anzu--overflow-p<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1198. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Ensure anzu state is cleared when searches &amp; iedit are done</span>
  1199. <span style="color: #61afef;">(</span>add-hook 'isearch-mode-end-hook #'anzu--reset-status t<span style="color: #61afef;">)</span>
  1200. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(add-hook '+evil-esc-hook #'anzu--reset-status t)</span>
  1201. <span style="color: #61afef;">(</span>add-hook 'iedit-mode-end-hook #'anzu--reset-status<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1202. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Keep `</span><span style="color: #d19a66;">+doom-modeline-current-window</span><span style="color: #545862;">' up-to-date</span>
  1203. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">+doom-modeline-current-window</span> <span style="color: #61afef;">(</span>frame-selected-window<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1204. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline|set-selected-window</span> <span style="color: #61afef;">(</span><span style="color: #e5c07b;">&amp;rest</span> _<span style="color: #61afef;">)</span>
  1205. <span style="color: #565c64;">"Sets `</span><span style="color: #d19a66;">+doom-modeline-current-window</span><span style="color: #565c64;">' appropriately"</span>
  1206. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when-let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>win <span style="color: #e5c07b;">(</span>frame-selected-window<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1207. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">unless</span> <span style="color: #98c379;">(</span>minibuffer-window-active-p win<span style="color: #98c379;">)</span>
  1208. <span style="color: #98c379;">(</span><span style="color: #c678dd;">setq</span> +doom-modeline-current-window win<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1209. <span style="color: #c678dd;">(</span>add-hook 'window-configuration-change-hook #'+doom-modeline|set-selected-window<span style="color: #c678dd;">)</span>
  1210. <span style="color: #c678dd;">(</span>add-hook 'focus-in-hook #'+doom-modeline|set-selected-window<span style="color: #c678dd;">)</span>
  1211. <span style="color: #c678dd;">(</span>advice-add #'handle-switch-frame <span style="color: #56b6c2;">:after</span> #'+doom-modeline|set-selected-window<span style="color: #c678dd;">)</span>
  1212. <span style="color: #c678dd;">(</span>advice-add #'select-window <span style="color: #56b6c2;">:after</span> #'+doom-modeline|set-selected-window<span style="color: #c678dd;">)</span>
  1213. <span style="color: #3e4451;">;; </span><span style="color: #545862;">fish-style modeline</span>
  1214. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">use-package</span> <span style="color: #d19a66;">shrink-path</span>
  1215. <span style="color: #56b6c2;">:commands</span> <span style="color: #61afef;">(</span>shrink-path-prompt shrink-path-file-mixed<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1216. <span style="color: #3e4451;">;;</span>
  1217. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Variables</span>
  1218. <span style="color: #3e4451;">;;</span>
  1219. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">+doom-modeline-height</span> 29
  1220. <span style="color: #565c64;">"How tall the mode-line should be (only respected in GUI emacs)."</span><span style="color: #c678dd;">)</span>
  1221. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">+doom-modeline-bar-width</span> 3
  1222. <span style="color: #565c64;">"How wide the mode-line bar should be (only respected in GUI emacs)."</span><span style="color: #c678dd;">)</span>
  1223. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">+doom-modeline-vspc</span>
  1224. <span style="color: #61afef;">(</span>propertize <span style="color: #98c379;">" "</span> 'face 'variable-pitch<span style="color: #61afef;">)</span>
  1225. <span style="color: #565c64;">"TODO"</span><span style="color: #c678dd;">)</span>
  1226. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">+doom-modeline-buffer-file-name-style</span> 'truncate-upto-project
  1227. <span style="color: #565c64;">"Determines the style used by `</span><span style="color: #d19a66;">+doom-modeline-buffer-file-name</span><span style="color: #565c64;">'.</span>
  1228. <span style="color: #565c64;">Given ~/Projects/FOSS/emacs/lisp/comint.el</span>
  1229. <span style="color: #565c64;">truncate-upto-project =&gt; ~/P/F/emacs/lisp/comint.el</span>
  1230. <span style="color: #565c64;">truncate-upto-root =&gt; ~/P/F/e/lisp/comint.el</span>
  1231. <span style="color: #565c64;">truncate-all =&gt; ~/P/F/e/l/comint.el</span>
  1232. <span style="color: #565c64;">relative-from-project =&gt; emacs/lisp/comint.el</span>
  1233. <span style="color: #565c64;">relative-to-project =&gt; lisp/comint.el</span>
  1234. <span style="color: #565c64;">file-name =&gt; comint.el"</span><span style="color: #c678dd;">)</span>
  1235. <span style="color: #3e4451;">;; </span><span style="color: #545862;">externs</span>
  1236. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">anzu--state</span> nil<span style="color: #c678dd;">)</span>
  1237. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">evil-mode</span> nil<span style="color: #c678dd;">)</span>
  1238. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">evil-state</span> nil<span style="color: #c678dd;">)</span>
  1239. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">evil-visual-selection</span> nil<span style="color: #c678dd;">)</span>
  1240. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">iedit-mode</span> nil<span style="color: #c678dd;">)</span>
  1241. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">all-the-icons-scale-factor</span><span style="color: #c678dd;">)</span>
  1242. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defvar</span> <span style="color: #e06c75;">all-the-icons-default-adjust</span><span style="color: #c678dd;">)</span>
  1243. <span style="color: #3e4451;">;;</span>
  1244. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Custom faces</span>
  1245. <span style="color: #3e4451;">;;</span>
  1246. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defgroup</span> <span style="color: #e5c07b;">+doom-modeline</span> nil
  1247. <span style="color: #565c64;">""</span>
  1248. <span style="color: #56b6c2;">:group</span> 'doom<span style="color: #c678dd;">)</span>
  1249. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-buffer-path</span>
  1250. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span>mode-line-emphasis bold<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1251. <span style="color: #565c64;">"Face used for the dirname part of the buffer path."</span>
  1252. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1253. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-buffer-file</span>
  1254. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span>mode-line-buffer-id bold<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1255. <span style="color: #565c64;">"Face used for the filename part of the mode-line buffer path."</span>
  1256. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1257. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-buffer-modified</span>
  1258. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span><span style="color: #e06c75; font-weight: bold;">error</span> bold<span style="color: #e5c07b;">)</span> <span style="color: #56b6c2;">:background</span> nil<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1259. <span style="color: #565c64;">"Face used for the 'unsaved' symbol in the mode-line."</span>
  1260. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1261. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-buffer-major-mode</span>
  1262. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span>mode-line-emphasis bold<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1263. <span style="color: #565c64;">"Face used for the major-mode segment in the mode-line."</span>
  1264. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1265. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-highlight</span>
  1266. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> mode-line-emphasis<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1267. <span style="color: #565c64;">"Face for bright segments of the mode-line."</span>
  1268. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1269. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-panel</span>
  1270. '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> mode-line-highlight<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1271. <span style="color: #565c64;">"Face for 'X out of Y' segments, such as `</span><span style="color: #d19a66;">+doom-modeline--anzu</span><span style="color: #565c64;">', `</span><span style="color: #d19a66;">+doom-modeline--evil-substitute</span><span style="color: #565c64;">' and</span>
  1272. <span style="color: #565c64;">`</span><span style="color: #d19a66;">iedit</span><span style="color: #565c64;">'"</span>
  1273. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1274. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-info</span>
  1275. `<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span>success bold<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1276. <span style="color: #565c64;">"Face for info-level messages in the modeline. Used by `</span><span style="color: #d19a66;">*vc</span><span style="color: #565c64;">'."</span>
  1277. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1278. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-warning</span>
  1279. `<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span>warning bold<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1280. <span style="color: #565c64;">"Face for warnings in the modeline. Used by `</span><span style="color: #d19a66;">*flycheck</span><span style="color: #565c64;">'"</span>
  1281. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1282. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-urgent</span>
  1283. `<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> <span style="color: #e5c07b;">(</span><span style="color: #e06c75; font-weight: bold;">error</span> bold<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1284. <span style="color: #565c64;">"Face for errors in the modeline. Used by `</span><span style="color: #d19a66;">*flycheck</span><span style="color: #565c64;">'"</span>
  1285. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1286. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Bar</span>
  1287. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-bar</span> '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> highlight<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1288. <span style="color: #565c64;">"The face used for the left-most bar on the mode-line of an active window."</span>
  1289. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1290. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-eldoc-bar</span> '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> shadow<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1291. <span style="color: #565c64;">"The face used for the left-most bar on the mode-line when eldoc-eval is</span>
  1292. <span style="color: #565c64;">active."</span>
  1293. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1294. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defface</span> <span style="color: #e06c75;">doom-modeline-inactive-bar</span> '<span style="color: #61afef;">(</span><span style="color: #56b6c2;">(</span>t <span style="color: #98c379;">(</span><span style="color: #56b6c2;">:inherit</span> warning <span style="color: #56b6c2;">:inverse-video</span> t<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span>
  1295. <span style="color: #565c64;">"The face used for the left-most bar on the mode-line of an inactive window."</span>
  1296. <span style="color: #56b6c2;">:group</span> '+doom-modeline<span style="color: #c678dd;">)</span>
  1297. <span style="color: #3e4451;">;;</span>
  1298. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Modeline helpers</span>
  1299. <span style="color: #3e4451;">;;</span>
  1300. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defsubst</span> <span style="color: #61afef;">active</span> <span style="color: #61afef;">()</span>
  1301. <span style="color: #61afef;">(</span>eq <span style="color: #56b6c2;">(</span>selected-window<span style="color: #56b6c2;">)</span> +doom-modeline-current-window<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1302. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Inspired from `</span><span style="color: #d19a66;">powerline</span><span style="color: #545862;">'s `</span><span style="color: #d19a66;">pl/make-xpm</span><span style="color: #545862;">'.</span>
  1303. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline--make-xpm</span> <span style="color: #61afef;">(</span>color height width<span style="color: #61afef;">)</span>
  1304. <span style="color: #565c64;">"Create an XPM bitmap."</span>
  1305. <span style="color: #61afef;">(</span>propertize
  1306. <span style="color: #98c379;">" "</span> 'display
  1307. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>data <span style="color: #d19a66;">(</span>make-list height <span style="color: #e06c75;">(</span>make-list width 1<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1308. <span style="color: #e5c07b;">(</span>color <span style="color: #d19a66;">(</span><span style="color: #c678dd;">or</span> color <span style="color: #98c379;">"None"</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1309. <span style="color: #98c379;">(</span>create-image
  1310. <span style="color: #e5c07b;">(</span>concat
  1311. <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">"/* XPM */\nstatic char * percent[] = {\n\"%i %i 2 1\",\n\". c %s\",\n\" c %s\","</span>
  1312. <span style="color: #e06c75;">(</span>length <span style="color: #545862;">(</span>car data<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1313. <span style="color: #e06c75;">(</span>length data<span style="color: #e06c75;">)</span>
  1314. color
  1315. color<span style="color: #d19a66;">)</span>
  1316. <span style="color: #d19a66;">(</span>apply #'concat
  1317. <span style="color: #e06c75;">(</span><span style="color: #c678dd;">cl-loop</span> with idx = 0
  1318. with len = <span style="color: #545862;">(</span>length data<span style="color: #545862;">)</span>
  1319. for dl in data
  1320. do <span style="color: #545862;">(</span><span style="color: #c678dd;">cl-incf</span> idx<span style="color: #545862;">)</span>
  1321. collect
  1322. <span style="color: #545862;">(</span>concat <span style="color: #98c379;">"\""</span>
  1323. <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">cl-loop</span> for d in dl
  1324. if <span style="color: #c678dd;">(</span>= d 0<span style="color: #c678dd;">)</span> collect <span style="color: #c678dd;">(</span>string-to-char <span style="color: #98c379;">" "</span><span style="color: #c678dd;">)</span>
  1325. else collect <span style="color: #c678dd;">(</span>string-to-char <span style="color: #98c379;">"."</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1326. <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> <span style="color: #c678dd;">(</span>eq idx len<span style="color: #c678dd;">)</span> <span style="color: #98c379;">"\"};"</span> <span style="color: #98c379;">"\",\n"</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1327. 'xpm t <span style="color: #56b6c2;">:ascent</span> 'center<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1328. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline-buffer-file-name</span> <span style="color: #61afef;">()</span>
  1329. <span style="color: #565c64;">"Propertized `</span><span style="color: #d19a66;">buffer-file-name</span><span style="color: #565c64;">' based on `</span><span style="color: #d19a66;">+doom-modeline-buffer-file-name-style</span><span style="color: #565c64;">'."</span>
  1330. <span style="color: #61afef;">(</span>propertize
  1331. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">pcase</span> +doom-modeline-buffer-file-name-style
  1332. <span style="color: #98c379;">(</span>'truncate-upto-project <span style="color: #e5c07b;">(</span>+doom-modeline--buffer-file-name 'shrink<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1333. <span style="color: #98c379;">(</span>'truncate-upto-root <span style="color: #e5c07b;">(</span>+doom-modeline--buffer-file-name-truncate<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1334. <span style="color: #98c379;">(</span>'truncate-all <span style="color: #e5c07b;">(</span>+doom-modeline--buffer-file-name-truncate t<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1335. <span style="color: #98c379;">(</span>'relative-to-project <span style="color: #e5c07b;">(</span>+doom-modeline--buffer-file-name-relative<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1336. <span style="color: #98c379;">(</span>'relative-from-project <span style="color: #e5c07b;">(</span>+doom-modeline--buffer-file-name-relative 'include-project<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1337. <span style="color: #98c379;">(</span>'file-name <span style="color: #e5c07b;">(</span>propertize <span style="color: #d19a66;">(</span>file-name-nondirectory buffer-file-name<span style="color: #d19a66;">)</span>
  1338. 'face
  1339. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>face <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">or</span> <span style="color: #c678dd;">(</span><span style="color: #c678dd;">and</span> <span style="color: #61afef;">(</span>buffer-modified-p<span style="color: #61afef;">)</span>
  1340. 'doom-modeline-buffer-modified<span style="color: #c678dd;">)</span>
  1341. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">and</span> <span style="color: #61afef;">(</span>active<span style="color: #61afef;">)</span>
  1342. 'doom-modeline-buffer-file<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1343. <span style="color: #e06c75;">(</span><span style="color: #c678dd;">when</span> face `<span style="color: #545862;">(</span><span style="color: #56b6c2;">:inherit</span> ,face<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1344. 'help-echo buffer-file-truename<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1345. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline--buffer-file-name-truncate</span> <span style="color: #61afef;">(</span><span style="color: #e5c07b;">&amp;optional</span> truncate-tail<span style="color: #61afef;">)</span>
  1346. <span style="color: #565c64;">"Propertized `</span><span style="color: #d19a66;">buffer-file-name</span><span style="color: #565c64;">' that truncates every dir along path.</span>
  1347. <span style="color: #565c64;">If TRUNCATE-TAIL is t also truncate the parent directory of the file."</span>
  1348. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>dirs <span style="color: #e5c07b;">(</span>shrink-path-prompt <span style="color: #d19a66;">(</span>file-name-directory buffer-file-truename<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1349. <span style="color: #98c379;">(</span>active <span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1350. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>null dirs<span style="color: #98c379;">)</span>
  1351. <span style="color: #98c379;">(</span>propertize <span style="color: #98c379;">"%b"</span> 'face <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-file<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1352. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>modified-faces <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> <span style="color: #545862;">(</span>buffer-modified-p<span style="color: #545862;">)</span> 'doom-modeline-buffer-modified<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1353. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">let</span> <span style="color: #d19a66;">(</span><span style="color: #e06c75;">(</span>dirname <span style="color: #545862;">(</span>car dirs<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1354. <span style="color: #e06c75;">(</span>basename <span style="color: #545862;">(</span>cdr dirs<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1355. <span style="color: #e06c75;">(</span>dir-faces <span style="color: #545862;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-project-root-dir<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1356. <span style="color: #e06c75;">(</span>file-faces <span style="color: #545862;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-file<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1357. <span style="color: #d19a66;">(</span>concat <span style="color: #e06c75;">(</span>propertize <span style="color: #545862;">(</span>concat dirname
  1358. <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> truncate-tail <span style="color: #c678dd;">(</span>substring basename 0 1<span style="color: #c678dd;">)</span> basename<span style="color: #abb2bf;">)</span>
  1359. <span style="color: #98c379;">"/"</span><span style="color: #545862;">)</span>
  1360. 'face <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> dir-faces `<span style="color: #abb2bf;">(</span><span style="color: #56b6c2;">:inherit</span> ,dir-faces<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1361. <span style="color: #e06c75;">(</span>propertize <span style="color: #545862;">(</span>file-name-nondirectory buffer-file-name<span style="color: #545862;">)</span>
  1362. 'face <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> file-faces `<span style="color: #abb2bf;">(</span><span style="color: #56b6c2;">:inherit</span> ,file-faces<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1363. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline--buffer-file-name-relative</span> <span style="color: #61afef;">(</span><span style="color: #e5c07b;">&amp;optional</span> include-project<span style="color: #61afef;">)</span>
  1364. <span style="color: #565c64;">"Propertized `</span><span style="color: #d19a66;">buffer-file-name</span><span style="color: #565c64;">' showing directories relative to project's root only."</span>
  1365. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>root <span style="color: #e5c07b;">(</span>projectile-project-root<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1366. <span style="color: #98c379;">(</span>active <span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1367. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>null root<span style="color: #98c379;">)</span>
  1368. <span style="color: #98c379;">(</span>propertize <span style="color: #98c379;">"%b"</span> 'face <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-file<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1369. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>modified-faces <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> <span style="color: #545862;">(</span>buffer-modified-p<span style="color: #545862;">)</span> 'doom-modeline-buffer-modified<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1370. <span style="color: #d19a66;">(</span>relative-dirs <span style="color: #e06c75;">(</span>file-relative-name <span style="color: #545862;">(</span>file-name-directory buffer-file-truename<span style="color: #545862;">)</span>
  1371. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> include-project <span style="color: #abb2bf;">(</span>concat root <span style="color: #98c379;">"../"</span><span style="color: #abb2bf;">)</span> root<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1372. <span style="color: #d19a66;">(</span>relative-faces <span style="color: #e06c75;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-path<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1373. <span style="color: #d19a66;">(</span>file-faces <span style="color: #e06c75;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-file<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1374. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> <span style="color: #d19a66;">(</span>equal <span style="color: #98c379;">"./"</span> relative-dirs<span style="color: #d19a66;">)</span> <span style="color: #d19a66;">(</span><span style="color: #c678dd;">setq</span> relative-dirs <span style="color: #98c379;">""</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1375. <span style="color: #e5c07b;">(</span>concat <span style="color: #d19a66;">(</span>propertize relative-dirs 'face <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> relative-faces `<span style="color: #545862;">(</span><span style="color: #56b6c2;">:inherit</span> ,relative-faces<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1376. <span style="color: #d19a66;">(</span>propertize <span style="color: #e06c75;">(</span>file-name-nondirectory buffer-file-truename<span style="color: #e06c75;">)</span>
  1377. 'face <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> file-faces `<span style="color: #545862;">(</span><span style="color: #56b6c2;">:inherit</span> ,file-faces<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1378. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline--buffer-file-name</span> <span style="color: #61afef;">(</span>truncate-project-root-parent<span style="color: #61afef;">)</span>
  1379. <span style="color: #565c64;">"Propertized `</span><span style="color: #d19a66;">buffer-file-name</span><span style="color: #565c64;">'.</span>
  1380. <span style="color: #565c64;">If TRUNCATE-PROJECT-ROOT-PARENT is t space will be saved by truncating it down</span>
  1381. <span style="color: #565c64;">fish-shell style.</span>
  1382. <span style="color: #565c64;">Example:</span>
  1383. <span style="color: #565c64;">~/Projects/FOSS/emacs/lisp/comint.el =&gt; ~/P/F/emacs/lisp/comint.el"</span>
  1384. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>project-root <span style="color: #e5c07b;">(</span>projectile-project-root<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1385. <span style="color: #98c379;">(</span>file-name-split <span style="color: #e5c07b;">(</span>shrink-path-file-mixed project-root
  1386. <span style="color: #d19a66;">(</span>file-name-directory buffer-file-truename<span style="color: #d19a66;">)</span>
  1387. buffer-file-truename<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1388. <span style="color: #98c379;">(</span>active <span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1389. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>null file-name-split<span style="color: #98c379;">)</span>
  1390. <span style="color: #98c379;">(</span>propertize <span style="color: #98c379;">"%b"</span> 'face <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-file<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1391. <span style="color: #98c379;">(</span><span style="color: #c678dd;">pcase-let</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>`<span style="color: #e06c75;">(</span>,root-path-parent ,project ,relative-path ,filename<span style="color: #e06c75;">)</span> file-name-split<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1392. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">let</span> <span style="color: #d19a66;">(</span><span style="color: #e06c75;">(</span>modified-faces <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> <span style="color: #abb2bf;">(</span>buffer-modified-p<span style="color: #abb2bf;">)</span> 'doom-modeline-buffer-modified<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1393. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>sp-faces <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #c678dd;">(</span><span style="color: #c678dd;">if</span> active 'font-lock-comment-face<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1394. <span style="color: #545862;">(</span>project-faces <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #c678dd;">(</span><span style="color: #c678dd;">if</span> active 'font-lock-string-face<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1395. <span style="color: #545862;">(</span>relative-faces <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #c678dd;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-path<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1396. <span style="color: #545862;">(</span>file-faces <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">or</span> modified-faces <span style="color: #c678dd;">(</span><span style="color: #c678dd;">if</span> active 'doom-modeline-buffer-file<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1397. <span style="color: #e06c75;">(</span><span style="color: #c678dd;">let</span> <span style="color: #545862;">(</span><span style="color: #abb2bf;">(</span>sp-props `<span style="color: #c678dd;">(</span>,@<span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> sp-faces `<span style="color: #56b6c2;">(</span><span style="color: #56b6c2;">:inherit</span> ,sp-faces<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span> ,@<span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> active '<span style="color: #56b6c2;">(</span><span style="color: #56b6c2;">:weight</span> bold<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1398. <span style="color: #abb2bf;">(</span>project-props `<span style="color: #c678dd;">(</span>,@<span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> project-faces `<span style="color: #56b6c2;">(</span><span style="color: #56b6c2;">:inherit</span> ,project-faces<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span> ,@<span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> active '<span style="color: #56b6c2;">(</span><span style="color: #56b6c2;">:weight</span> bold<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1399. <span style="color: #abb2bf;">(</span>relative-props `<span style="color: #c678dd;">(</span>,@<span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> relative-faces `<span style="color: #56b6c2;">(</span><span style="color: #56b6c2;">:inherit</span> ,relative-faces<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1400. <span style="color: #abb2bf;">(</span>file-props `<span style="color: #c678dd;">(</span>,@<span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> file-faces `<span style="color: #56b6c2;">(</span><span style="color: #56b6c2;">:inherit</span> ,file-faces<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1401. <span style="color: #545862;">(</span>concat <span style="color: #abb2bf;">(</span>propertize <span style="color: #c678dd;">(</span><span style="color: #c678dd;">if</span> truncate-project-root-parent
  1402. root-path-parent
  1403. <span style="color: #61afef;">(</span>abbreviate-file-name project-root<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1404. 'face sp-props<span style="color: #abb2bf;">)</span>
  1405. <span style="color: #abb2bf;">(</span>propertize <span style="color: #c678dd;">(</span>concat project <span style="color: #98c379;">"/"</span><span style="color: #c678dd;">)</span> 'face project-props<span style="color: #abb2bf;">)</span>
  1406. <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> relative-path <span style="color: #c678dd;">(</span>propertize relative-path 'face relative-props<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1407. <span style="color: #abb2bf;">(</span>propertize filename 'face file-props<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1408. <span style="color: #3e4451;">;;</span>
  1409. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Segments</span>
  1410. <span style="color: #3e4451;">;;</span>
  1411. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> buffer-default-directory
  1412. <span style="color: #565c64;">"Displays `</span><span style="color: #d19a66;">default-directory</span><span style="color: #565c64;">'. This is for special buffers like the scratch</span>
  1413. <span style="color: #565c64;">buffer where knowing the current project directory is important."</span>
  1414. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>face <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> <span style="color: #d19a66;">(</span>active<span style="color: #d19a66;">)</span> 'doom-modeline-buffer-path<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1415. <span style="color: #56b6c2;">(</span>concat <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>display-graphic-p<span style="color: #e5c07b;">)</span> <span style="color: #98c379;">" "</span><span style="color: #98c379;">)</span>
  1416. <span style="color: #98c379;">(</span>all-the-icons-octicon
  1417. <span style="color: #98c379;">"file-directory"</span>
  1418. <span style="color: #56b6c2;">:face</span> face
  1419. <span style="color: #56b6c2;">:v-adjust</span> -0.05
  1420. <span style="color: #56b6c2;">:height</span> 1.25<span style="color: #98c379;">)</span>
  1421. <span style="color: #98c379;">(</span>propertize <span style="color: #e5c07b;">(</span>concat <span style="color: #98c379;">" "</span> <span style="color: #d19a66;">(</span>abbreviate-file-name default-directory<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1422. 'face face<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1423. <span style="color: #3e4451;">;;</span>
  1424. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> buffer-info
  1425. <span style="color: #565c64;">"Combined information about the current buffer, including the current working</span>
  1426. <span style="color: #565c64;">directory, the file name, and its state (modified, read-only or non-existent)."</span>
  1427. <span style="color: #61afef;">(</span>concat <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #98c379;">(</span>buffer-read-only
  1428. <span style="color: #e5c07b;">(</span>concat <span style="color: #d19a66;">(</span>all-the-icons-octicon
  1429. <span style="color: #98c379;">"lock"</span>
  1430. <span style="color: #56b6c2;">:face</span> 'doom-modeline-warning
  1431. <span style="color: #56b6c2;">:v-adjust</span> -0.05<span style="color: #d19a66;">)</span>
  1432. <span style="color: #98c379;">" "</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1433. <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>buffer-modified-p<span style="color: #e5c07b;">)</span>
  1434. <span style="color: #e5c07b;">(</span>concat <span style="color: #d19a66;">(</span>all-the-icons-faicon
  1435. <span style="color: #98c379;">"floppy-o"</span>
  1436. <span style="color: #56b6c2;">:face</span> 'doom-modeline-buffer-modified
  1437. <span style="color: #56b6c2;">:v-adjust</span> -0.0575<span style="color: #d19a66;">)</span>
  1438. <span style="color: #98c379;">" "</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1439. <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span><span style="color: #c678dd;">and</span> buffer-file-name
  1440. <span style="color: #d19a66;">(</span>not <span style="color: #e06c75;">(</span>file-exists-p buffer-file-name<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1441. <span style="color: #e5c07b;">(</span>concat <span style="color: #d19a66;">(</span>all-the-icons-octicon
  1442. <span style="color: #98c379;">"circle-slash"</span>
  1443. <span style="color: #56b6c2;">:face</span> 'doom-modeline-urgent
  1444. <span style="color: #56b6c2;">:v-adjust</span> -0.05<span style="color: #d19a66;">)</span>
  1445. <span style="color: #98c379;">" "</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1446. <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>buffer-narrowed-p<span style="color: #e5c07b;">)</span>
  1447. <span style="color: #e5c07b;">(</span>concat <span style="color: #d19a66;">(</span>all-the-icons-octicon
  1448. <span style="color: #98c379;">"fold"</span>
  1449. <span style="color: #56b6c2;">:face</span> 'doom-modeline-warning
  1450. <span style="color: #56b6c2;">:v-adjust</span> -0.05<span style="color: #d19a66;">)</span>
  1451. <span style="color: #98c379;">" "</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1452. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> buffer-file-name
  1453. <span style="color: #98c379;">(</span>+doom-modeline-buffer-file-name<span style="color: #98c379;">)</span>
  1454. <span style="color: #98c379;">"%b"</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1455. <span style="color: #3e4451;">;;</span>
  1456. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> buffer-info-simple
  1457. <span style="color: #565c64;">"Display only the current buffer's name, but with fontification."</span>
  1458. <span style="color: #61afef;">(</span>propertize
  1459. <span style="color: #98c379;">"%b"</span>
  1460. 'face <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span><span style="color: #c678dd;">and</span> buffer-file-name <span style="color: #d19a66;">(</span>buffer-modified-p<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1461. 'doom-modeline-buffer-modified<span style="color: #98c379;">)</span>
  1462. <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span> 'doom-modeline-buffer-file<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1463. <span style="color: #3e4451;">;;</span>
  1464. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> buffer-encoding
  1465. <span style="color: #565c64;">"Displays the encoding and eol style of the buffer the same way Atom does."</span>
  1466. <span style="color: #61afef;">(</span>concat <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">pcase</span> <span style="color: #98c379;">(</span>coding-system-eol-type buffer-file-coding-system<span style="color: #98c379;">)</span>
  1467. <span style="color: #98c379;">(</span>0 <span style="color: #98c379;">"LF "</span><span style="color: #98c379;">)</span>
  1468. <span style="color: #98c379;">(</span>1 <span style="color: #98c379;">"CRLF "</span><span style="color: #98c379;">)</span>
  1469. <span style="color: #98c379;">(</span>2 <span style="color: #98c379;">"CR "</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1470. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>sys <span style="color: #d19a66;">(</span>coding-system-plist buffer-file-coding-system<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1471. <span style="color: #98c379;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>memq <span style="color: #e06c75;">(</span>plist-get sys <span style="color: #56b6c2;">:category</span><span style="color: #e06c75;">)</span> '<span style="color: #e06c75;">(</span>coding-category-undecided coding-category-utf-8<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1472. <span style="color: #98c379;">"UTF-8"</span><span style="color: #e5c07b;">)</span>
  1473. <span style="color: #e5c07b;">(</span>t <span style="color: #d19a66;">(</span>upcase <span style="color: #e06c75;">(</span>symbol-name <span style="color: #545862;">(</span>plist-get sys <span style="color: #56b6c2;">:name</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1474. <span style="color: #98c379;">" "</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1475. <span style="color: #3e4451;">;;</span>
  1476. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> major-mode
  1477. <span style="color: #565c64;">"The major mode, including process, environment and text-scale info."</span>
  1478. <span style="color: #61afef;">(</span>propertize
  1479. <span style="color: #56b6c2;">(</span>concat <span style="color: #98c379;">(</span>format-mode-line mode-name<span style="color: #98c379;">)</span>
  1480. <span style="color: #98c379;">(</span><span style="color: #c678dd;">when</span> <span style="color: #e5c07b;">(</span>stringp mode-line-process<span style="color: #e5c07b;">)</span>
  1481. mode-line-process<span style="color: #98c379;">)</span>
  1482. <span style="color: #98c379;">(</span><span style="color: #c678dd;">and</span> <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">featurep</span> '<span style="color: #d19a66;">face-remap</span><span style="color: #e5c07b;">)</span>
  1483. <span style="color: #e5c07b;">(</span>/= text-scale-mode-amount 0<span style="color: #e5c07b;">)</span>
  1484. <span style="color: #e5c07b;">(</span>format <span style="color: #98c379;">" (%+d)"</span> text-scale-mode-amount<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1485. 'face <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> <span style="color: #98c379;">(</span>active<span style="color: #98c379;">)</span> 'doom-modeline-buffer-major-mode<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1486. <span style="color: #3e4451;">;;</span>
  1487. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> vcs
  1488. <span style="color: #565c64;">"Displays the current branch, colored based on its state."</span>
  1489. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">and</span> vc-mode buffer-file-name<span style="color: #56b6c2;">)</span>
  1490. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let*</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>backend <span style="color: #d19a66;">(</span>vc-backend buffer-file-name<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1491. <span style="color: #e5c07b;">(</span>state <span style="color: #d19a66;">(</span>vc-state buffer-file-name backend<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1492. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>face 'mode-line-inactive<span style="color: #d19a66;">)</span>
  1493. <span style="color: #d19a66;">(</span>active <span style="color: #e06c75;">(</span>active<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1494. <span style="color: #d19a66;">(</span>all-the-icons-default-adjust -0.1<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1495. <span style="color: #e5c07b;">(</span>concat <span style="color: #98c379;">" "</span>
  1496. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>memq state '<span style="color: #abb2bf;">(</span>edited added<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1497. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">setq</span> face 'doom-modeline-info<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1498. <span style="color: #545862;">(</span>all-the-icons-octicon
  1499. <span style="color: #98c379;">"git-compare"</span>
  1500. <span style="color: #56b6c2;">:face</span> face
  1501. <span style="color: #56b6c2;">:v-adjust</span> -0.05<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1502. <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>eq state 'needs-merge<span style="color: #545862;">)</span>
  1503. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">setq</span> face 'doom-modeline-info<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1504. <span style="color: #545862;">(</span>all-the-icons-octicon <span style="color: #98c379;">"git-merge"</span> <span style="color: #56b6c2;">:face</span> face<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1505. <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>eq state 'needs-update<span style="color: #545862;">)</span>
  1506. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">setq</span> face 'doom-modeline-warning<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1507. <span style="color: #545862;">(</span>all-the-icons-octicon <span style="color: #98c379;">"arrow-down"</span> <span style="color: #56b6c2;">:face</span> face<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1508. <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>memq state '<span style="color: #abb2bf;">(</span>removed conflict unregistered<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1509. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">setq</span> face 'doom-modeline-urgent<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1510. <span style="color: #545862;">(</span>all-the-icons-octicon <span style="color: #98c379;">"alert"</span> <span style="color: #56b6c2;">:face</span> face<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1511. <span style="color: #e06c75;">(</span>t
  1512. <span style="color: #545862;">(</span><span style="color: #c678dd;">if</span> active <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">setq</span> face 'font-lock-doc-face<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1513. <span style="color: #545862;">(</span>all-the-icons-octicon
  1514. <span style="color: #98c379;">"git-compare"</span>
  1515. <span style="color: #56b6c2;">:face</span> face
  1516. <span style="color: #56b6c2;">:v-adjust</span> -0.05<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1517. <span style="color: #98c379;">" "</span>
  1518. <span style="color: #d19a66;">(</span>propertize <span style="color: #e06c75;">(</span>substring vc-mode <span style="color: #545862;">(</span>+ <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> <span style="color: #c678dd;">(</span>eq backend 'Hg<span style="color: #c678dd;">)</span> 2 3<span style="color: #abb2bf;">)</span> 2<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1519. 'face <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> active face<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1520. <span style="color: #98c379;">" "</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1521. <span style="color: #3e4451;">;;</span>
  1522. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-ml-icon</span> <span style="color: #61afef;">(</span>icon <span style="color: #e5c07b;">&amp;optional</span> text face voffset<span style="color: #61afef;">)</span>
  1523. <span style="color: #565c64;">"Displays an octicon ICON with FACE, followed by TEXT. Uses</span>
  1524. <span style="color: #565c64;">`</span><span style="color: #d19a66;">all-the-icons-octicon</span><span style="color: #565c64;">' to fetch the icon."</span>
  1525. <span style="color: #61afef;">(</span>concat <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> vc-mode <span style="color: #98c379;">" "</span> <span style="color: #98c379;">" "</span><span style="color: #56b6c2;">)</span>
  1526. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">when</span> icon
  1527. <span style="color: #98c379;">(</span>concat
  1528. <span style="color: #e5c07b;">(</span>all-the-icons-material icon <span style="color: #56b6c2;">:face</span> face <span style="color: #56b6c2;">:height</span> 1.1 <span style="color: #56b6c2;">:v-adjust</span> <span style="color: #d19a66;">(</span><span style="color: #c678dd;">or</span> voffset -0.2<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1529. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> text +doom-modeline-vspc<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1530. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">when</span> text
  1531. <span style="color: #98c379;">(</span>propertize text 'face face<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1532. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">if</span> vc-mode <span style="color: #98c379;">" "</span> <span style="color: #98c379;">" "</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1533. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> flycheck
  1534. <span style="color: #565c64;">"Displays color-coded flycheck error status in the current buffer with pretty</span>
  1535. <span style="color: #565c64;">icons."</span>
  1536. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span>boundp 'flycheck-last-status-change<span style="color: #56b6c2;">)</span>
  1537. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">pcase</span> flycheck-last-status-change
  1538. <span style="color: #98c379;">(</span>'finished <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> flycheck-current-errors
  1539. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">let-alist</span> <span style="color: #e06c75;">(</span>flycheck-count-errors flycheck-current-errors<span style="color: #e06c75;">)</span>
  1540. <span style="color: #e06c75;">(</span><span style="color: #c678dd;">let</span> <span style="color: #545862;">(</span><span style="color: #abb2bf;">(</span>sum <span style="color: #c678dd;">(</span>+ <span style="color: #61afef;">(</span><span style="color: #c678dd;">or</span> .error 0<span style="color: #61afef;">)</span> <span style="color: #61afef;">(</span><span style="color: #c678dd;">or</span> .warning 0<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1541. <span style="color: #545862;">(</span>+doom-ml-icon <span style="color: #98c379;">"do_not_disturb_alt"</span>
  1542. <span style="color: #abb2bf;">(</span>number-to-string sum<span style="color: #abb2bf;">)</span>
  1543. <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">if</span> .error 'doom-modeline-urgent 'doom-modeline-warning<span style="color: #abb2bf;">)</span>
  1544. -0.25<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1545. <span style="color: #d19a66;">(</span>+doom-ml-icon <span style="color: #98c379;">"check"</span> nil 'doom-modeline-info<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1546. <span style="color: #98c379;">(</span>'running <span style="color: #e5c07b;">(</span>+doom-ml-icon <span style="color: #98c379;">"access_time"</span> nil 'font-lock-doc-face -0.25<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1547. <span style="color: #98c379;">(</span>'no-checker <span style="color: #e5c07b;">(</span>+doom-ml-icon <span style="color: #98c379;">"sim_card_alert"</span> <span style="color: #98c379;">"-"</span> 'font-lock-doc-face<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1548. <span style="color: #98c379;">(</span>'errored <span style="color: #e5c07b;">(</span>+doom-ml-icon <span style="color: #98c379;">"sim_card_alert"</span> <span style="color: #98c379;">"Error"</span> 'doom-modeline-urgent<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1549. <span style="color: #98c379;">(</span>'interrupted <span style="color: #e5c07b;">(</span>+doom-ml-icon <span style="color: #98c379;">"pause"</span> <span style="color: #98c379;">"Interrupted"</span> 'font-lock-doc-face<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1550. <span style="color: #3e4451;">;; </span><span style="color: #545862;">('interrupted (+doom-ml-icon "x" "Interrupted" 'font-lock-doc-face)))))</span>
  1551. <span style="color: #3e4451;">;;</span>
  1552. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defsubst</span> <span style="color: #61afef;">doom-column</span> <span style="color: #61afef;">(</span>pos<span style="color: #61afef;">)</span>
  1553. <span style="color: #61afef;">(</span><span style="color: #c678dd;">save-excursion</span> <span style="color: #56b6c2;">(</span>goto-char pos<span style="color: #56b6c2;">)</span>
  1554. <span style="color: #56b6c2;">(</span>current-column<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1555. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> selection-info
  1556. <span style="color: #565c64;">"Information about the current selection, such as how many characters and</span>
  1557. <span style="color: #565c64;">lines are selected, or the NxM dimensions of a block selection."</span>
  1558. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">and</span> <span style="color: #98c379;">(</span>active<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span><span style="color: #c678dd;">or</span> mark-active <span style="color: #e5c07b;">(</span>eq evil-state 'visual<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1559. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>reg-beg <span style="color: #d19a66;">(</span>region-beginning<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1560. <span style="color: #e5c07b;">(</span>reg-end <span style="color: #d19a66;">(</span>region-end<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1561. <span style="color: #98c379;">(</span>propertize
  1562. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">let</span> <span style="color: #d19a66;">(</span><span style="color: #e06c75;">(</span>lines <span style="color: #545862;">(</span>count-lines reg-beg <span style="color: #abb2bf;">(</span>min <span style="color: #c678dd;">(</span>1+ reg-end<span style="color: #c678dd;">)</span> <span style="color: #c678dd;">(</span>point-max<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1563. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span><span style="color: #c678dd;">or</span> <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">bound-and-true-p</span> rectangle-mark-mode<span style="color: #abb2bf;">)</span>
  1564. <span style="color: #abb2bf;">(</span>eq 'block evil-visual-selection<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1565. <span style="color: #545862;">(</span><span style="color: #c678dd;">let</span> <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">(</span>cols <span style="color: #61afef;">(</span>abs <span style="color: #56b6c2;">(</span>- <span style="color: #98c379;">(</span>doom-column reg-end<span style="color: #98c379;">)</span>
  1566. <span style="color: #98c379;">(</span>doom-column reg-beg<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1567. <span style="color: #abb2bf;">(</span>format <span style="color: #98c379;">"%dx%dB"</span> lines cols<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1568. <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>eq 'line evil-visual-selection<span style="color: #545862;">)</span>
  1569. <span style="color: #545862;">(</span>format <span style="color: #98c379;">"%dL"</span> lines<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1570. <span style="color: #e06c75;">(</span><span style="color: #545862;">(</span>&gt; lines 1<span style="color: #545862;">)</span>
  1571. <span style="color: #545862;">(</span>format <span style="color: #98c379;">"%dC %dL"</span> <span style="color: #abb2bf;">(</span>- <span style="color: #c678dd;">(</span>1+ reg-end<span style="color: #c678dd;">)</span> reg-beg<span style="color: #abb2bf;">)</span> lines<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span>
  1572. <span style="color: #e06c75;">(</span>t
  1573. <span style="color: #545862;">(</span>format <span style="color: #98c379;">"%dC"</span> <span style="color: #abb2bf;">(</span>- <span style="color: #c678dd;">(</span>1+ reg-end<span style="color: #c678dd;">)</span> reg-beg<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1574. 'face 'doom-modeline-highlight<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1575. <span style="color: #3e4451;">;;</span>
  1576. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline--macro-recording</span> <span style="color: #61afef;">()</span>
  1577. <span style="color: #565c64;">"Display current Emacs or evil macro being recorded."</span>
  1578. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">and</span> <span style="color: #98c379;">(</span>active<span style="color: #98c379;">)</span> <span style="color: #98c379;">(</span><span style="color: #c678dd;">or</span> defining-kbd-macro executing-kbd-macro<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1579. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">let</span> <span style="color: #98c379;">(</span><span style="color: #e5c07b;">(</span>sep <span style="color: #d19a66;">(</span>propertize <span style="color: #98c379;">" "</span> 'face 'doom-modeline-panel<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1580. <span style="color: #98c379;">(</span>concat sep
  1581. <span style="color: #e5c07b;">(</span>propertize <span style="color: #d19a66;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e06c75;">(</span><span style="color: #c678dd;">bound-and-true-p</span> evil-this-macro<span style="color: #e06c75;">)</span>
  1582. <span style="color: #e06c75;">(</span>char-to-string evil-this-macro<span style="color: #e06c75;">)</span>
  1583. <span style="color: #98c379;">"Macro"</span><span style="color: #d19a66;">)</span>
  1584. 'face 'doom-modeline-panel<span style="color: #e5c07b;">)</span>
  1585. sep
  1586. <span style="color: #e5c07b;">(</span>all-the-icons-octicon <span style="color: #98c379;">"triangle-right"</span>
  1587. <span style="color: #56b6c2;">:face</span> 'doom-modeline-panel
  1588. <span style="color: #56b6c2;">:v-adjust</span> -0.05<span style="color: #e5c07b;">)</span>
  1589. sep<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1590. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defsubst</span> <span style="color: #61afef;">+doom-modeline--anzu</span> <span style="color: #61afef;">()</span>
  1591. <span style="color: #565c64;">"Show the match index and total number thereof. Requires `</span><span style="color: #d19a66;">anzu</span><span style="color: #565c64;">', also</span>
  1592. <span style="color: #565c64;">`</span><span style="color: #d19a66;">evil-anzu</span><span style="color: #565c64;">' if using `</span><span style="color: #d19a66;">evil-mode</span><span style="color: #565c64;">' for compatibility with `</span><span style="color: #d19a66;">evil-search</span><span style="color: #565c64;">'."</span>
  1593. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">and</span> anzu--state <span style="color: #98c379;">(</span>not iedit-mode<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1594. <span style="color: #56b6c2;">(</span>propertize
  1595. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>here anzu--current-position<span style="color: #d19a66;">)</span>
  1596. <span style="color: #d19a66;">(</span>total anzu--total-matched<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1597. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #d19a66;">(</span><span style="color: #e06c75;">(</span>eq anzu--state 'replace-query<span style="color: #e06c75;">)</span>
  1598. <span style="color: #e06c75;">(</span>format <span style="color: #98c379;">" %d replace "</span> total<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1599. <span style="color: #d19a66;">(</span><span style="color: #e06c75;">(</span>eq anzu--state 'replace<span style="color: #e06c75;">)</span>
  1600. <span style="color: #e06c75;">(</span>format <span style="color: #98c379;">" %d/%d "</span> here total<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1601. <span style="color: #d19a66;">(</span>anzu--overflow-p
  1602. <span style="color: #e06c75;">(</span>format <span style="color: #98c379;">" %s+ "</span> total<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1603. <span style="color: #d19a66;">(</span>t
  1604. <span style="color: #e06c75;">(</span>format <span style="color: #98c379;">" %s/%d "</span> here total<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1605. 'face <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span> 'doom-modeline-panel<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1606. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defsubst</span> <span style="color: #61afef;">+doom-modeline--evil-substitute</span> <span style="color: #61afef;">()</span>
  1607. <span style="color: #565c64;">"Show number of matches for evil-ex substitutions and highlights in real time."</span>
  1608. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">and</span> evil-mode
  1609. <span style="color: #98c379;">(</span><span style="color: #c678dd;">or</span> <span style="color: #e5c07b;">(</span>assq 'evil-ex-substitute evil-ex-active-highlights-alist<span style="color: #e5c07b;">)</span>
  1610. <span style="color: #e5c07b;">(</span>assq 'evil-ex-global-match evil-ex-active-highlights-alist<span style="color: #e5c07b;">)</span>
  1611. <span style="color: #e5c07b;">(</span>assq 'evil-ex-buffer-match evil-ex-active-highlights-alist<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1612. <span style="color: #56b6c2;">(</span>propertize
  1613. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>range <span style="color: #e06c75;">(</span><span style="color: #c678dd;">if</span> evil-ex-range
  1614. <span style="color: #545862;">(</span>cons <span style="color: #abb2bf;">(</span>car evil-ex-range<span style="color: #abb2bf;">)</span> <span style="color: #abb2bf;">(</span>cadr evil-ex-range<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1615. <span style="color: #545862;">(</span>cons <span style="color: #abb2bf;">(</span>line-beginning-position<span style="color: #abb2bf;">)</span> <span style="color: #abb2bf;">(</span>line-end-position<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1616. <span style="color: #d19a66;">(</span>pattern <span style="color: #e06c75;">(</span>car-safe <span style="color: #545862;">(</span>evil-delimited-arguments evil-ex-argument 2<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1617. <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> pattern
  1618. <span style="color: #d19a66;">(</span>format <span style="color: #98c379;">" %s matches "</span> <span style="color: #e06c75;">(</span>how-many pattern <span style="color: #545862;">(</span>car range<span style="color: #545862;">)</span> <span style="color: #545862;">(</span>cdr range<span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1619. <span style="color: #98c379;">" - "</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1620. 'face <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span> 'doom-modeline-panel<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1621. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">doom-themes--overlay-sort</span> <span style="color: #61afef;">(</span>a b<span style="color: #61afef;">)</span>
  1622. <span style="color: #61afef;">(</span>&lt; <span style="color: #56b6c2;">(</span>overlay-start a<span style="color: #56b6c2;">)</span> <span style="color: #56b6c2;">(</span>overlay-start b<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1623. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defsubst</span> <span style="color: #61afef;">+doom-modeline--iedit</span> <span style="color: #61afef;">()</span>
  1624. <span style="color: #565c64;">"Show the number of iedit regions matches + what match you're on."</span>
  1625. <span style="color: #61afef;">(</span><span style="color: #c678dd;">when</span> <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">and</span> iedit-mode iedit-occurrences-overlays<span style="color: #56b6c2;">)</span>
  1626. <span style="color: #56b6c2;">(</span>propertize
  1627. <span style="color: #98c379;">(</span><span style="color: #c678dd;">let</span> <span style="color: #e5c07b;">(</span><span style="color: #d19a66;">(</span>this-oc <span style="color: #e06c75;">(</span><span style="color: #c678dd;">or</span> <span style="color: #545862;">(</span><span style="color: #c678dd;">let</span> <span style="color: #abb2bf;">(</span><span style="color: #c678dd;">(</span>inhibit-message t<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span>
  1628. <span style="color: #abb2bf;">(</span>iedit-find-current-occurrence-overlay<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1629. <span style="color: #545862;">(</span><span style="color: #c678dd;">progn</span> <span style="color: #abb2bf;">(</span>iedit-prev-occurrence<span style="color: #abb2bf;">)</span>
  1630. <span style="color: #abb2bf;">(</span>iedit-find-current-occurrence-overlay<span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span><span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span>
  1631. <span style="color: #d19a66;">(</span>length <span style="color: #e06c75;">(</span>length iedit-occurrences-overlays<span style="color: #e06c75;">)</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span>
  1632. <span style="color: #e5c07b;">(</span>format <span style="color: #98c379;">" %s/%d "</span>
  1633. <span style="color: #d19a66;">(</span><span style="color: #c678dd;">if</span> this-oc
  1634. <span style="color: #e06c75;">(</span>- length
  1635. <span style="color: #545862;">(</span>length <span style="color: #abb2bf;">(</span>memq this-oc <span style="color: #c678dd;">(</span>sort <span style="color: #61afef;">(</span>append iedit-occurrences-overlays nil<span style="color: #61afef;">)</span>
  1636. #'doom-themes--overlay-sort<span style="color: #c678dd;">)</span><span style="color: #abb2bf;">)</span><span style="color: #545862;">)</span>
  1637. -1<span style="color: #e06c75;">)</span>
  1638. <span style="color: #98c379;">"-"</span><span style="color: #d19a66;">)</span>
  1639. length<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span>
  1640. 'face <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> <span style="color: #e5c07b;">(</span>active<span style="color: #e5c07b;">)</span> 'doom-modeline-panel<span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1641. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> matches
  1642. <span style="color: #565c64;">"Displays: 1. the currently recording macro, 2. A current/total for the</span>
  1643. <span style="color: #565c64;">current search term (with anzu), 3. The number of substitutions being conducted</span>
  1644. <span style="color: #565c64;">with `</span><span style="color: #d19a66;">evil-ex-substitute</span><span style="color: #565c64;">', and/or 4. The number of active `</span><span style="color: #d19a66;">iedit</span><span style="color: #565c64;">' regions."</span>
  1645. <span style="color: #61afef;">(</span><span style="color: #c678dd;">let</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>meta <span style="color: #e5c07b;">(</span>concat <span style="color: #d19a66;">(</span>+doom-modeline--macro-recording<span style="color: #d19a66;">)</span>
  1646. <span style="color: #d19a66;">(</span>+doom-modeline--anzu<span style="color: #d19a66;">)</span>
  1647. <span style="color: #d19a66;">(</span>+doom-modeline--evil-substitute<span style="color: #d19a66;">)</span>
  1648. <span style="color: #d19a66;">(</span>+doom-modeline--iedit<span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span>
  1649. <span style="color: #56b6c2;">(</span><span style="color: #c678dd;">or</span> <span style="color: #98c379;">(</span><span style="color: #c678dd;">and</span> <span style="color: #e5c07b;">(</span>not <span style="color: #d19a66;">(</span>equal meta <span style="color: #98c379;">""</span><span style="color: #d19a66;">)</span><span style="color: #e5c07b;">)</span> meta<span style="color: #98c379;">)</span>
  1650. <span style="color: #98c379;">(</span><span style="color: #c678dd;">if</span> buffer-file-name <span style="color: #98c379;">" %I "</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1651. <span style="color: #3e4451;">;; </span><span style="color: #545862;">TODO Include other information</span>
  1652. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> media-info
  1653. <span style="color: #565c64;">"Metadata regarding the current file, such as dimensions for images."</span>
  1654. <span style="color: #61afef;">(</span><span style="color: #c678dd;">cond</span> <span style="color: #56b6c2;">(</span><span style="color: #98c379;">(</span>eq major-mode 'image-mode<span style="color: #98c379;">)</span>
  1655. <span style="color: #98c379;">(</span><span style="color: #c678dd;">cl-destructuring-bind</span> <span style="color: #e5c07b;">(</span>width . height<span style="color: #e5c07b;">)</span>
  1656. <span style="color: #e5c07b;">(</span>image-size <span style="color: #d19a66;">(</span>image-get-display-property<span style="color: #d19a66;">)</span> <span style="color: #56b6c2;">:pixels</span><span style="color: #e5c07b;">)</span>
  1657. <span style="color: #e5c07b;">(</span>format <span style="color: #98c379;">" %dx%d "</span> width height<span style="color: #e5c07b;">)</span><span style="color: #98c379;">)</span><span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1658. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline-segment!</span> bar
  1659. <span style="color: #565c64;">"The bar regulates the height of the mode-line in GUI Emacs.</span>
  1660. <span style="color: #565c64;">Returns \"\" to not break --no-window-system."</span>
  1661. <span style="color: #61afef;">(</span><span style="color: #c678dd;">if</span> <span style="color: #56b6c2;">(</span>display-graphic-p<span style="color: #56b6c2;">)</span>
  1662. <span style="color: #56b6c2;">(</span>+doom-modeline--make-xpm
  1663. <span style="color: #98c379;">(</span>face-background <span style="color: #e5c07b;">(</span><span style="color: #c678dd;">if</span> <span style="color: #d19a66;">(</span>active<span style="color: #d19a66;">)</span>
  1664. 'doom-modeline-bar
  1665. 'doom-modeline-inactive-bar<span style="color: #e5c07b;">)</span>
  1666. nil t<span style="color: #98c379;">)</span>
  1667. +doom-modeline-height
  1668. +doom-modeline-bar-width<span style="color: #56b6c2;">)</span>
  1669. <span style="color: #98c379;">""</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1670. <span style="color: #3e4451;">;;</span>
  1671. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Mode lines</span>
  1672. <span style="color: #3e4451;">;;</span>
  1673. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline!</span> main
  1674. <span style="color: #61afef;">(</span>bar matches <span style="color: #98c379;">" "</span> buffer-info <span style="color: #98c379;">" %l:%c %p "</span> selection-info<span style="color: #61afef;">)</span>
  1675. <span style="color: #61afef;">(</span>buffer-encoding major-mode vcs flycheck<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1676. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline!</span> minimal
  1677. <span style="color: #61afef;">(</span>bar matches <span style="color: #98c379;">" "</span> buffer-info<span style="color: #61afef;">)</span>
  1678. <span style="color: #61afef;">(</span>media-info major-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1679. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline!</span> special
  1680. <span style="color: #61afef;">(</span>bar matches <span style="color: #98c379;">" "</span> buffer-info-simple <span style="color: #98c379;">" %l:%c %p "</span> selection-info<span style="color: #61afef;">)</span>
  1681. <span style="color: #61afef;">(</span>buffer-encoding major-mode flycheck<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1682. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline!</span> project
  1683. <span style="color: #61afef;">(</span>bar buffer-default-directory<span style="color: #61afef;">)</span>
  1684. <span style="color: #61afef;">(</span>major-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1685. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">def-modeline!</span> media
  1686. <span style="color: #61afef;">(</span>bar <span style="color: #98c379;">" %b "</span><span style="color: #61afef;">)</span>
  1687. <span style="color: #61afef;">(</span>media-info major-mode<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1688. <span style="color: #3e4451;">;;</span>
  1689. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Hooks</span>
  1690. <span style="color: #3e4451;">;;</span>
  1691. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline|init</span> <span style="color: #61afef;">()</span>
  1692. <span style="color: #565c64;">"Set the default modeline."</span>
  1693. <span style="color: #61afef;">(</span>doom-set-modeline 'main t<span style="color: #61afef;">)</span>
  1694. <span style="color: #3e4451;">;; </span><span style="color: #545862;">This scratch buffer is already created and doesn't get a modeline. For the</span>
  1695. <span style="color: #3e4451;">;; </span><span style="color: #545862;">love of Emacs, someone give the man a modeline!</span>
  1696. <span style="color: #61afef;">(</span><span style="color: #c678dd;">with-current-buffer</span> <span style="color: #98c379;">"*scratch*"</span>
  1697. <span style="color: #56b6c2;">(</span>doom-set-modeline 'main<span style="color: #56b6c2;">)</span><span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1698. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline|set-special-modeline</span> <span style="color: #61afef;">()</span>
  1699. <span style="color: #61afef;">(</span>doom-set-modeline 'special<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1700. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline|set-media-modeline</span> <span style="color: #61afef;">()</span>
  1701. <span style="color: #61afef;">(</span>doom-set-modeline 'media<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1702. <span style="color: #c678dd;">(</span><span style="color: #c678dd;">defun</span> <span style="color: #61afef;">+doom-modeline|set-project-modeline</span> <span style="color: #61afef;">()</span>
  1703. <span style="color: #61afef;">(</span>doom-set-modeline 'project<span style="color: #61afef;">)</span><span style="color: #c678dd;">)</span>
  1704. <span style="color: #3e4451;">;;</span>
  1705. <span style="color: #3e4451;">;; </span><span style="color: #545862;">Bootstrap</span>
  1706. <span style="color: #3e4451;">;;</span>
  1707. <span style="color: #c678dd;">(</span>add-hook 'emacs-startup-hook #'+doom-modeline|init<span style="color: #c678dd;">)</span>
  1708. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(add-hook 'doom-scratch-buffer-hook #'+doom-modeline|set-special-modeline)</span>
  1709. <span style="color: #3e4451;">;; </span><span style="color: #545862;">(add-hook '+doom-dashboard-mode-hook #'+doom-modeline|set-project-modeline)</span>
  1710. <span style="color: #c678dd;">(</span>add-hook 'image-mode-hook #'+doom-modeline|set-media-modeline<span style="color: #c678dd;">)</span>
  1711. <span style="color: #c678dd;">(</span>add-hook 'org-src-mode-hook #'+doom-modeline|set-special-modeline<span style="color: #c678dd;">)</span>
  1712. <span style="color: #c678dd;">(</span>add-hook 'circe-mode-hook #'+doom-modeline|set-special-modeline<span style="color: #c678dd;">)</span>
  1713. </pre>
  1714. </div>
  1715. </div>
  1716. </div>
  1717. </div>
  1718. </div>
  1719. </div>
  1720. <div id="postamble" class="status">
  1721. <p class="date">Date: 2019-01-30 Wed 00:00</p>
  1722. <p class="author">Author: Levi Olson</p>
  1723. <p class="date">Created: 2019-02-13 Wed 14:20</p>
  1724. <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
  1725. </div>
  1726. </body>
  1727. </html>