7211 lines
402 KiB
HTML
7211 lines
402 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
<head>
|
|
<!-- 2016-11-08 Tue 11:35 -->
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title></title>
|
|
<meta name="generator" content="Org mode" />
|
|
<meta name="author" content="Ivan Malison" />
|
|
<style type="text/css">
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
.title { text-align: center;
|
|
margin-bottom: .2em; }
|
|
.subtitle { text-align: center;
|
|
font-size: medium;
|
|
font-weight: bold;
|
|
margin-top:0; }
|
|
.todo { font-family: monospace; color: red; }
|
|
.done { font-family: monospace; color: green; }
|
|
.priority { font-family: monospace; color: orange; }
|
|
.tag { background-color: #eee; font-family: monospace;
|
|
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
.timestamp { color: #bebebe; }
|
|
.timestamp-kwd { color: #5f9ea0; }
|
|
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
.underline { text-decoration: underline; }
|
|
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
p.verse { margin-left: 3%; }
|
|
pre {
|
|
border: 1px solid #ccc;
|
|
box-shadow: 3px 3px 3px #eee;
|
|
padding: 8pt;
|
|
font-family: monospace;
|
|
overflow: auto;
|
|
margin: 1.2em;
|
|
}
|
|
pre.src {
|
|
position: relative;
|
|
overflow: visible;
|
|
padding-top: 1.2em;
|
|
}
|
|
pre.src:before {
|
|
display: none;
|
|
position: absolute;
|
|
background-color: white;
|
|
top: -10px;
|
|
right: 10px;
|
|
padding: 3px;
|
|
border: 1px solid black;
|
|
}
|
|
pre.src:hover:before { display: inline;}
|
|
/* Languages per Org manual */
|
|
pre.src-asymptote:before { content: 'Asymptote'; }
|
|
pre.src-awk:before { content: 'Awk'; }
|
|
pre.src-C:before { content: 'C'; }
|
|
/* pre.src-C++ doesn't work in CSS */
|
|
pre.src-clojure:before { content: 'Clojure'; }
|
|
pre.src-css:before { content: 'CSS'; }
|
|
pre.src-D:before { content: 'D'; }
|
|
pre.src-ditaa:before { content: 'ditaa'; }
|
|
pre.src-dot:before { content: 'Graphviz'; }
|
|
pre.src-calc:before { content: 'Emacs Calc'; }
|
|
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
pre.src-fortran:before { content: 'Fortran'; }
|
|
pre.src-gnuplot:before { content: 'gnuplot'; }
|
|
pre.src-haskell:before { content: 'Haskell'; }
|
|
pre.src-java:before { content: 'Java'; }
|
|
pre.src-js:before { content: 'Javascript'; }
|
|
pre.src-latex:before { content: 'LaTeX'; }
|
|
pre.src-ledger:before { content: 'Ledger'; }
|
|
pre.src-lisp:before { content: 'Lisp'; }
|
|
pre.src-lilypond:before { content: 'Lilypond'; }
|
|
pre.src-lua:before { content: 'Lua'; }
|
|
pre.src-matlab:before { content: 'MATLAB'; }
|
|
pre.src-mscgen:before { content: 'Mscgen'; }
|
|
pre.src-ocaml:before { content: 'Objective Caml'; }
|
|
pre.src-octave:before { content: 'Octave'; }
|
|
pre.src-org:before { content: 'Org mode'; }
|
|
pre.src-oz:before { content: 'OZ'; }
|
|
pre.src-plantuml:before { content: 'Plantuml'; }
|
|
pre.src-processing:before { content: 'Processing.js'; }
|
|
pre.src-python:before { content: 'Python'; }
|
|
pre.src-R:before { content: 'R'; }
|
|
pre.src-ruby:before { content: 'Ruby'; }
|
|
pre.src-sass:before { content: 'Sass'; }
|
|
pre.src-scheme:before { content: 'Scheme'; }
|
|
pre.src-screen:before { content: 'Gnu Screen'; }
|
|
pre.src-sed:before { content: 'Sed'; }
|
|
pre.src-sh:before { content: 'shell'; }
|
|
pre.src-sql:before { content: 'SQL'; }
|
|
pre.src-sqlite:before { content: 'SQLite'; }
|
|
/* additional languages in org.el's org-babel-load-languages alist */
|
|
pre.src-forth:before { content: 'Forth'; }
|
|
pre.src-io:before { content: 'IO'; }
|
|
pre.src-J:before { content: 'J'; }
|
|
pre.src-makefile:before { content: 'Makefile'; }
|
|
pre.src-maxima:before { content: 'Maxima'; }
|
|
pre.src-perl:before { content: 'Perl'; }
|
|
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
|
pre.src-scala:before { content: 'Scala'; }
|
|
pre.src-shell:before { content: 'Shell Script'; }
|
|
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
|
/* additional language identifiers per "defun org-babel-execute"
|
|
in ob-*.el */
|
|
pre.src-cpp:before { content: 'C++'; }
|
|
pre.src-abc:before { content: 'ABC'; }
|
|
pre.src-coq:before { content: 'Coq'; }
|
|
pre.src-groovy:before { content: 'Groovy'; }
|
|
/* additional language identifiers from org-babel-shell-names in
|
|
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
|
the execution function name together. */
|
|
pre.src-bash:before { content: 'bash'; }
|
|
pre.src-csh:before { content: 'csh'; }
|
|
pre.src-ash:before { content: 'ash'; }
|
|
pre.src-dash:before { content: 'dash'; }
|
|
pre.src-ksh:before { content: 'ksh'; }
|
|
pre.src-mksh:before { content: 'mksh'; }
|
|
pre.src-posh:before { content: 'posh'; }
|
|
/* Additional Emacs modes also supported by the LaTeX listings package */
|
|
pre.src-ada:before { content: 'Ada'; }
|
|
pre.src-asm:before { content: 'Assembler'; }
|
|
pre.src-caml:before { content: 'Caml'; }
|
|
pre.src-delphi:before { content: 'Delphi'; }
|
|
pre.src-html:before { content: 'HTML'; }
|
|
pre.src-idl:before { content: 'IDL'; }
|
|
pre.src-mercury:before { content: 'Mercury'; }
|
|
pre.src-metapost:before { content: 'MetaPost'; }
|
|
pre.src-modula-2:before { content: 'Modula-2'; }
|
|
pre.src-pascal:before { content: 'Pascal'; }
|
|
pre.src-ps:before { content: 'PostScript'; }
|
|
pre.src-prolog:before { content: 'Prolog'; }
|
|
pre.src-simula:before { content: 'Simula'; }
|
|
pre.src-tcl:before { content: 'tcl'; }
|
|
pre.src-tex:before { content: 'TeX'; }
|
|
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
|
pre.src-verilog:before { content: 'Verilog'; }
|
|
pre.src-vhdl:before { content: 'VHDL'; }
|
|
pre.src-xml:before { content: 'XML'; }
|
|
pre.src-nxml:before { content: 'XML'; }
|
|
/* add a generic configuration mode; LaTeX export needs an additional
|
|
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
|
pre.src-conf:before { content: 'Configuration File'; }
|
|
|
|
table { border-collapse:collapse; }
|
|
caption.t-above { caption-side: top; }
|
|
caption.t-bottom { caption-side: bottom; }
|
|
td, th { vertical-align:top; }
|
|
th.org-right { text-align: center; }
|
|
th.org-left { text-align: center; }
|
|
th.org-center { text-align: center; }
|
|
td.org-right { text-align: right; }
|
|
td.org-left { text-align: left; }
|
|
td.org-center { text-align: center; }
|
|
dt { font-weight: bold; }
|
|
.footpara { display: inline; }
|
|
.footdef { margin-bottom: 1em; }
|
|
.figure { padding: 1em; }
|
|
.figure p { text-align: center; }
|
|
.inlinetask {
|
|
padding: 10px;
|
|
border: 2px solid gray;
|
|
margin: 10px;
|
|
background: #ffffcc;
|
|
}
|
|
#org-div-home-and-up
|
|
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
textarea { overflow-x: auto; }
|
|
.linenr { font-size: smaller }
|
|
.code-highlighted { background-color: #ffff00; }
|
|
.org-info-js_info-navigation { border-style: none; }
|
|
#org-info-js_console-label
|
|
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
.org-info-js_search-highlight
|
|
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
.org-svg { width: 90%; }
|
|
/*]]>*/-->
|
|
</style>
|
|
<link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
|
|
<link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/>
|
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
|
<script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
|
|
<script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
|
|
<style type="text/css">
|
|
pre.src {background-color: #181818; color: #d8d8d8;}</style>
|
|
<script type="text/javascript">
|
|
/*
|
|
@licstart The following is the entire license notice for the
|
|
JavaScript code in this tag.
|
|
|
|
Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
|
|
|
The JavaScript code in this tag is free software: you can
|
|
redistribute it and/or modify it under the terms of the GNU
|
|
General Public License (GNU GPL) as published by the Free Software
|
|
Foundation, either version 3 of the License, or (at your option)
|
|
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
|
without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
|
|
|
As additional permission under GNU GPL version 3 section 7, you
|
|
may distribute non-source (e.g., minimized or compacted) forms of
|
|
that code without the copy of the GNU GPL normally required by
|
|
section 4, provided you include this license notice and a URL
|
|
through which recipients can access the Corresponding Source.
|
|
|
|
|
|
@licend The above is the entire license notice
|
|
for the JavaScript code in this tag.
|
|
*/
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
function CodeHighlightOn(elem, id)
|
|
{
|
|
var target = document.getElementById(id);
|
|
if(null != target) {
|
|
elem.cacheClassElem = elem.className;
|
|
elem.cacheClassTarget = target.className;
|
|
target.className = "code-highlighted";
|
|
elem.className = "code-highlighted";
|
|
}
|
|
}
|
|
function CodeHighlightOff(elem, id)
|
|
{
|
|
var target = document.getElementById(id);
|
|
if(elem.cacheClassElem)
|
|
elem.className = elem.cacheClassElem;
|
|
if(elem.cacheClassTarget)
|
|
target.className = elem.cacheClassTarget;
|
|
}
|
|
/*]]>*///-->
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="content">
|
|
<div id="table-of-contents">
|
|
<h2>Table of Contents</h2>
|
|
<div id="text-table-of-contents">
|
|
<ul>
|
|
<li><a href="#about">1. About</a></li>
|
|
<li><a href="#highlights">2. Highlights</a>
|
|
<ul>
|
|
<li><a href="#howigeneratehttpivanmalisongithubiodotfiles">2.1. How I generate </a>
|
|
<ul>
|
|
<li><a href="#githooks">2.1.1. Git Hooks</a></li>
|
|
<li><a href="#httpsgithubcomfniessenorghtmlthemesreadtheorg">2.1.2. Read The Org</a></li>
|
|
<li><a href="#headinglinks">2.1.3. Heading Links</a></li>
|
|
<li><a href="#setbackgroundcolorsourceblocks">2.1.4. Set Background Color Source Blocks</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#functionsmyfunctionssection">2.2. My functions section</a></li>
|
|
<li><a href="#configurationofmyownpackages">2.3. Configuration of My Own Packages</a></li>
|
|
<li><a href="#programminglanguagesprogramminglanguageconfigurations">2.4. Programming Language Configurations</a></li>
|
|
<li><a href="#orgorgmode">2.5. org-mode</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#htmlheaders">3. HTML Headers</a></li>
|
|
<li><a href="#early">4. Early</a>
|
|
<ul>
|
|
<li><a href="#lexicalbinding">4.1. Lexical Binding</a></li>
|
|
<li><a href="#security">4.2. Security</a></li>
|
|
<li><a href="#elpaarchivesetup">4.3. ELPA Archive Setup</a></li>
|
|
<li><a href="#bootstrappackageloading">4.4. Bootstrap Package Loading</a></li>
|
|
<li><a href="#setupautocompile">4.5. Setup auto-compile</a></li>
|
|
<li><a href="#prefernewerversions">4.6. Prefer Newer Versions</a></li>
|
|
<li><a href="#customfiles">4.7. Custom Files</a></li>
|
|
<li><a href="#emit">4.8. emit</a>
|
|
<ul>
|
|
<li><a href="#thisneedstobedonebetterbutitworksfornow">4.8.1. <span class="todo TODO">TODO</span> this needs to be done better, but it works for now</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#benchmarking">4.9. Benchmarking</a></li>
|
|
<li><a href="#guidisables">4.10. GUI Disables</a></li>
|
|
<li><a href="#bytecompiler">4.11. Byte-Compiler</a></li>
|
|
<li><a href="#execpathfromshell">4.12. exec-path-from-shell</a></li>
|
|
<li><a href="#noflet">4.13. noflet</a></li>
|
|
<li><a href="#nonforkingshellcommandtostring">4.14. Non-Forking Shell Command To String</a></li>
|
|
<li><a href="#setemacsenvironmentvariable">4.15. Set EMACS environment variable</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#functions">5. Functions</a>
|
|
<ul>
|
|
<li><a href="#joinpaths">5.1. Join Paths</a></li>
|
|
<li><a href="#variables">5.2. Variables</a></li>
|
|
<li><a href="#usepackagewrapperwithlocalloadpathsupport">5.3. Use Package Wrapper With Local Load Path Support</a></li>
|
|
<li><a href="#requiredpackages">5.4. Required Packages</a>
|
|
<ul>
|
|
<li><a href="#s">5.4.1. s</a></li>
|
|
<li><a href="#dash">5.4.2. dash</a></li>
|
|
<li><a href="#gh">5.4.3. gh</a></li>
|
|
<li><a href="#shutup">5.4.4. shut-up</a></li>
|
|
<li><a href="#pcache">5.4.5. pcache</a></li>
|
|
<li><a href="#parsecsv">5.4.6. parse-csv</a></li>
|
|
<li><a href="#emit1">5.4.7. emit</a></li>
|
|
<li><a href="#request">5.4.8. request</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#namedbuild">5.5. Named Build</a></li>
|
|
<li><a href="#emacsversionpredicate">5.6. Emacs Version Predicate</a></li>
|
|
<li><a href="#composefunctions">5.7. Compose Functions</a>
|
|
<ul>
|
|
<li><a href="#aversionsupportingmacros">5.7.1. A version supporting macros</a></li>
|
|
<li><a href="#arbitraryargumentsateverystep">5.7.2. Arbitrary arguments at every step</a></li>
|
|
<li><a href="#simplerunaryversion">5.7.3. Simpler unary version</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#withadvice">5.8. With Advice</a></li>
|
|
<li><a href="#makeinteractive">5.9. Make Interactive</a></li>
|
|
<li><a href="#adviceaddaroundbuilder">5.10. Advice Add Around Builder</a>
|
|
<ul>
|
|
<li><a href="#killnew">5.10.1. Kill New</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#letaround">5.11. Let Around</a></li>
|
|
<li><a href="#letaroundadvice">5.12. Let Around Advice</a></li>
|
|
<li><a href="#letadvise">5.13. Let Advise</a></li>
|
|
<li><a href="#composearoundbuilder">5.14. Compose Around Builder</a></li>
|
|
<li><a href="#measuretime">5.15. Measure Time</a></li>
|
|
<li><a href="#addfilestoorgagendafiles">5.16. Add Files to <code>org-agenda-files</code></a></li>
|
|
<li><a href="#getstringfromfile">5.17. Get String From File</a></li>
|
|
<li><a href="#getcurrentlocation">5.18. Get Current Location</a></li>
|
|
<li><a href="#haversinedistance">5.19. Haversine distance</a></li>
|
|
<li><a href="#fontsize">5.20. Font Size</a></li>
|
|
<li><a href="#messageresultbuilder">5.21. Message Result Builder</a></li>
|
|
<li><a href="#customshellcommandonregion">5.22. Custom <code>shell-command-on-region</code></a></li>
|
|
<li><a href="#copyyankstringfunctions">5.23. Copy/Yank String Functions</a>
|
|
<ul>
|
|
<li><a href="#copyportionsofthebufferfilename">5.23.1. Copy portions of the buffer file name</a></li>
|
|
<li><a href="#copythecurrentbranchusingmagit">5.23.2. Copy the current branch using magit</a></li>
|
|
<li><a href="#copythecurrentbuffername">5.23.3. Copy the current buffer name</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#namedcompile">5.24. Named Compile</a></li>
|
|
<li><a href="#replaceescapesequences">5.25. Replace Escape Sequences</a></li>
|
|
<li><a href="#downloadafileintoabuffer">5.26. Download a File Into a Buffer</a></li>
|
|
<li><a href="#concatwithsymbols">5.27. Concat With Symbols</a></li>
|
|
<li><a href="#editascriptonpath">5.28. Edit a script on PATH</a></li>
|
|
<li><a href="#togglelexicalbindinginthecurrentbuffer">5.29. Toggle lexical binding in the current buffer</a></li>
|
|
<li><a href="#synckillringwithcopyq">5.30. Sync kill ring with copyq</a></li>
|
|
<li><a href="#helmzshhistory">5.31. helm-zsh-history</a>
|
|
<ul>
|
|
<li><a href="#useprojectileasdefaultdirectory">5.31.1. Use projectile as default directory</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#other">5.32. Other</a></li>
|
|
<li><a href="#keyboardmacros">5.33. Keyboard Macros</a>
|
|
<ul>
|
|
<li><a href="#foreditingliterateconfig">5.33.1. For editing literate config</a>
|
|
<ul>
|
|
<li><a href="#extractcurrentsexptosrcblock">5.33.1.1. extract-current-sexp-to-src-block</a></li>
|
|
<li><a href="#namesourceblockforusepackagename">5.33.1.2. name-source-block-for-use-package-name</a></li>
|
|
<li><a href="#extractandnameusepackageblock">5.33.1.3. extract-and-name-use-package-block</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#general">6. General</a>
|
|
<ul>
|
|
<li><a href="#userinfo">6.1. User Info</a></li>
|
|
<li><a href="#sanedefaults">6.2. Sane Defaults</a></li>
|
|
<li><a href="#linenumbers">6.3. Line Numbers</a></li>
|
|
<li><a href="#backups">6.4. Backups</a>
|
|
<ul>
|
|
<li><a href="#putthemallinonedirectory">6.4.1. Put them all in one directory</a></li>
|
|
<li><a href="#completelydisablebackups">6.4.2. Completely disable backups</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#prompts">6.5. Prompts</a>
|
|
<ul>
|
|
<li><a href="#nopopupframes">6.5.1. No popup frames</a></li>
|
|
<li><a href="#booleanyesorno">6.5.2. boolean (yes-or-no)</a></li>
|
|
<li><a href="#nodialogboxes">6.5.3. No dialog boxes</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#splitting">6.6. Splitting</a></li>
|
|
<li><a href="#bufferdisplay">6.7. Buffer Display</a>
|
|
<ul>
|
|
<li><a href="#ewmctrl">6.7.1. ewmctrl</a></li>
|
|
<li><a href="#handlexrefsannoyingdedicatedwindowgarbage">6.7.2. Handle xrefs annoying dedicated window garbage</a></li>
|
|
<li><a href="#displaybufferalist">6.7.3. display-buffer-alist</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#fillsetup">6.8. Fill Setup</a></li>
|
|
<li><a href="#showtrailingwhitespace">6.9. Show Trailing Whitespace</a>
|
|
<ul>
|
|
<li><a href="#disable">6.9.1. Disable</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#encoding">6.10. Encoding</a></li>
|
|
<li><a href="#visiblebell">6.11. Visible Bell</a></li>
|
|
<li><a href="#configurevc">6.12. Configure <code>vc</code></a></li>
|
|
<li><a href="#timeinmodeline">6.13. Time in Mode Line</a></li>
|
|
<li><a href="#killring">6.14. Kill Ring</a></li>
|
|
<li><a href="#subword">6.15. Subword</a></li>
|
|
<li><a href="#scratchbuffer">6.16. Scratch Buffer</a></li>
|
|
<li><a href="#dontpromptaboutlocalvariables">6.17. Don't prompt about local variables</a></li>
|
|
<li><a href="#proced">6.18. proced</a></li>
|
|
<li><a href="#setdefaultbrowser">6.19. Set default browser</a></li>
|
|
<li><a href="#setepaprogram">6.20. Set epa program</a></li>
|
|
<li><a href="#makefilesexecutable">6.21. Make files executable</a></li>
|
|
<li><a href="#misc">6.22. Misc</a></li>
|
|
<li><a href="#paradox">6.23. paradox</a></li>
|
|
<li><a href="#diminish">6.24. diminish</a></li>
|
|
<li><a href="#editserver">6.25. edit-server</a></li>
|
|
<li><a href="#loaddir">6.26. load-dir</a></li>
|
|
<li><a href="#server">6.27. server</a></li>
|
|
<li><a href="#listenvironment">6.28. list-environment</a></li>
|
|
<li><a href="#bughunter">6.29. bug-hunter</a></li>
|
|
<li><a href="#shackle">6.30. shackle</a></li>
|
|
<li><a href="#beacon">6.31. beacon</a></li>
|
|
<li><a href="#iregister">6.32. iregister</a></li>
|
|
<li><a href="#discovermymajor">6.33. discover-my-major</a></li>
|
|
<li><a href="#refine">6.34. refine</a></li>
|
|
<li><a href="#winner">6.35. winner</a></li>
|
|
<li><a href="#eyebrowse">6.36. eyebrowse</a></li>
|
|
<li><a href="#stream">6.37. stream</a></li>
|
|
<li><a href="#tile">6.38. tile</a></li>
|
|
<li><a href="#fillcolumnindicator">6.39. fill-column-indicator</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#keybindings">7. Keybindings</a>
|
|
<ul>
|
|
<li><a href="#godmode">7.1. god-mode</a></li>
|
|
<li><a href="#bindkey">7.2. bind-key</a></li>
|
|
<li><a href="#whichkey">7.3. which-key</a></li>
|
|
<li><a href="#hydra">7.4. hydra</a>
|
|
<ul>
|
|
<li><a href="#fontsettings">7.4.1. Font Settings</a></li>
|
|
<li><a href="#copyyanking">7.4.2. Copy/Yanking</a></li>
|
|
<li><a href="#compile">7.4.3. Compile</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#killemacs">7.5. kill-emacs</a></li>
|
|
<li><a href="#imenu">7.6. imenu</a></li>
|
|
<li><a href="#undo">7.7. undo</a></li>
|
|
<li><a href="#otherwindow">7.8. other-window</a></li>
|
|
<li><a href="#markring">7.9. Mark ring</a></li>
|
|
<li><a href="#otherbindings">7.10. Other bindings</a></li>
|
|
<li><a href="#globalsetkeytousepackage">7.11. global-set-key-to-use-package</a></li>
|
|
<li><a href="#osx">7.12. OSX</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#navigation">8. Navigation</a>
|
|
<ul>
|
|
<li><a href="#zoptochar">8.1. zop-to-char</a></li>
|
|
<li><a href="#helm">8.2. helm</a></li>
|
|
<li><a href="#helmprojectile">8.3. helm-projectile</a></li>
|
|
<li><a href="#projectile">8.4. projectile</a></li>
|
|
<li><a href="#ido">8.5. ido</a></li>
|
|
<li><a href="#avy">8.6. avy</a></li>
|
|
<li><a href="#acewindow">8.7. ace-window</a></li>
|
|
<li><a href="#neotree">8.8. neotree</a></li>
|
|
<li><a href="#jumpchar">8.9. jump-char</a></li>
|
|
<li><a href="#flimenu">8.10. flimenu</a></li>
|
|
<li><a href="#swiper">8.11. swiper</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#completion">9. Completion</a>
|
|
<ul>
|
|
<li><a href="#company">9.1. company</a>
|
|
<ul>
|
|
<li><a href="#companyflx">9.1.1. company-flx</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#autocomplete">9.2. auto-complete</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#textmanipulation">10. Text Manipulation</a>
|
|
<ul>
|
|
<li><a href="#smartparens">10.1. smartparens</a></li>
|
|
<li><a href="#multiplecursors">10.2. multiple-cursors</a></li>
|
|
<li><a href="#expandregion">10.3. expand-region</a></li>
|
|
<li><a href="#multiline">10.4. multi-line</a></li>
|
|
<li><a href="#commentdwim">10.5. comment-dwim-2</a></li>
|
|
<li><a href="#unfill">10.6. unfill</a></li>
|
|
<li><a href="#cliphist">10.7. cliphist</a></li>
|
|
<li><a href="#electricoperatormode">10.8. electric-operator-mode</a></li>
|
|
<li><a href="#stringinflection">10.9. string-inflection</a></li>
|
|
<li><a href="#yasnippet">10.10. yasnippet</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#sourcecontrol">11. Source Control</a>
|
|
<ul>
|
|
<li><a href="#magit">11.1. magit</a>
|
|
<ul>
|
|
<li><a href="#magithub">11.1.1. magithub</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#gitlink">11.2. git-link</a></li>
|
|
<li><a href="#magitgitflow">11.3. magit-gitflow</a></li>
|
|
<li><a href="#gittimemachine">11.4. git-timemachine</a></li>
|
|
<li><a href="#gitgutter">11.5. git-gutter</a></li>
|
|
<li><a href="#gitoliteclone">11.6. gitolite-clone</a></li>
|
|
<li><a href="#gitconfigmode">11.7. gitconfig-mode</a></li>
|
|
<li><a href="#gitignoremode">11.8. gitignore-mode</a></li>
|
|
<li><a href="#github">11.9. github</a>
|
|
<ul>
|
|
<li><a href="#githubsearch">11.9.1. github-search</a></li>
|
|
<li><a href="#githubclone">11.9.2. github-clone</a></li>
|
|
<li><a href="#githubnotifier">11.9.3. github-notifier</a></li>
|
|
<li><a href="#githubbrowsefile">11.9.4. github-browse-file</a></li>
|
|
<li><a href="#magitghpulls">11.9.5. magit-gh-pulls</a></li>
|
|
<li><a href="#gist">11.9.6. gist</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#majormodes">12. Major Modes</a>
|
|
<ul>
|
|
<li><a href="#programming">12.1. Programming</a>
|
|
<ul>
|
|
<li><a href="#python">12.1.1. python</a>
|
|
<ul>
|
|
<li><a href="#pyimport">12.1.1.1. pyimport</a></li>
|
|
<li><a href="#jedi">12.1.1.2. jedi</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#go">12.1.2. go</a>
|
|
<ul>
|
|
<li><a href="#showdiffsoftestifyoutput">12.1.2.1. Show diffs of testify output</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#emacslisp">12.1.3. emacs-lisp</a>
|
|
<ul>
|
|
<li><a href="#elispslimenav">12.1.3.1. elisp-slime-nav</a></li>
|
|
<li><a href="#macrostep">12.1.3.2. macrostep</a></li>
|
|
<li><a href="#emr">12.1.3.3. emr</a></li>
|
|
<li><a href="#editingconfiguration">12.1.3.4. Editing configuration</a></li>
|
|
<li><a href="#checkdoc">12.1.3.5. Checkdoc</a></li>
|
|
<li><a href="#edebug">12.1.3.6. edebug</a></li>
|
|
<li><a href="#overseer">12.1.3.7. overseer</a></li>
|
|
<li><a href="#misc1">12.1.3.8. Misc</a></li>
|
|
<li><a href="#showresultofevallastsexpinline">12.1.3.9. Show result of eval-last-sexp inline</a></li>
|
|
<li><a href="#reevalutedefvarswhenrunningevallastsexp">12.1.3.10. Reevalute defvars when running eval-last-sexp</a></li>
|
|
<li><a href="#inithook">12.1.3.11. Init hook</a></li>
|
|
<li><a href="#keybinds">12.1.3.12. Keybinds</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#clojure">12.1.4. clojure</a>
|
|
<ul>
|
|
<li><a href="#cider">12.1.4.1. cider</a></li>
|
|
<li><a href="#cljrefactor">12.1.4.2. clj-refactor</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#scala">12.1.5. scala</a></li>
|
|
<li><a href="#js">12.1.6. js</a></li>
|
|
<li><a href="#rust">12.1.7. rust</a></li>
|
|
<li><a href="#haskell">12.1.8. haskell</a>
|
|
<ul>
|
|
<li><a href="#intero">12.1.8.1. intero</a></li>
|
|
<li><a href="#hindent">12.1.8.2. hindent</a></li>
|
|
<li><a href="#ghcmod">12.1.8.3. ghc-mod</a></li>
|
|
<li><a href="#companyghc">12.1.8.4. company-ghc</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#cc">12.1.9. C/C++</a></li>
|
|
<li><a href="#c">12.1.10. C#</a></li>
|
|
<li><a href="#racket">12.1.11. racket</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#dataconfigprotocol">12.2. Data/Config/Protocol</a>
|
|
<ul>
|
|
<li><a href="#thrift">12.2.1. thrift</a></li>
|
|
<li><a href="#protobuf">12.2.2. protobuf</a></li>
|
|
<li><a href="#jsonmode">12.2.3. json-mode</a></li>
|
|
<li><a href="#yamlmode">12.2.4. yaml-mode</a></li>
|
|
<li><a href="#esmode">12.2.5. es-mode</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#document">12.3. Document</a>
|
|
<ul>
|
|
<li><a href="#org">12.3.1. org</a>
|
|
<ul>
|
|
<li><a href="#config">12.3.1.1. config</a></li>
|
|
<li><a href="#useframes">12.3.1.2. Use frames</a></li>
|
|
<li><a href="#setbackgroundcolorofsourceblocksforexport">12.3.1.3. Set Background Color of Source Blocks for Export</a></li>
|
|
<li><a href="#usemyowndefaultnamingschemefororgheadings">12.3.1.4. Use my own default naming scheme for org-headings</a></li>
|
|
<li><a href="#orgprojectile">12.3.1.5. org-projectile</a></li>
|
|
<li><a href="#orgnotify">12.3.1.6. org-notify</a></li>
|
|
<li><a href="#orgreveal">12.3.1.7. org-reveal</a></li>
|
|
<li><a href="#orgcaldav">12.3.1.8. org-caldav</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#tex">12.3.2. TeX</a>
|
|
<ul>
|
|
<li><a href="#latex">12.3.2.1. latex</a></li>
|
|
<li><a href="#auctexlatexmk">12.3.2.2. auctex-latexmk</a></li>
|
|
<li><a href="#companyauctex">12.3.2.3. company-auctex</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#markdownmode">12.3.3. markdown-mode</a></li>
|
|
<li><a href="#plantumlmode">12.3.4. plantuml-mode</a></li>
|
|
<li><a href="#wsdmode">12.3.5. wsd-mode</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#utility">12.4. Utility</a>
|
|
<ul>
|
|
<li><a href="#restclient">12.4.1. restclient</a></li>
|
|
<li><a href="#jqmode">12.4.2. jq-mode</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#programming1">13. Programming</a>
|
|
<ul>
|
|
<li><a href="#realgud">13.1. realgud</a></li>
|
|
<li><a href="#emr1">13.2. emr</a></li>
|
|
<li><a href="#semantic">13.3. semantic</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#utility1">14. Utility</a>
|
|
<ul>
|
|
<li><a href="#term">14.1. term</a></li>
|
|
<li><a href="#termmanager">14.2. term-manager</a></li>
|
|
<li><a href="#termprojectile">14.3. term-projectile</a></li>
|
|
<li><a href="#crux">14.4. crux</a></li>
|
|
<li><a href="#kdeconnect">14.5. kde-connect</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#chat">15. Chat</a>
|
|
<ul>
|
|
<li><a href="#erc">15.1. erc</a></li>
|
|
<li><a href="#bitlbee">15.2. bitlbee</a></li>
|
|
<li><a href="#slack">15.3. slack</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#cooperation">16. Cooperation</a>
|
|
<ul>
|
|
<li><a href="#togetherly">16.1. togetherly</a></li>
|
|
<li><a href="#floobits">16.2. floobits</a></li>
|
|
<li><a href="#rudel">16.3. rudel</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#other1">17. Other</a>
|
|
<ul>
|
|
<li><a href="#anzu">17.1. anzu</a></li>
|
|
<li><a href="#fontawesome">17.2. fontawesome</a></li>
|
|
<li><a href="#shellhistory">17.3. shell-history</a></li>
|
|
<li><a href="#iedit">17.4. iedit</a></li>
|
|
<li><a href="#tramp">17.5. tramp</a></li>
|
|
<li><a href="#flycheck">17.6. flycheck</a></li>
|
|
<li><a href="#narrowindirect">17.7. narrow-indirect</a></li>
|
|
<li><a href="#editorconfig">17.8. editorconfig</a></li>
|
|
<li><a href="#dtrtindent">17.9. dtrt-indent</a></li>
|
|
<li><a href="#indentguide">17.10. indent-guide</a></li>
|
|
<li><a href="#rainbowdelimiters">17.11. rainbow-delimiters</a></li>
|
|
<li><a href="#undotree">17.12. undo-tree</a></li>
|
|
<li><a href="#recentf">17.13. recentf</a></li>
|
|
<li><a href="#keychord">17.14. key-chord</a></li>
|
|
<li><a href="#nodejsrepl">17.15. nodejs-repl</a></li>
|
|
<li><a href="#calcmode">17.16. calc-mode</a></li>
|
|
<li><a href="#helmspotify">17.17. helm-spotify</a></li>
|
|
<li><a href="#jabber">17.18. jabber</a></li>
|
|
<li><a href="#htmlize">17.19. htmlize</a></li>
|
|
<li><a href="#calfw">17.20. calfw</a></li>
|
|
<li><a href="#clocker">17.21. clocker</a></li>
|
|
<li><a href="#deft">17.22. deft</a></li>
|
|
<li><a href="#epg">17.23. epg</a></li>
|
|
<li><a href="#pinentry">17.24. pinentry</a></li>
|
|
<li><a href="#twitteringmode">17.25. twittering-mode</a></li>
|
|
<li><a href="#matrixclient">17.26. matrix-client</a></li>
|
|
<li><a href="#mue">17.27. mu4e</a></li>
|
|
<li><a href="#gmailmessagemode">17.28. gmail-message-mode</a></li>
|
|
<li><a href="#hammode">17.29. ham-mode</a></li>
|
|
<li><a href="#alert">17.30. alert</a></li>
|
|
<li><a href="#sauron">17.31. sauron</a></li>
|
|
<li><a href="#screenshot">17.32. screenshot</a></li>
|
|
<li><a href="#libmpdee">17.33. libmpdee</a></li>
|
|
<li><a href="#flyspell">17.34. flyspell</a></li>
|
|
<li><a href="#webmode">17.35. web-mode</a></li>
|
|
<li><a href="#helmthemes">17.36. helm-themes</a></li>
|
|
<li><a href="#helmswoop">17.37. helm-swoop</a></li>
|
|
<li><a href="#perspective">17.38. perspective</a></li>
|
|
<li><a href="#smex">17.39. smex</a></li>
|
|
<li><a href="#java">17.40. java</a></li>
|
|
<li><a href="#androidmode">17.41. android-mode</a></li>
|
|
<li><a href="#gradlemode">17.42. gradle-mode</a></li>
|
|
<li><a href="#jsxmode">17.43. jsx-mode</a></li>
|
|
<li><a href="#css">17.44. css</a></li>
|
|
<li><a href="#robe">17.45. robe</a></li>
|
|
<li><a href="#rinari">17.46. rinari</a></li>
|
|
<li><a href="#helmgtags">17.47. helm-gtags</a></li>
|
|
<li><a href="#sgmlmode">17.48. sgml-mode</a></li>
|
|
<li><a href="#evil">17.49. evil</a></li>
|
|
<li><a href="#hackernews">17.50. hackernews</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#appearance">18. Appearance</a>
|
|
<ul>
|
|
<li><a href="#basicconfig">18.1. Basic Config</a></li>
|
|
<li><a href="#themes">18.2. Themes</a></li>
|
|
<li><a href="#alltheicons">18.3. all-the-icons</a></li>
|
|
<li><a href="#spaceline">18.4. spaceline</a>
|
|
<ul>
|
|
<li><a href="#disablesrgbcolorspacetomakepowerlineseparatorswork">18.4.1. Disable sRGB colorspace to make powerline separators work</a></li>
|
|
<li><a href="#config1">18.4.2. config</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#pagebreaklines">18.5. page-break-lines</a></li>
|
|
<li><a href="#helmthemes1">18.6. helm-themes</a></li>
|
|
<li><a href="#windownumber">18.7. window-number</a></li>
|
|
<li><a href="#whitespacesetup">18.8. Whitespace Setup</a></li>
|
|
<li><a href="#colorizecompliationbuffers">18.9. Colorize Compliation Buffers</a></li>
|
|
<li><a href="#automaticthemechanger">18.10. Automatic Theme Changer</a></li>
|
|
<li><a href="#fixansitermcolors">18.11. Fix <code>ansi-term</code> Colors</a></li>
|
|
<li><a href="#afterloadthemehook">18.12. After <code>load-theme</code> hook</a></li>
|
|
<li><a href="#frameinitialization">18.13. Frame Initialization</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#postinitcustom">19. Post Init Custom</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
I suggest you read this document at <a href="http://ivanmalison.github.io/dotfiles/">http://ivanmalison.github.io/dotfiles/</a> or,
|
|
of course, in emacs, as the internal links that follow are unlikely to work
|
|
anywhere else (including, for example, at <a href="https://github.com/IvanMalison/dotfiles">https://github.com/IvanMalison/dotfiles</a>).
|
|
</p>
|
|
<div id="outline-container-about" class="outline-2">
|
|
<h2 id="about"><span class="section-number-2">1</span> About</h2>
|
|
<div class="outline-text-2" id="text-1">
|
|
<p>
|
|
This is my emacs configuration in literate form. It aspires to be
|
|
like the incredibly well commented literate configurations of <a href="http://pages.sachachua.com/.emacs.d/Sacha.html">Sacha Chua</a> and
|
|
<a href="http://doc.rix.si/cce/cce.html">Ryan Rix</a>, but I haven't quite gotten around to polishing it to the point that
|
|
those two have. Still, there are definitely a few sections of which I am quite
|
|
proud, and that others may find to be useful.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-highlights" class="outline-2">
|
|
<h2 id="highlights"><span class="section-number-2">2</span> Highlights</h2>
|
|
<div class="outline-text-2" id="text-2">
|
|
<p>
|
|
These sections are the ones that have the most potential to be interesting to
|
|
others:
|
|
</p>
|
|
</div>
|
|
<div id="outline-container-howigeneratehttpivanmalisongithubiodotfiles" class="outline-3">
|
|
<h3 id="howigeneratehttpivanmalisongithubiodotfiles"><span class="section-number-3">2.1</span> How I generate <a href="http://ivanmalison.github.io/dotfiles/">http://ivanmalison.github.io/dotfiles/</a></h3>
|
|
<div class="outline-text-3" id="text-2-1">
|
|
</div><div id="outline-container-githooks" class="outline-4">
|
|
<h4 id="githooks"><span class="section-number-4">2.1.1</span> Git Hooks</h4>
|
|
<div class="outline-text-4" id="text-2-1-1">
|
|
<p>
|
|
I wrote a <a href="https://github.com/IvanMalison/dotfiles/tree/master/dotfiles/emacs.d/bin">githook and an installer script</a> that automatically update index.html
|
|
at the root of the repository by running <code>org-html-export-to-html</code> on my
|
|
README.org (essentially this document) . These should work no matter where they
|
|
are placed in a repository. The org-mode file that they target is set <a href="https://github.com/IvanMalison/dotfiles/blob/16a4f6c3aadef39a45d30c15e8637b40858721ea/dotfiles/emacs.d/bin/util.sh#L4">here</a> and
|
|
should be relatively easy to change.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-httpsgithubcomfniessenorghtmlthemesreadtheorg" class="outline-4">
|
|
<h4 id="httpsgithubcomfniessenorghtmlthemesreadtheorg"><span class="section-number-4">2.1.2</span> <a href="https://github.com/fniessen/org-html-themes">Read The Org</a></h4>
|
|
<div class="outline-text-4" id="text-2-1-2">
|
|
<p>
|
|
I use <a href="https://github.com/fniessen">fniessen</a>'s ReadTheOrg theme which can be found at <a href="https://github.com/fniessen/org-html-themes">https://github.com/fniessen/org-html-themes</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-headinglinks" class="outline-4">
|
|
<h4 id="headinglinks"><span class="section-number-4">2.1.3</span> Heading Links</h4>
|
|
<div class="outline-text-4" id="text-2-1-3">
|
|
<p>
|
|
To make it so that internal heading links have names that correspond to the
|
|
heading text, and don't change when new headings are added to the document, I
|
|
wrote a custom version of <code>org-export-get-reference</code>.
|
|
</p>
|
|
|
|
<p>
|
|
See how <a href="#usemyowndefaultnamingschemefororgheadings">this link</a> (which is just a normal internal link in the original
|
|
document) takes you to <a href="http://ivanmalison.github.io/dotfiles/#usemyowndefaultnamingschemefororgheadings">http://ivanmalison.github.io/dotfiles/#usemyowndefaultnamingschemefororgheadings</a>.
|
|
</p>
|
|
|
|
<p>
|
|
In case you haven't noticed, that is where you should go grab the code that does
|
|
this.
|
|
</p>
|
|
|
|
<p>
|
|
I'm considering turning this snippet in to a package, so please let me know if
|
|
that is something you are interested in.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-setbackgroundcolorsourceblocks" class="outline-4">
|
|
<h4 id="setbackgroundcolorsourceblocks"><span class="section-number-4">2.1.4</span> Set Background Color Source Blocks</h4>
|
|
<div class="outline-text-4" id="text-2-1-4">
|
|
<p>
|
|
For some reason, org-mode uses all of your currently active fontification when exporting EXCEPT for background color. <a href="#setbackgroundcolorofsourceblocksforexport">This</a> modification fixes this.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-functionsmyfunctionssection" class="outline-3">
|
|
<h3 id="functionsmyfunctionssection"><span class="section-number-3">2.2</span> <a href="#functions">My functions section</a></h3>
|
|
<div class="outline-text-3" id="text-2-2">
|
|
<p>
|
|
…has a bunch of generally useful functions:
|
|
</p>
|
|
<ul class="org-ul">
|
|
<li><a href="https://github.com/IvanMalison/emit/blob/2e4d788abd68bac538acb06443179b8d5885052e/emit.el#L104">emit-prefix-selector</a> (SUPER USEFUL, moved to emit) See <a href="https://github.com/IvanMalison/emit#prefix-selector">README</a> for explantion</li>
|
|
<li><a href="#fontsize">Font Size</a> functions and an <a href="#orgtarget1">Awesome Hydra</a> for them</li>
|
|
<li><a href="#orgtarget2">Download a file into a buffer</a> (curl straight into a file)</li>
|
|
<li><a href="#orgtarget3">Edit a script on $PATH</a></li>
|
|
<li><a href="#copyyanking">Copy Portions of Buffer File Path Hydra</a> and the associated <a href="#copyyankstringfunctions">Copy String Functions</a></li>
|
|
<li><a href="#orgtarget4">Named Build of Builder Macros</a> (<a href="https://github.com/IvanMalison/emit#named-builder">README</a>) and <a href="#orgtarget5">A Compose Supporting Macros</a> (<a href="https://github.com/IvanMalison/emit#compose">README</a>)</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-configurationofmyownpackages" class="outline-3">
|
|
<h3 id="configurationofmyownpackages"><span class="section-number-3">2.3</span> Configuration of My Own Packages</h3>
|
|
<div class="outline-text-3" id="text-2-3">
|
|
<ul class="org-ul">
|
|
<li><a href="#termprojectile">term-projectile</a> and <a href="#termmanager">term-manager</a></li>
|
|
<li><a href="#orgprojectile">org-projectile</a></li>
|
|
<li><a href="#multiline">multi-line</a></li>
|
|
<li><a href="#githubsearch">github-search</a></li>
|
|
<li><a href="#flimenu">flimenu</a></li>
|
|
<li><a href="#tile">tile</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-programminglanguagesprogramminglanguageconfigurations" class="outline-3">
|
|
<h3 id="programminglanguagesprogramminglanguageconfigurations"><span class="section-number-3">2.4</span> <a href="#orgtarget6">Programming Language Configurations</a></h3>
|
|
<div class="outline-text-3" id="text-2-4">
|
|
<p>
|
|
My programming language major mode configurations can all be found <a href="#orgtarget6">here</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-orgorgmode" class="outline-3">
|
|
<h3 id="orgorgmode"><span class="section-number-3">2.5</span> <a href="#org">org-mode</a></h3>
|
|
<div class="outline-text-3" id="text-2-5">
|
|
<p>
|
|
My <a href="#org">org-mode</a> configuration is pretty comprehensive, but not super well commented.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-htmlheaders" class="outline-2">
|
|
<h2 id="htmlheaders"><span class="section-number-2">3</span> HTML Headers</h2>
|
|
<div class="outline-text-2" id="text-3">
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-early" class="outline-2">
|
|
<h2 id="early"><span class="section-number-2">4</span> Early</h2>
|
|
<div class="outline-text-2" id="text-4">
|
|
<p>
|
|
The configurations in this section need to occur early in emacs startup for some reason or another.
|
|
</p>
|
|
</div>
|
|
<div id="outline-container-lexicalbinding" class="outline-3">
|
|
<h3 id="lexicalbinding"><span class="section-number-3">4.1</span> Lexical Binding</h3>
|
|
<div class="outline-text-3" id="text-4-1">
|
|
<p>
|
|
This makes it so that the file that is produced from tangling this
|
|
file uses lexical scoping.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">-*- lexical-binding: t -*-</span>
|
|
(<span style="color: #00ffff;">setq-default</span> lexical-binding t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-security" class="outline-3">
|
|
<h3 id="security"><span class="section-number-3">4.2</span> Security</h3>
|
|
<div class="outline-text-3" id="text-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:secure</span> t)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:use-https-and-tls</span> ()
|
|
(<span style="color: #00ffff;">setq</span> tls-checktrust t)
|
|
(<span style="color: #00ffff;">let</span> ((trustfile
|
|
(replace-regexp-in-string
|
|
<span style="color: #ffa07a;">"\\\\"</span> <span style="color: #ffa07a;">"/"</span>
|
|
(replace-regexp-in-string
|
|
<span style="color: #ffa07a;">"\n"</span> <span style="color: #ffa07a;">""</span>
|
|
(shell-command-to-string <span style="color: #ffa07a;">"python -m certifi"</span>)))))
|
|
(<span style="color: #00ffff;">setq</span> tls-program
|
|
(list
|
|
(format <span style="color: #ffa07a;">"gnutls-cli%s --x509cafile %s -p %%p %%h"</span>
|
|
(<span style="color: #00ffff;">if</span> (eq window-system 'w32) <span style="color: #ffa07a;">".exe"</span> <span style="color: #ffa07a;">""</span>) trustfile)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:test-security</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((bad-hosts
|
|
(<span style="color: #00ffff;">loop</span> for bad
|
|
in `(<span style="color: #ffa07a;">"https://wrong.host.badssl.com/"</span>
|
|
<span style="color: #ffa07a;">"https://self-signed.badssl.com/"</span>)
|
|
if (<span style="color: #00ffff;">condition-case</span> _e
|
|
(url-retrieve
|
|
bad (<span style="color: #00ffff;">lambda</span> (_retrieved) t))
|
|
(<span style="color: #ffc0cb; font-weight: bold;">error</span> nil))
|
|
collect bad)))
|
|
(<span style="color: #00ffff;">if</span> bad-hosts
|
|
(<span style="color: #ffc0cb; font-weight: bold;">error</span> (format <span style="color: #ffa07a;">"tls misconfigured; retrieved %s ok"</span>
|
|
bad-hosts))
|
|
(url-retrieve <span style="color: #ffa07a;">"https://badssl.com"</span>
|
|
(<span style="color: #00ffff;">lambda</span> (_retrieved) t)))))
|
|
|
|
(<span style="color: #00ffff;">when</span> imalison:secure (imalison:use-https-and-tls))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-elpaarchivesetup" class="outline-3">
|
|
<h3 id="elpaarchivesetup"><span class="section-number-3">4.3</span> ELPA Archive Setup</h3>
|
|
<div class="outline-text-3" id="text-4-3">
|
|
<p>
|
|
The org archive does not support https, so we set http as the protocol explicitly.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span class="linenr"> 1: </span>(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">package</span>)
|
|
<span class="linenr"> 2: </span>
|
|
<span class="linenr"> 3: </span>(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:build-archive-uri</span> (uri protocol)
|
|
<span class="linenr"> 4: </span> (<span style="color: #00ffff;">unless</span> protocol (<span style="color: #00ffff;">setq</span> protocol (<span style="color: #00ffff;">if</span> imalison:secure <span style="color: #ffa07a;">"https"</span> <span style="color: #ffa07a;">"http"</span>)))
|
|
<span class="linenr"> 5: </span> (format <span style="color: #ffa07a;">"%s://%s"</span> protocol uri))
|
|
<span class="linenr"> 6: </span>
|
|
<span class="linenr"> 7: </span>(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:melpa-uri</span> nil)
|
|
<span class="linenr"> 8: </span>(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:package-archive-triples</span>
|
|
<span class="linenr"> 9: </span> `((<span style="color: #ffa07a;">"elpa"</span> <span style="color: #ffa07a;">"tromey.com/elpa/"</span> <span style="color: #ffa07a;">"http"</span>)
|
|
<span class="linenr">10: </span> (<span style="color: #ffa07a;">"org"</span> <span style="color: #ffa07a;">"orgmode.org/elpa/"</span> <span style="color: #ffa07a;">"http"</span>)
|
|
<span class="linenr">11: </span> (<span style="color: #ffa07a;">"melpa"</span> ,(<span style="color: #00ffff;">or</span> imalison:melpa-uri <span style="color: #ffa07a;">"melpa.org/packages/"</span>) nil)
|
|
<span class="linenr">12: </span> (<span style="color: #ffa07a;">"melpa-stable"</span> <span style="color: #ffa07a;">"stable.melpa.org/packages/"</span> nil)))
|
|
<span class="linenr">13: </span>
|
|
<span class="linenr">14: </span>(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:add-package-archive</span> (archive-name archive-uri)
|
|
<span class="linenr">15: </span> (add-to-list 'package-archives
|
|
<span class="linenr">16: </span> `(,archive-name . ,archive-uri) t))
|
|
<span class="linenr">17: </span>
|
|
<span class="linenr">18: </span>(<span style="color: #00ffff;">cl-loop</span> for package-triple in imalison:package-archive-triples
|
|
<span class="linenr">19: </span> do (<span style="color: #00ffff;">cl-destructuring-bind</span> (archive-name archive-uri protocol) package-triple
|
|
<span class="linenr">20: </span> (imalison:add-package-archive
|
|
<span class="linenr">21: </span> archive-name (imalison:build-archive-uri archive-uri protocol))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-bootstrappackageloading" class="outline-3">
|
|
<h3 id="bootstrappackageloading"><span class="section-number-3">4.4</span> Bootstrap Package Loading</h3>
|
|
<div class="outline-text-3" id="text-4-4">
|
|
<p>
|
|
Its a shame that everyone has to have some version of this function in
|
|
their init.el. I use use-package's own mechanism for ensuring packages
|
|
are installed so my version of <code>ensure-packages-installed</code> is really
|
|
only used to download use-package itself.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">ensure-packages-installed</span> (packages)
|
|
(<span style="color: #00ffff;">unless</span> package-archive-contents
|
|
(package-refresh-contents))
|
|
(mapcar
|
|
(<span style="color: #00ffff;">lambda</span> (package)
|
|
(<span style="color: #00ffff;">if</span> (package-installed-p package)
|
|
package
|
|
(<span style="color: #00ffff;">progn</span> (message (format <span style="color: #ffa07a;">"Installing package %s."</span> package))
|
|
(package-install package))))
|
|
packages))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
Ensure that use-package is installed.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(package-initialize t)
|
|
(ensure-packages-installed '(<span style="color: #00ffff;">use-package</span>))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
use-package is only needed at compile time.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">eval-when-compile</span> (<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">use-package</span>))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
Ensure by default since most of the package for which I use use-package need to be downloaded. ensure can be disabled explicitly with a <code>:ensure nil</code>.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> use-package-always-ensure t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-setupautocompile" class="outline-3">
|
|
<h3 id="setupautocompile"><span class="section-number-3">4.5</span> Setup auto-compile</h3>
|
|
<div class="outline-text-3" id="text-4-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">auto-compile</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:ensure</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(auto-compile-on-load-mode)
|
|
(auto-compile-on-save-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-prefernewerversions" class="outline-3">
|
|
<h3 id="prefernewerversions"><span class="section-number-3">4.6</span> Prefer Newer Versions</h3>
|
|
<div class="outline-text-3" id="text-4-6">
|
|
<p>
|
|
To reduce the risk of loading outdated byte code files, we set
|
|
load-prefer-newer and enable auto-compile-on-load-mode as early as
|
|
possible.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> load-prefer-newer t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-customfiles" class="outline-3">
|
|
<h3 id="customfiles"><span class="section-number-3">4.7</span> Custom Files</h3>
|
|
<div class="outline-text-3" id="text-4-7">
|
|
<p>
|
|
The default value of <code>custom-file</code> is just the current user's <code>.emacs.d/init.el</code>
|
|
file. Emacs will add content to <code>custom-file</code> whenever a variable is customized
|
|
or marked as safe. When init.el is version controlled, it is quite annoying to
|
|
have random machine-generated variable settings amended to it because those
|
|
changes are often not worth keeping permanently, so we set a different custom
|
|
file here to avoid this situation.
|
|
</p>
|
|
|
|
<p>
|
|
custom-before.el is loaded before the rest of init.el, while custom-after.el is
|
|
loaded afterwards. this-machine.el has customizations that should only apply to
|
|
the current machine. custom-before and custom-after are not version controlled
|
|
in the dotfiles repo but they are shared across machines elsewhere.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">machine-custom</span> <span style="color: #ffa07a;">"~/.emacs.d/this-machine.el"</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">custom-after-file</span> <span style="color: #ffa07a;">"~/.emacs.d/custom-after.el"</span>)
|
|
(<span style="color: #00ffff;">setq</span> custom-file <span style="color: #ffa07a;">"~/.emacs.d/custom-before.el"</span>)
|
|
(<span style="color: #00ffff;">when</span> (file-exists-p custom-file) (load custom-file))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-emit" class="outline-3">
|
|
<h3 id="emit"><span class="section-number-3">4.8</span> emit</h3>
|
|
<div class="outline-text-3" id="text-4-8">
|
|
</div><div id="outline-container-thisneedstobedonebetterbutitworksfornow" class="outline-4">
|
|
<h4 id="thisneedstobedonebetterbutitworksfornow"><span class="section-number-4">4.8.1</span> <span class="todo TODO">TODO</span> this needs to be done better, but it works for now</h4>
|
|
<div class="outline-text-4" id="text-4-8-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">when</span> (file-exists-p <span style="color: #ffa07a;">"~/.emacs.d/load.d/emit.el"</span>)
|
|
(load <span style="color: #ffa07a;">"~/.emacs.d/load.d/emit.el"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-benchmarking" class="outline-3">
|
|
<h3 id="benchmarking"><span class="section-number-3">4.9</span> Benchmarking</h3>
|
|
<div class="outline-text-3" id="text-4-9">
|
|
<p>
|
|
This appears here so that it can accurately benchmark as much of
|
|
startup as possible.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:do-benchmark</span>)
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">benchmark-init</span>
|
|
<span style="color: #b0c4de;">:if</span> (<span style="color: #00ffff;">bound-and-true-p</span> imalison:do-benchmark)
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-guidisables" class="outline-3">
|
|
<h3 id="guidisables"><span class="section-number-3">4.10</span> GUI Disables</h3>
|
|
<div class="outline-text-3" id="text-4-10">
|
|
<p>
|
|
Death to any gui elements in emacs! Do this EARLY so that emacs
|
|
doesn't redisplay in a way that is visually unpleasant on startup a
|
|
bunch of times.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">when</span> (fboundp 'menu-bar-mode) (menu-bar-mode -1))
|
|
(<span style="color: #00ffff;">when</span> (fboundp 'tool-bar-mode) (tool-bar-mode -1))
|
|
(<span style="color: #00ffff;">when</span> (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
Tooltips are annoying:
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">if</span> (fboundp 'tooltip-mode) (tooltip-mode -1) (<span style="color: #00ffff;">setq</span> tooltip-use-echo-area t))'
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-bytecompiler" class="outline-3">
|
|
<h3 id="bytecompiler"><span class="section-number-3">4.11</span> Byte-Compiler</h3>
|
|
<div class="outline-text-3" id="text-4-11">
|
|
<p>
|
|
These definitions silence the byte-compiler.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">grep-find-ignored-directories</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">grep-find-ignored-files</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">ido-context-switch-command</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">ido-cur-item</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">ido-cur-list</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">ido-default-item</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">inherit-input-method</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">oauth--token-data</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">tls-checktrust</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">tls-program</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">url-callback-arguments</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">url-callback-function</span> nil)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">url-http-extra-headers</span> nil)
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This variable doesn't exist in old versions of org-mode</span>
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">org-show-context-detail</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-execpathfromshell" class="outline-3">
|
|
<h3 id="execpathfromshell"><span class="section-number-3">4.12</span> exec-path-from-shell</h3>
|
|
<div class="outline-text-3" id="text-4-12">
|
|
<p>
|
|
Sets environment variables by starting a shell.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">exec-path-from-shell</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">For debugging</span>
|
|
(<span style="color: #00ffff;">when</span> nil
|
|
(message <span style="color: #ffa07a;">"path: %s, setup: %s"</span> (getenv <span style="color: #ffa07a;">"PATH"</span>)
|
|
(getenv <span style="color: #ffa07a;">"ENVIRONMENT_SETUP_DONE"</span>))
|
|
(<span style="color: #00ffff;">setq</span> exec-path-from-shell-debug t))
|
|
(<span style="color: #00ffff;">setq</span> exec-path-from-shell-arguments (list <span style="color: #ffa07a;">"-l"</span>))
|
|
(<span style="color: #00ffff;">setq</span> exec-path-from-shell-check-startup-files nil)
|
|
(add-to-list 'exec-path-from-shell-variables <span style="color: #ffa07a;">"SHELL"</span>)
|
|
(add-to-list 'exec-path-from-shell-variables <span style="color: #ffa07a;">"GOPATH"</span>)
|
|
(add-to-list 'exec-path-from-shell-variables <span style="color: #ffa07a;">"ENVIRONMENT_SETUP_DONE"</span>)
|
|
(add-to-list 'exec-path-from-shell-variables <span style="color: #ffa07a;">"PYTHONPATH"</span>)
|
|
(exec-path-from-shell-initialize)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-noflet" class="outline-3">
|
|
<h3 id="noflet"><span class="section-number-3">4.13</span> noflet</h3>
|
|
<div class="outline-text-3" id="text-4-13">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">noflet</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-nonforkingshellcommandtostring" class="outline-3">
|
|
<h3 id="nonforkingshellcommandtostring"><span class="section-number-3">4.14</span> Non-Forking Shell Command To String</h3>
|
|
<div class="outline-text-3" id="text-4-14">
|
|
<p>
|
|
Emacs' built in <code>shell-command-to-string</code> function has the downside that it
|
|
forks a new shell process every time it is executed. This means that any shell
|
|
startup cost is incurred when this function is called.
|
|
</p>
|
|
|
|
<p>
|
|
The following implementation uses eshell's <code>executable-find</code> to find the
|
|
binary (which is the only reason <code>shell-comand-to-string</code> is typically used
|
|
anyway), but it avoids incurring any shell-startup cost.
|
|
</p>
|
|
|
|
<p>
|
|
This was originally inspired by <a href="https://github.com/bbatsov/projectile/issues/1044">this issue</a>.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:call-process-to-string</span> (program <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(apply 'call-process program nil (current-buffer) nil args)
|
|
(buffer-string)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-call-process-args-from-shell-command</span> (command)
|
|
(<span style="color: #00ffff;">cl-destructuring-bind</span>
|
|
(the-command . args) (split-string command <span style="color: #ffa07a;">" "</span>)
|
|
(<span style="color: #00ffff;">let</span> ((binary-path (executable-find the-command)))
|
|
(<span style="color: #00ffff;">when</span> binary-path
|
|
(cons binary-path args)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:shell-command-to-string</span> (command)
|
|
(<span style="color: #00ffff;">let</span> ((call-process-args
|
|
(imalison:get-call-process-args-from-shell-command command)))
|
|
(<span style="color: #00ffff;">if</span> call-process-args
|
|
(apply 'imalison:call-process-to-string call-process-args)
|
|
(shell-command-to-string command))))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
This makes it so that we always try to call-process instead of shell-command-to-sting. It may cause undesireable behavior.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:try-call-process</span> (command)
|
|
(<span style="color: #00ffff;">let</span> ((call-process-args
|
|
(imalison:get-call-process-args-from-shell-command command)))
|
|
(<span style="color: #00ffff;">if</span> call-process-args
|
|
(apply 'imalison:call-process-to-string call-process-args))))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
This had to be disabled because it was causing a bunch of issues with projectile.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(advice-add 'shell-command-to-string <span style="color: #b0c4de;">:before-until</span> 'imalison:try-call-process)
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
This solution only applies it to projectile-find-file
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:call-with-quick-shell-command</span> (fn <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">noflet</span> ((shell-command-to-string (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">or</span> (apply 'imalison:try-call-process args) (apply this-fn args))))
|
|
(apply fn args)))
|
|
|
|
(advice-add 'projectile-find-file <span style="color: #b0c4de;">:around</span> 'imalison:call-with-quick-shell-command)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-setemacsenvironmentvariable" class="outline-3">
|
|
<h3 id="setemacsenvironmentvariable"><span class="section-number-3">4.15</span> Set EMACS environment variable</h3>
|
|
<div class="outline-text-3" id="text-4-15">
|
|
<p>
|
|
Emacs cask seems to depend on the EMACS environment variable being set to the
|
|
binary path of emacs. I found the method for getting the path to the emacs
|
|
executable <a href="http://emacs.stackexchange.com/questions/6010/can-emacs-detect-the-path-of-its-executable">here</a>.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(setenv <span style="color: #ffa07a;">"EMACS"</span>
|
|
(file-truename (expand-file-name invocation-name invocation-directory)))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Update: It turns out that it is term-exec-1 that is causing this environment
|
|
variable to be set to something strange. When I tried to disable it, it seemed
|
|
to cause issues. Oh well…
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-functions" class="outline-2">
|
|
<h2 id="functions"><span class="section-number-2">5</span> Functions</h2>
|
|
<div class="outline-text-2" id="text-5">
|
|
</div><div id="outline-container-joinpaths" class="outline-3">
|
|
<h3 id="joinpaths"><span class="section-number-3">5.1</span> Join Paths</h3>
|
|
<div class="outline-text-3" id="text-5-1">
|
|
<p>
|
|
Works in the same way as os.path.join in python
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:join-paths</span> (root <span style="color: #98fb98;">&rest</span> dirs)
|
|
(<span style="color: #00ffff;">let</span> ((result root))
|
|
(<span style="color: #00ffff;">cl-loop</span> for dir in dirs do
|
|
(<span style="color: #00ffff;">setq</span> result (concat (file-name-as-directory result) dir)))
|
|
result))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-variables" class="outline-3">
|
|
<h3 id="variables"><span class="section-number-3">5.2</span> Variables</h3>
|
|
<div class="outline-text-3" id="text-5-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:projects-directory</span>
|
|
(imalison:join-paths (substitute-in-file-name <span style="color: #ffa07a;">"$HOME"</span>) <span style="color: #ffa07a;">"Projects"</span>))
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:gpg-key</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-usepackagewrapperwithlocalloadpathsupport" class="outline-3">
|
|
<h3 id="usepackagewrapperwithlocalloadpathsupport"><span class="section-number-3">5.3</span> Use Package Wrapper With Local Load Path Support</h3>
|
|
<div class="outline-text-3" id="text-5-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(put 'imalison:use-package 'lisp-indent-function 'defun)
|
|
(put 'imalison:use-package* 'lisp-indent-function 'defun)
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:use-package*</span> (package target-directory <span style="color: #98fb98;">&rest</span> forms)
|
|
(<span style="color: #00ffff;">let*</span> ((actual-target (<span style="color: #00ffff;">if</span> (file-exists-p target-directory)
|
|
target-directory
|
|
(<span style="color: #00ffff;">let</span> ((in-projects (imalison:join-paths imalison:projects-directory
|
|
target-directory)))
|
|
(<span style="color: #00ffff;">when</span> (file-exists-p in-projects)
|
|
in-projects))))
|
|
(additional-forms
|
|
(<span style="color: #00ffff;">when</span> actual-target
|
|
(list
|
|
<span style="color: #b0c4de;">:load-path</span> actual-target
|
|
<span style="color: #b0c4de;">:ensure</span> nil))))
|
|
`(<span style="color: #00ffff;">use-package</span> ,package
|
|
,@additional-forms ,@forms)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:use-package</span> (package <span style="color: #98fb98;">&rest</span> forms)
|
|
`(<span style="color: #00ffff;">imalison:use-package*</span> ,package ,(symbol-name package) ,@forms))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-requiredpackages" class="outline-3">
|
|
<h3 id="requiredpackages"><span class="section-number-3">5.4</span> Required Packages</h3>
|
|
<div class="outline-text-3" id="text-5-4">
|
|
<p>
|
|
The packages in this section provide no functionality on their own,
|
|
but provide support for writing custom elisp.
|
|
</p>
|
|
</div>
|
|
<div id="outline-container-s" class="outline-4">
|
|
<h4 id="s"><span class="section-number-4">5.4.1</span> s</h4>
|
|
<div class="outline-text-4" id="text-5-4-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">s</span> <span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-dash" class="outline-4">
|
|
<h4 id="dash"><span class="section-number-4">5.4.2</span> dash</h4>
|
|
<div class="outline-text-4" id="text-5-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">dash</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(dash-enable-font-lock)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gh" class="outline-4">
|
|
<h4 id="gh"><span class="section-number-4">5.4.3</span> gh</h4>
|
|
<div class="outline-text-4" id="text-5-4-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package*</span> gh <span style="color: #ffa07a;">"gh.el"</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-shutup" class="outline-4">
|
|
<h4 id="shutup"><span class="section-number-4">5.4.4</span> shut-up</h4>
|
|
<div class="outline-text-4" id="text-5-4-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">shut-up</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:shut-up-around</span> (<span style="color: #00ffff;">function</span> <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">shut-up</span> (apply function args))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-pcache" class="outline-4">
|
|
<h4 id="pcache"><span class="section-number-4">5.4.5</span> pcache</h4>
|
|
<div class="outline-text-4" id="text-5-4-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">pcache</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-parsecsv" class="outline-4">
|
|
<h4 id="parsecsv"><span class="section-number-4">5.4.6</span> parse-csv</h4>
|
|
<div class="outline-text-4" id="text-5-4-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">parse-csv</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-emit1" class="outline-4">
|
|
<h4 id="emit1"><span class="section-number-4">5.4.7</span> emit</h4>
|
|
<div class="outline-text-4" id="text-5-4-7">
|
|
<p>
|
|
This is disabled for now until I figure out what to do with emit.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> emit
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">emit</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-request" class="outline-4">
|
|
<h4 id="request"><span class="section-number-4">5.4.8</span> request</h4>
|
|
<div class="outline-text-4" id="text-5-4-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">request</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-namedbuild" class="outline-3">
|
|
<h3 id="namedbuild"><span class="section-number-3">5.5</span> Named Build</h3>
|
|
<div class="outline-text-3" id="text-5-5">
|
|
<p>
|
|
<a id="orgtarget4"></a>
|
|
imalison:named-build provides a way to invoke a macro in such a way
|
|
that the lambda that it produces is given a name.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:named-build</span> (name builder <span style="color: #98fb98;">&rest</span> args)
|
|
`(<span style="color: #00ffff;">defalias</span> (<span style="color: #00ffff;">quote</span> ,name) (,builder ,@args)))
|
|
(put 'imalison:named-build 'lisp-indent-function 1)
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
<code>imalison:named-builder-builder</code> builds a macro from another macro
|
|
that builds lambda functions. The arguments to the macro that results
|
|
are exactly the same as those of the original macro, except that the
|
|
first argument of the new macro is used to name the lambda produced by
|
|
the original macro (which is passed as the second argument to
|
|
<code>imalison:named-builder-builder</code>).
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:named-builder-builder</span> (named-builder-name builder-name)
|
|
`(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defmacro</span> ,named-builder-name (function-name <span style="color: #98fb98;">&rest</span> args)
|
|
(cons 'imalison:named-build
|
|
(cons function-name
|
|
(cons (<span style="color: #00ffff;">quote</span> ,builder-name) args))))
|
|
(put (<span style="color: #00ffff;">quote</span> ,named-builder-name) 'lisp-indent-function 1)))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
<code>imalison:named-builder</code> runs <code>imalison:named-builder-builder</code> with the
|
|
convention that original macro to modify is the concatenation of the
|
|
new macro name and the -fn suffix.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:named-builder</span> (name)
|
|
`(<span style="color: #00ffff;">imalison:named-builder-builder</span>
|
|
,name ,(intern (concat (symbol-name name) <span style="color: #ffa07a;">"-fn"</span>))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-emacsversionpredicate" class="outline-3">
|
|
<h3 id="emacsversionpredicate"><span class="section-number-3">5.6</span> Emacs Version Predicate</h3>
|
|
<div class="outline-text-3" id="text-5-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:emacs-version-predicate-fn</span> (major-version minor-version)
|
|
`(<span style="color: #00ffff;">lambda</span> ()
|
|
(<span style="color: #00ffff;">or</span> (> emacs-major-version ,major-version)
|
|
(<span style="color: #00ffff;">and</span> (>= emacs-major-version ,major-version)
|
|
(>= emacs-minor-version ,minor-version)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:check-emacs-version</span> (major-version minor-version)
|
|
(funcall (<span style="color: #00ffff;">imalison:emacs-version-predicate-fn</span> major-version minor-version)))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:emacs-version-predicate)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-composefunctions" class="outline-3">
|
|
<h3 id="composefunctions"><span class="section-number-3">5.7</span> Compose Functions</h3>
|
|
<div class="outline-text-3" id="text-5-7">
|
|
</div><div id="outline-container-aversionsupportingmacros" class="outline-4">
|
|
<h4 id="aversionsupportingmacros"><span class="section-number-4">5.7.1</span> A version supporting macros</h4>
|
|
<div class="outline-text-4" id="text-5-7-1">
|
|
<p>
|
|
<a id="orgtarget5"></a>
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:help-function-arglist</span> (fn)
|
|
(<span style="color: #00ffff;">let</span> ((result (help-function-arglist fn)))
|
|
(<span style="color: #00ffff;">if</span> (eq result t) '(<span style="color: #98fb98;">&rest</span> args) result)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-fn</span> (<span style="color: #98fb98;">&rest</span> funcs)
|
|
(<span style="color: #00ffff;">let*</span> ((last-function (car (last funcs)))
|
|
(arguments (imalison:help-function-arglist last-function))
|
|
(call-arguments (delq '<span style="color: #98fb98;">&optional</span> arguments)))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">When we have an &rest arguments there is no point in taking any</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">of the arguments by name, so we simply pass them all as an</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">argument list. See the comment below to understand how this</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">impacts the evaluation of the last function.</span>
|
|
(<span style="color: #00ffff;">when</span> (memq '<span style="color: #98fb98;">&rest</span> arguments)
|
|
(<span style="color: #00ffff;">setq</span> arguments '(<span style="color: #98fb98;">&rest</span> args))
|
|
(<span style="color: #00ffff;">setq</span> call-arguments '(args)))
|
|
`(<span style="color: #00ffff;">imalison:compose-argspec</span> ,arguments ,call-arguments ,@funcs)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-argspec</span> (arguments call-arguments <span style="color: #98fb98;">&rest</span> funcs)
|
|
<span style="color: #ffa07a;">"Build a new function with NAME that is the composition of FUNCS."</span>
|
|
`(<span style="color: #00ffff;">lambda</span> ,arguments
|
|
(<span style="color: #00ffff;">imalison:compose-helper</span> ,funcs ,call-arguments)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-helper</span> (funcs arguments)
|
|
<span style="color: #ffa07a;">"Builds funcalls of FUNCS applied to the arg."</span>
|
|
(<span style="color: #00ffff;">if</span> (equal (length funcs) 1)
|
|
(<span style="color: #00ffff;">let</span> ((last-function (car funcs)))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This hideous clause is here because it is the only way to</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">handle functions that take &rest args.</span>
|
|
(<span style="color: #00ffff;">when</span> (memq '<span style="color: #98fb98;">&rest</span> (imalison:help-function-arglist last-function))
|
|
(<span style="color: #00ffff;">setq</span> last-function (apply-partially 'apply last-function)))
|
|
`(,last-function ,@arguments))
|
|
`(,(car funcs)
|
|
(<span style="color: #00ffff;">imalison:compose-helper</span> ,(cdr funcs) ,arguments))))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-macro-fn</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
`(cons 'macro (<span style="color: #00ffff;">imalison:compose-fn</span> ,@args)))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:compose)
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:compose-macro)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-arbitraryargumentsateverystep" class="outline-4">
|
|
<h4 id="arbitraryargumentsateverystep"><span class="section-number-4">5.7.2</span> Arbitrary arguments at every step</h4>
|
|
<div class="outline-text-4" id="text-5-7-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:make-list</span> (thing)
|
|
(<span style="color: #00ffff;">if</span> (listp thing)
|
|
thing
|
|
(list thing)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-with-apply</span> (<span style="color: #98fb98;">&rest</span> funcs)
|
|
<span style="color: #ffa07a;">"Build a new function with NAME that is the composition of FUNCS."</span>
|
|
`(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">imalison:compose-with-apply-helper</span> ,funcs)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-with-apply-helper</span> (funcs)
|
|
<span style="color: #ffa07a;">"Builds funcalls of FUNCS applied to the arg."</span>
|
|
(<span style="color: #00ffff;">if</span> (equal (length funcs) 0)
|
|
(<span style="color: #00ffff;">quote</span> args)
|
|
`(apply ,(car funcs)
|
|
(imalison:make-list (<span style="color: #00ffff;">imalison:compose-with-apply-helper</span> ,(cdr funcs))))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-simplerunaryversion" class="outline-4">
|
|
<h4 id="simplerunaryversion"><span class="section-number-4">5.7.3</span> Simpler unary version</h4>
|
|
<div class="outline-text-4" id="text-5-7-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-unary</span> (<span style="color: #98fb98;">&rest</span> funcs)
|
|
<span style="color: #ffa07a;">"Build a new function with NAME that is the composition of FUNCS."</span>
|
|
`(<span style="color: #00ffff;">lambda</span> (arg)
|
|
(<span style="color: #00ffff;">imalison:compose-helper-unary</span> ,funcs)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-helper-unary</span> (funcs)
|
|
<span style="color: #ffa07a;">"Builds funcalls of FUNCS applied to the arg."</span>
|
|
(<span style="color: #00ffff;">if</span> (equal (length funcs) 0)
|
|
'arg
|
|
`(funcall ,(car funcs) (<span style="color: #00ffff;">imalison:compose-helper-unary</span> ,(cdr funcs)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-withadvice" class="outline-3">
|
|
<h3 id="withadvice"><span class="section-number-3">5.8</span> With Advice</h3>
|
|
<div class="outline-text-3" id="text-5-8">
|
|
<p>
|
|
Taken from <a href="http://emacs.stackexchange.com/questions/16490/emacs-let-bound-advice">here</a>.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:with-advice</span> (args <span style="color: #98fb98;">&rest</span> body)
|
|
(<span style="color: #00ffff;">declare</span> (indent 1))
|
|
(<span style="color: #00ffff;">let</span> ((fun-name (car args))
|
|
(advice (cadr args))
|
|
(orig-sym (make-symbol <span style="color: #ffa07a;">"orig"</span>)))
|
|
`(<span style="color: #00ffff;">cl-letf*</span> ((,orig-sym (symbol-function ',fun-name))
|
|
((symbol-function ',fun-name)
|
|
(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(apply ,advice ,orig-sym args))))
|
|
,@body)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-makeinteractive" class="outline-3">
|
|
<h3 id="makeinteractive"><span class="section-number-3">5.9</span> Make Interactive</h3>
|
|
<div class="outline-text-3" id="text-5-9">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:make-interactive-fn</span> (<span style="color: #00ffff;">function</span>)
|
|
`(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(apply ,function args)))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:make-interactive)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-adviceaddaroundbuilder" class="outline-3">
|
|
<h3 id="adviceaddaroundbuilder"><span class="section-number-3">5.10</span> Advice Add Around Builder</h3>
|
|
<div class="outline-text-3" id="text-5-10">
|
|
<p>
|
|
For composing functions with an apply so that they can be used with
|
|
the <code>:around</code> keyword of advice-add.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:advice-add-around-builder-fn</span> (<span style="color: #98fb98;">&rest</span> functions)
|
|
`(<span style="color: #00ffff;">imalison:compose-argspec</span>
|
|
(<span style="color: #00ffff;">function</span> <span style="color: #98fb98;">&rest</span> args) (<span style="color: #00ffff;">function</span> args) ,@functions apply))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:advice-add-around-builder)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-killnew" class="outline-4">
|
|
<h4 id="killnew"><span class="section-number-4">5.10.1</span> Kill New</h4>
|
|
<div class="outline-text-4" id="text-5-10-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:advice-add-around-builder</span> imalison:kill-new-around kill-new)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-letaround" class="outline-3">
|
|
<h3 id="letaround"><span class="section-number-3">5.11</span> Let Around</h3>
|
|
<div class="outline-text-3" id="text-5-11">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:let-around-fn</span> (orig-func <span style="color: #98fb98;">&rest</span> forms)
|
|
(<span style="color: #00ffff;">let*</span> ((orig-interactive-form (interactive-form orig-func))
|
|
(docstring-form (format <span style="color: #ffa07a;">"Call `</span><span style="color: #7fffd4;">%s</span><span style="color: #ffa07a;">' with bindings: %s."</span> orig-func forms))
|
|
(additional-forms (list docstring-form)))
|
|
(<span style="color: #00ffff;">when</span> orig-interactive-form
|
|
(nconc additional-forms (list orig-interactive-form)))
|
|
`(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
,@additional-forms
|
|
(<span style="color: #00ffff;">let</span> ,forms
|
|
(apply (<span style="color: #00ffff;">quote</span> ,orig-func) args)))))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:let-around)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-letaroundadvice" class="outline-3">
|
|
<h3 id="letaroundadvice"><span class="section-number-3">5.12</span> Let Around Advice</h3>
|
|
<div class="outline-text-3" id="text-5-12">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:let-advise-around-fn</span> (<span style="color: #98fb98;">&rest</span> forms)
|
|
`(<span style="color: #00ffff;">lambda</span> (orig-func <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">let</span> ,forms
|
|
(apply orig-func args))))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:let-advise-around)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-letadvise" class="outline-3">
|
|
<h3 id="letadvise"><span class="section-number-3">5.13</span> Let Advise</h3>
|
|
<div class="outline-text-3" id="text-5-13">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:let-advise</span> (advised-function <span style="color: #98fb98;">&rest</span> forms)
|
|
(<span style="color: #00ffff;">let</span> ((advice-fn-name (imalison:concat-symbols
|
|
<span style="color: #ffa07a;">"around-advice-"</span> advised-function)))
|
|
`(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">imalison:let-advise-around</span> ,advice-fn-name ,@forms)
|
|
(advice-add (<span style="color: #00ffff;">quote</span> ,advised-function) <span style="color: #b0c4de;">:around</span> (<span style="color: #00ffff;">quote</span> ,advice-fn-name)))))
|
|
(put 'imalison:let-advise 'lisp-indent-function 1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-composearoundbuilder" class="outline-3">
|
|
<h3 id="composearoundbuilder"><span class="section-number-3">5.14</span> Compose Around Builder</h3>
|
|
<div class="outline-text-3" id="text-5-14">
|
|
<p>
|
|
For composing functions with an apply so that they can be used with the <code>:around</code> keyword of advice-add.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO/XXX: Isn't this just apply? why doesn't apply work here</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:around-identity</span> (fn <span style="color: #98fb98;">&rest</span> args)
|
|
(apply fn args))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-around-builder-fn</span> (<span style="color: #98fb98;">&rest</span> functions)
|
|
`(<span style="color: #00ffff;">imalison:compose-fn</span> ,@functions imalison:around-identity))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:compose-around-builder)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-measuretime" class="outline-3">
|
|
<h3 id="measuretime"><span class="section-number-3">5.15</span> Measure Time</h3>
|
|
<div class="outline-text-3" id="text-5-15">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:measure-time</span> (<span style="color: #98fb98;">&rest</span> body)
|
|
<span style="color: #ffa07a;">"Measure and return the running time of the code block."</span>
|
|
(<span style="color: #00ffff;">declare</span> (indent defun))
|
|
(<span style="color: #00ffff;">let</span> ((start (make-symbol <span style="color: #ffa07a;">"start"</span>)))
|
|
`(<span style="color: #00ffff;">let</span> ((,start (float-time)))
|
|
,@body
|
|
(- (float-time) ,start))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-addfilestoorgagendafiles" class="outline-3">
|
|
<h3 id="addfilestoorgagendafiles"><span class="section-number-3">5.16</span> Add Files to <code>org-agenda-files</code></h3>
|
|
<div class="outline-text-3" id="text-5-16">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:add-to-org-agenda-files</span> (incoming-files)
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-files
|
|
(delete-dups
|
|
(<span style="color: #00ffff;">cl-loop</span> for filepath in (append org-agenda-files incoming-files)
|
|
when (<span style="color: #00ffff;">and</span> filepath (file-exists-p (file-truename filepath)))
|
|
collect (file-truename filepath)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-getstringfromfile" class="outline-3">
|
|
<h3 id="getstringfromfile"><span class="section-number-3">5.17</span> Get String From File</h3>
|
|
<div class="outline-text-3" id="text-5-17">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-string-from-file</span> (file-path)
|
|
<span style="color: #ffa07a;">"Return file-path's file content."</span>
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(insert-file-contents file-path)
|
|
(buffer-string)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-getcurrentlocation" class="outline-3">
|
|
<h3 id="getcurrentlocation"><span class="section-number-3">5.18</span> Get Current Location</h3>
|
|
<div class="outline-text-3" id="text-5-18">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-lat-long</span> ()
|
|
(<span style="color: #00ffff;">condition-case</span> _ex
|
|
(mapcar 'string-to-number (s-split <span style="color: #ffa07a;">","</span> (s-trim (shell-command-to-string
|
|
<span style="color: #ffa07a;">"whereami"</span>))))
|
|
(<span style="color: #ffc0cb; font-weight: bold;">error</span> (list 37.7879312624533 -122.402388853402))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-haversinedistance" class="outline-3">
|
|
<h3 id="haversinedistance"><span class="section-number-3">5.19</span> Haversine distance</h3>
|
|
<div class="outline-text-3" id="text-5-19">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:sin2</span> (p)
|
|
(<span style="color: #00ffff;">let</span> ((sin-p (sin p)))
|
|
(* sin-p sin-p) ))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:haversine-distance</span>
|
|
(left-lat-long right-lat-long <span style="color: #98fb98;">&optional</span> radius)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Default to earth radius in km</span>
|
|
(<span style="color: #00ffff;">unless</span> radius (<span style="color: #00ffff;">setq</span> radius 6378.1))
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">cl-destructuring-bind</span> (left-lat left-long) left-lat-long
|
|
(<span style="color: #00ffff;">cl-destructuring-bind</span> (right-lat right-long) right-lat-long
|
|
(<span style="color: #00ffff;">let</span> ((l1 (<span style="color: #00ffff;">degrees-to-radians</span> left-lat))
|
|
(f1 (<span style="color: #00ffff;">degrees-to-radians</span> left-long))
|
|
(l2 (<span style="color: #00ffff;">degrees-to-radians</span> right-lat))
|
|
(f2 (<span style="color: #00ffff;">degrees-to-radians</span> right-long)) )
|
|
(* 2 radius
|
|
(asin
|
|
(sqrt
|
|
(+ (imalison:sin2 (/ (- f2 f1) 2))
|
|
(* (cos f2) (cos f1) (imalison:sin2 (/ (- l2 l1) 2))) ))))))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-fontsize" class="outline-3">
|
|
<h3 id="fontsize"><span class="section-number-3">5.20</span> Font Size</h3>
|
|
<div class="outline-text-3" id="text-5-20">
|
|
<p>
|
|
This was taken from <a href="http://emacs.stackexchange.com/questions/7583/transiently-adjust-text-size-in-mode-line-and-minibuffer">here</a> but it has diverged significantly from the original.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:default-font-size-pt</span>
|
|
(<span style="color: #00ffff;">cond</span> ((eq system-type 'darwin) 120)
|
|
((eq system-type 'gnu/linux) 105)))
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:huge-font-size</span> 280)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:current-font-size</span> ()
|
|
(plist-get (custom-face-attributes-get 'default nil) <span style="color: #b0c4de;">:height</span>))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-font-size</span> (size)
|
|
(<span style="color: #00ffff;">interactive</span> (list (string-to-number (read-string <span style="color: #ffa07a;">"Enter a font size: "</span>))))
|
|
(set-face-attribute 'default nil <span style="color: #b0c4de;">:height</span> size))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-huge-font-size</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(imalison:set-font-size imalison:huge-font-size))
|
|
|
|
(<span style="color: #00ffff;">cl-defun</span> <span style="color: #87cefa;">imalison:modify-font-size</span> (<span style="color: #98fb98;">&optional</span> (arg 10))
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"p"</span>)
|
|
(imalison:set-font-size (+ (imalison:current-font-size) arg)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:font-size-incr</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(imalison:modify-font-size +10))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:font-size-decr</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(imalison:modify-font-size -10))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:font-size-reset</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(imalison:set-font-size imalison:default-font-size-pt))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-messageresultbuilder" class="outline-3">
|
|
<h3 id="messageresultbuilder"><span class="section-number-3">5.21</span> Message Result Builder</h3>
|
|
<div class="outline-text-3" id="text-5-21">
|
|
<p>
|
|
This macro is useful when writing emacs-lisp. It creates a new interactive command that shows you the result of evaluating a function, with optionally provided arguments.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:message-result-builder</span> (new-function-name function-to-call <span style="color: #98fb98;">&rest</span> args)
|
|
`(<span style="color: #00ffff;">defun</span> ,new-function-name ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(message <span style="color: #ffa07a;">"%s"</span> (apply (<span style="color: #00ffff;">quote</span> ,function-to-call) (list ,@args)))))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
This interactive functions allows the user the select a function to invoke using a freshly minted imalison:message-result-builder
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:message-result-builder-runtime</span> (<span style="color: #00ffff;">function</span> <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">lambda</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(message <span style="color: #ffa07a;">"%s"</span> (apply function-to-call args))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:message-function-result</span> (<span style="color: #00ffff;">function</span>)
|
|
(<span style="color: #00ffff;">interactive</span> (find-function-read))
|
|
(message <span style="color: #ffa07a;">"%s"</span> (funcall function)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-customshellcommandonregion" class="outline-3">
|
|
<h3 id="customshellcommandonregion"><span class="section-number-3">5.22</span> Custom <code>shell-command-on-region</code></h3>
|
|
<div class="outline-text-3" id="text-5-22">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:copy-shell-command-on-region</span> (start end command)
|
|
(<span style="color: #00ffff;">interactive</span> (list (region-beginning) (region-end)
|
|
(read-shell-command <span style="color: #ffa07a;">"Shell command on region: "</span>)))
|
|
(<span style="color: #00ffff;">let</span> ((original-buffer (current-buffer)))
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(<span style="color: #00ffff;">let</span> ((temp-buffer (current-buffer)))
|
|
(<span style="color: #00ffff;">with-current-buffer</span> original-buffer
|
|
(shell-command-on-region start end command temp-buffer))
|
|
(<span style="color: #00ffff;">let</span> ((min (point-min))
|
|
(max (point-max)))
|
|
(kill-ring-save min max)
|
|
(buffer-substring min max))))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:shell-command-on-region-replace</span> (start end command)
|
|
(<span style="color: #00ffff;">interactive</span> (list (region-beginning) (region-end)
|
|
(read-shell-command <span style="color: #ffa07a;">"Shell command on region: "</span>)))
|
|
(shell-command-on-region start end command nil t))
|
|
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:shell-command-on-region
|
|
imalison:copy-shell-command-on-region
|
|
imalison:shell-command-on-region-replace)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-copyyankstringfunctions" class="outline-3">
|
|
<h3 id="copyyankstringfunctions"><span class="section-number-3">5.23</span> Copy/Yank String Functions</h3>
|
|
<div class="outline-text-3" id="text-5-23">
|
|
<p>
|
|
A macro for composing functions together to build an interactive command to copy a string to the kill ring.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:compose-copy-builder-fn</span> (<span style="color: #98fb98;">&rest</span> funcs)
|
|
`(<span style="color: #00ffff;">imalison:make-interactive-fn</span>
|
|
(<span style="color: #00ffff;">imalison:compose-fn</span> kill-new ,@funcs)))
|
|
|
|
(<span style="color: #00ffff;">imalison:named-builder</span> imalison:compose-copy-builder)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-copyportionsofthebufferfilename" class="outline-4">
|
|
<h4 id="copyportionsofthebufferfilename"><span class="section-number-4">5.23.1</span> Copy portions of the buffer file name</h4>
|
|
<div class="outline-text-4" id="text-5-23-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:copy-buffer-file-path-builder</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
`(<span style="color: #00ffff;">imalison:compose-copy-builder</span> ,@args buffer-file-name))
|
|
|
|
(<span style="color: #00ffff;">imalison:copy-buffer-file-path-builder</span> imalison:copy-buffer-file-path-full)
|
|
(<span style="color: #00ffff;">imalison:copy-buffer-file-path-builder</span> imalison:copy-buffer-file-name
|
|
file-name-nondirectory)
|
|
(<span style="color: #00ffff;">imalison:copy-buffer-file-path-builder</span> imalison:copy-buffer-file-path
|
|
car
|
|
projectile-make-relative-to-root
|
|
list)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-copythecurrentbranchusingmagit" class="outline-4">
|
|
<h4 id="copythecurrentbranchusingmagit"><span class="section-number-4">5.23.2</span> Copy the current branch using magit</h4>
|
|
<div class="outline-text-4" id="text-5-23-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:compose-copy-builder</span> imalison:copy-current-git-branch
|
|
magit-get-current-branch)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-copythecurrentbuffername" class="outline-4">
|
|
<h4 id="copythecurrentbuffername"><span class="section-number-4">5.23.3</span> Copy the current buffer name</h4>
|
|
<div class="outline-text-4" id="text-5-23-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:compose-copy-builder</span> imalison:copy-current-buffer-name
|
|
buffer-name)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-namedcompile" class="outline-3">
|
|
<h3 id="namedcompile"><span class="section-number-3">5.24</span> Named Compile</h3>
|
|
<div class="outline-text-3" id="text-5-24">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:named-compile</span> (command)
|
|
(<span style="color: #00ffff;">interactive</span>
|
|
(list
|
|
(<span style="color: #00ffff;">let</span> ((command (eval compile-command)))
|
|
(<span style="color: #00ffff;">if</span> (<span style="color: #00ffff;">or</span> compilation-read-command current-prefix-arg)
|
|
(compilation-read-command command)
|
|
command))))
|
|
(compilation-start command nil (<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(format <span style="color: #ffa07a;">"*compilation %s*"</span> command))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-replaceescapesequences" class="outline-3">
|
|
<h3 id="replaceescapesequences"><span class="section-number-3">5.25</span> Replace Escape Sequences</h3>
|
|
<div class="outline-text-3" id="text-5-25">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:replace-escape-sequences</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">shut-up</span>
|
|
(<span style="color: #00ffff;">let*</span> ((delimited (<span style="color: #00ffff;">and</span> transient-mark-mode mark-active))
|
|
(beg (<span style="color: #00ffff;">when</span> delimited (region-beginning)))
|
|
(end (<span style="color: #00ffff;">when</span> delimited (region-end))))
|
|
(<span style="color: #00ffff;">save-excursion</span>
|
|
(perform-replace <span style="color: #ffa07a;">"\\t"</span> <span style="color: #ffa07a;">" "</span> nil nil delimited nil nil beg end nil))
|
|
(<span style="color: #00ffff;">save-excursion</span>
|
|
(perform-replace <span style="color: #ffa07a;">"\\n"</span> <span style="color: #ffa07a;">"\n"</span> nil nil delimited nil nil beg end nil)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-downloadafileintoabuffer" class="outline-3">
|
|
<h3 id="downloadafileintoabuffer"><span class="section-number-3">5.26</span> Download a File Into a Buffer</h3>
|
|
<div class="outline-text-3" id="text-5-26">
|
|
<p>
|
|
<a id="orgtarget2"></a>
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:download-to-buffer</span> (uri)
|
|
(<span style="color: #00ffff;">interactive</span> (list (read-string <span style="color: #ffa07a;">"Enter uri: "</span>)))
|
|
(request uri
|
|
<span style="color: #b0c4de;">:parser</span> 'buffer-string
|
|
<span style="color: #b0c4de;">:success</span> (<span style="color: #00ffff;">cl-function</span>
|
|
(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&key</span> data <span style="color: #98fb98;">&allow-other-keys</span>)
|
|
(<span style="color: #00ffff;">let</span> ((created-buffer (get-buffer-create uri)))
|
|
(<span style="color: #00ffff;">with-current-buffer</span> created-buffer
|
|
(insert data))
|
|
(switch-to-buffer created-buffer))))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-concatwithsymbols" class="outline-3">
|
|
<h3 id="concatwithsymbols"><span class="section-number-3">5.27</span> Concat With Symbols</h3>
|
|
<div class="outline-text-3" id="text-5-27">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:maybe-symbol-name</span> (arg)
|
|
(<span style="color: #00ffff;">if</span> (symbolp arg)
|
|
(symbol-name arg)
|
|
arg))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:concat-symbols</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(intern (mapconcat 'imalison:maybe-symbol-name args <span style="color: #ffa07a;">""</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-editascriptonpath" class="outline-3">
|
|
<h3 id="editascriptonpath"><span class="section-number-3">5.28</span> Edit a script on PATH</h3>
|
|
<div class="outline-text-3" id="text-5-28">
|
|
<p>
|
|
<a id="orgtarget3"></a> Note that you'll need to make sure that emacs properly inherits
|
|
the path variable for this work. Check out my <a href="#execpathfromshell">exec-path-from-shell</a> config for
|
|
details.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-executables-at-path</span> (filepath)
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">and</span> (file-exists-p filepath) (f-directory? filepath))
|
|
(<span style="color: #00ffff;">--filter</span> (<span style="color: #00ffff;">let</span> ((fullpath (imalison:join-paths filepath <span style="color: #eedd82;">it</span>)))
|
|
(<span style="color: #00ffff;">and</span> (file-executable-p fullpath)
|
|
(not (f-directory? fullpath))))
|
|
(directory-files filepath))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-executables-on-path</span> ()
|
|
(mapcan 'imalison:get-executables-at-path (eshell-parse-colon-path (getenv <span style="color: #ffa07a;">"PATH"</span>))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:edit-script</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(find-file (executable-find
|
|
(ido-completing-read <span style="color: #ffa07a;">"Select a script to edit: "</span>
|
|
(imalison:get-executables-on-path)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-togglelexicalbindinginthecurrentbuffer" class="outline-3">
|
|
<h3 id="togglelexicalbindinginthecurrentbuffer"><span class="section-number-3">5.29</span> Toggle lexical binding in the current buffer</h3>
|
|
<div class="outline-text-3" id="text-5-29">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:toggle-lexical-binding</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((new-binding (not lexical-binding)))
|
|
(message <span style="color: #ffa07a;">"Setting lexical-binding to: %s"</span> new-binding)
|
|
(<span style="color: #00ffff;">setq</span> lexical-binding new-binding)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-synckillringwithcopyq" class="outline-3">
|
|
<h3 id="synckillringwithcopyq"><span class="section-number-3">5.30</span> Sync kill ring with copyq</h3>
|
|
<div class="outline-text-3" id="text-5-30">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:copyq-get</span> (i)
|
|
(imalison:shell-command-to-string (format <span style="color: #ffa07a;">"copyq eval read(%s)"</span> i)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:copyq-sync</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((missing-items (<span style="color: #00ffff;">cl-loop</span> for i from 0 to (string-to-number
|
|
(imalison:shell-command-to-string <span style="color: #ffa07a;">"copyq eval size()"</span>))
|
|
for item = (imalison:copyq-get i)
|
|
when (not (member item kill-ring))
|
|
collect item)))
|
|
(<span style="color: #00ffff;">setq</span> kill-ring (nconc kill-ring missing-items))))
|
|
|
|
(<span style="color: #00ffff;">when</span> (executable-find <span style="color: #ffa07a;">"copyq"</span>)
|
|
(run-with-idle-timer 10 nil 'imalison:copyq-sync))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmzshhistory" class="outline-3">
|
|
<h3 id="helmzshhistory"><span class="section-number-3">5.31</span> helm-zsh-history</h3>
|
|
<div class="outline-text-3" id="text-5-31">
|
|
<p>
|
|
This was stolen from <a href="https://github.com/jwiegley/dot-emacs">https://github.com/jwiegley/dot-emacs</a>
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">helm-c-source-zsh-history</span>
|
|
'((name . <span style="color: #ffa07a;">"Zsh History"</span>)
|
|
(candidates . helm-c-zsh-history-set-candidates)
|
|
(action . ((<span style="color: #ffa07a;">"Execute Command"</span> . helm-c-zsh-history-action)))
|
|
(volatile)
|
|
(requires-pattern . 3)
|
|
(delayed)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">helm-c-zsh-history-set-candidates</span> (<span style="color: #98fb98;">&optional</span> request-prefix)
|
|
(<span style="color: #00ffff;">let</span> ((pattern (replace-regexp-in-string
|
|
<span style="color: #ffa07a;">" "</span> <span style="color: #ffa07a;">".*"</span>
|
|
(<span style="color: #00ffff;">or</span> (<span style="color: #00ffff;">and</span> request-prefix
|
|
(concat request-prefix
|
|
<span style="color: #ffa07a;">" "</span> helm-pattern))
|
|
helm-pattern))))
|
|
(<span style="color: #00ffff;">with-current-buffer</span> (find-file-noselect <span style="color: #ffa07a;">"~/.zsh_history"</span> t t)
|
|
(auto-revert-mode -1)
|
|
(goto-char (point-max))
|
|
(<span style="color: #00ffff;">loop</span> for pos = (re-search-backward pattern nil t)
|
|
while pos
|
|
collect (replace-regexp-in-string
|
|
<span style="color: #ffa07a;">"\\`:.+?;"</span> <span style="color: #ffa07a;">""</span>
|
|
(buffer-substring (line-beginning-position)
|
|
(line-end-position)))))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">helm-c-zsh-history-action</span> (candidate)
|
|
(imalison:named-compile candidate))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">helm-command-from-zsh</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">helm</span>)
|
|
(helm-other-buffer 'helm-c-source-zsh-history <span style="color: #ffa07a;">"*helm zsh history*"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-useprojectileasdefaultdirectory" class="outline-4">
|
|
<h4 id="useprojectileasdefaultdirectory"><span class="section-number-4">5.31.1</span> Use projectile as default directory</h4>
|
|
<div class="outline-text-4" id="text-5-31-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:let-around</span> imalison:projectile-helm-command-from-zsh helm-command-from-zsh
|
|
(default-directory (projectile-project-root)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-other" class="outline-3">
|
|
<h3 id="other"><span class="section-number-3">5.32</span> Other</h3>
|
|
<div class="outline-text-3" id="text-5-32">
|
|
<p>
|
|
The stuff in this section is pretty crusty. I don't think its used anywhere, but
|
|
I keep it around just in case I need it.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">random-choice</span> (choices)
|
|
(nth (random (length choices)) choices))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">display-prefix</span> (arg)
|
|
<span style="color: #ffa07a;">"Display the value of the raw prefix arg."</span>
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"p"</span>)
|
|
(message <span style="color: #ffa07a;">"%s"</span> arg))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:uuid</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(s-replace <span style="color: #ffa07a;">"\n"</span> <span style="color: #ffa07a;">""</span> (shell-command-to-string <span style="color: #ffa07a;">"uuid"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:disable-linum-mode</span> ()
|
|
(linum-mode 0))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:disable-smartparens-mode</span> ()
|
|
(smartparens-mode 0))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:insert-uuid</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(insert (imalison:uuid)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:compare-int-list</span> (a b)
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">and</span> a b)
|
|
(<span style="color: #00ffff;">cond</span> ((> (car a) (car b)) 1)
|
|
((< (car a) (car b)) -1)
|
|
(t (imalison:compare-int-list (cdr a) (cdr b))))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">get-date-created-from-agenda-entry</span> (agenda-entry)
|
|
(org-time-string-to-time
|
|
(org-entry-get (get-text-property 1 'org-marker agenda-entry) <span style="color: #ffa07a;">"CREATED"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">defvar-setq</span> (name value)
|
|
`(<span style="color: #00ffff;">if</span> (boundp (<span style="color: #00ffff;">quote</span> ,name))
|
|
(<span style="color: #00ffff;">setq</span> ,name ,value)
|
|
(<span style="color: #00ffff;">defvar</span> ,name ,value)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">eval-region-or-last-sexp</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">if</span> (region-active-p) (call-interactively 'eval-region)
|
|
(call-interactively 'eval-last-sexp)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">undo-redo</span> (<span style="color: #98fb98;">&optional</span> arg)
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"P"</span>)
|
|
(<span style="color: #00ffff;">if</span> arg (undo-tree-redo) (undo-tree-undo)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">up-list-region</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(up-list) (set-mark-command nil) (backward-sexp))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">up-list-back</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(up-list) (backward-sexp))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">frame-exists</span> ()
|
|
(cl-find-if
|
|
(<span style="color: #00ffff;">lambda</span> (frame)
|
|
(assoc 'display (frame-parameters frame))) <span style="color: #ffc0cb; font-weight: bold;">(frame-list)))</span>
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">make-frame-if-none-exists</span> ()
|
|
(<span style="color: #00ffff;">let*</span> ((existing-frame (frame-exists)))
|
|
(<span style="color: #00ffff;">if</span> existing-frame
|
|
existing-frame
|
|
(make-frame-on-display (getenv <span style="color: #ffa07a;">"DISPLAY"</span>)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">make-frame-if-none-exists-and-focus</span> ()
|
|
(make-frame-visible (select-frame (make-frame-if-none-exists))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">notification-center</span> (title message)
|
|
(<span style="color: #00ffff;">cl-flet</span> ((encfn (s) (encode-coding-string s (keyboard-coding-system))))
|
|
(shell-command
|
|
(format <span style="color: #ffa07a;">"osascript -e 'display notification \"%s\" with title \"%s\"'"</span>
|
|
(encfn message) (encfn title)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">growl-notify</span> (title message)
|
|
(shell-command (format <span style="color: #ffa07a;">"grownotify -t %s -m %s"</span> title message)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">notify-send</span> (title message)
|
|
(shell-command (format <span style="color: #ffa07a;">"notify-send -u critical %s %s"</span> title message)))
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">notify-function</span>
|
|
(<span style="color: #00ffff;">cond</span> ((eq system-type 'darwin) 'notification-center)
|
|
((eq system-type 'gnu/linux) 'notify-send)))
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:mark-ring
|
|
helm-mark-ring
|
|
helm-global-mark-ring)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-keyboardmacros" class="outline-3">
|
|
<h3 id="keyboardmacros"><span class="section-number-3">5.33</span> Keyboard Macros</h3>
|
|
<div class="outline-text-3" id="text-5-33">
|
|
</div><div id="outline-container-foreditingliterateconfig" class="outline-4">
|
|
<h4 id="foreditingliterateconfig"><span class="section-number-4">5.33.1</span> For editing literate config</h4>
|
|
<div class="outline-text-4" id="text-5-33-1">
|
|
</div><div id="outline-container-extractcurrentsexptosrcblock" class="outline-5">
|
|
<h5 id="extractcurrentsexptosrcblock"><span class="section-number-5">5.33.1.1</span> extract-current-sexp-to-src-block</h5>
|
|
<div class="outline-text-5" id="text-5-33-1-1">
|
|
<p>
|
|
This keyboard macro extracts the current sexp to an emacs-lisp source block of its own
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(fset 'extract-current-sexp-to-src-block
|
|
[?\C-a return ?\C-p ?# ?+ ?E ?N ?D ?_ ?S ?R ?C return ?# ?+ ?B ?E ?G ?I ?N ?_ ?S ?R ?C ? ?e ?m ?a ?c ?s ?- ?l ?i ?s ?p ?\C-a ?\C-p ?\C- ?\C-n ?\C-e ?\M-w ?\C-n ?\C-a ?\C-\M-f return ?\C-y])
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-namesourceblockforusepackagename" class="outline-5">
|
|
<h5 id="namesourceblockforusepackagename"><span class="section-number-5">5.33.1.2</span> name-source-block-for-use-package-name</h5>
|
|
<div class="outline-text-5" id="text-5-33-1-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(fset 'name-source-block-for-use-package-name
|
|
[?\C-c ?\' ?\M-< ?\C-s ?u ?s ?e ?- ?p ?a ?c ?k return ?\C-\M-f ?\C-f ?\C- ?\C-\M-f ?\M-w ?\C-c ?\' ?\C-r ?B ?E ?G ?I ?N return ?\C-a ?\C-p ?\C-e return ?* ? ?\C-y])
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-extractandnameusepackageblock" class="outline-5">
|
|
<h5 id="extractandnameusepackageblock"><span class="section-number-5">5.33.1.3</span> extract-and-name-use-package-block</h5>
|
|
<div class="outline-text-5" id="text-5-33-1-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(fset 'extract-and-name-use-package-block
|
|
[?\C-a return ?\C-p ?# ?+ ?E ?N ?D ?_ ?S ?R ?C return ?# ?+ ?B ?E ?G ?I ?N ?_ ?S ?R ?C ? ?e ?m ?a ?c ?s ?- ?l ?i ?s ?p ?\C-a ?\C-p ?\C- ?\C-n ?\C-e ?\M-w ?\C-n ?\C-a ?\C-\M-f return ?\C-y ?\C-p ?\C-p ?\C-c ?\' ?\M-< ?\C-s ?u ?s ?e ?- ?p ?a ?c ?k return ?\C-\M-f ?\C-f ?\C- ?\C-\M-f ?\M-w ?\C-c ?\' ?\C-r ?B ?E ?G ?I ?N return ?\C-a ?\C-p ?\C-e return ?* ? ?\C-y])
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-general" class="outline-2">
|
|
<h2 id="general"><span class="section-number-2">6</span> General</h2>
|
|
<div class="outline-text-2" id="text-6">
|
|
</div><div id="outline-container-userinfo" class="outline-3">
|
|
<h3 id="userinfo"><span class="section-number-3">6.1</span> User Info</h3>
|
|
<div class="outline-text-3" id="text-6-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> user-full-name
|
|
(replace-regexp-in-string <span style="color: #ffa07a;">"\n$"</span> <span style="color: #ffa07a;">""</span> (shell-command-to-string
|
|
<span style="color: #ffa07a;">"git config --get user.name"</span>)))
|
|
(<span style="color: #00ffff;">setq</span> user-mail-address
|
|
(replace-regexp-in-string <span style="color: #ffa07a;">"\n$"</span> <span style="color: #ffa07a;">""</span> (shell-command-to-string
|
|
<span style="color: #ffa07a;">"git config --get user.email"</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sanedefaults" class="outline-3">
|
|
<h3 id="sanedefaults"><span class="section-number-3">6.2</span> Sane Defaults</h3>
|
|
<div class="outline-text-3" id="text-6-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span class="linenr">1: </span>(global-auto-revert-mode)
|
|
<span class="linenr">2: </span>(show-paren-mode 1)
|
|
<span class="linenr">3: </span>(<span style="color: #00ffff;">setq</span> reb-re-syntax 'string)
|
|
<span id="coderef-ad-redefinition-action" class="coderef-off"><span class="linenr">4: </span>(<span style="color: #00ffff;">setq</span> ad-redefinition-action 'accept)</span>
|
|
<span class="linenr">5: </span>(<span style="color: #00ffff;">setq-default</span> find-file-visit-truename t)
|
|
<span class="linenr">6: </span>(<span style="color: #00ffff;">setq</span> large-file-warning-threshold (* 25 1024 1024))
|
|
<span class="linenr">7: </span>(<span style="color: #00ffff;">setq</span> line-move-visual t)
|
|
<span class="linenr">8: </span>(<span style="color: #00ffff;">setq</span> require-final-newline t)
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
<a href="#coderef-ad-redefinition-action"class="coderef" onmouseover="CodeHighlightOn(this, 'coderef-ad-redefinition-action');" onmouseout="CodeHighlightOff(this, 'coderef-ad-redefinition-action');">This</a> is set because <a href="#coderef-y-or-n-p-only"class="coderef" onmouseover="CodeHighlightOn(this, 'coderef-y-or-n-p-only');" onmouseout="CodeHighlightOff(this, 'coderef-y-or-n-p-only');">this alias</a> causes annoying messaging at startup.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-linenumbers" class="outline-3">
|
|
<h3 id="linenumbers"><span class="section-number-3">6.3</span> Line Numbers</h3>
|
|
<div class="outline-text-3" id="text-6-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(line-number-mode t)
|
|
(column-number-mode t)
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
Linum can be really slow on large files so it does not make sense to
|
|
have it on by default. Its probably safe to turn it on when in a
|
|
programming mode.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(global-linum-mode -1)
|
|
(add-hook 'prog-mode-hook (<span style="color: #00ffff;">lambda</span> () (linum-mode t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-backups" class="outline-3">
|
|
<h3 id="backups"><span class="section-number-3">6.4</span> Backups</h3>
|
|
<div class="outline-text-3" id="text-6-4">
|
|
</div><div id="outline-container-putthemallinonedirectory" class="outline-4">
|
|
<h4 id="putthemallinonedirectory"><span class="section-number-4">6.4.1</span> Put them all in one directory</h4>
|
|
<div class="outline-text-4" id="text-6-4-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defconst</span> <span style="color: #eedd82;">emacs-tmp-dir</span>
|
|
(format <span style="color: #ffa07a;">"%s/%s%s/"</span> temporary-file-directory <span style="color: #ffa07a;">"emacs"</span> (user-uid)))
|
|
(<span style="color: #00ffff;">setq</span> backup-directory-alist `((<span style="color: #ffa07a;">".*"</span> . ,emacs-tmp-dir)))
|
|
(<span style="color: #00ffff;">setq</span> auto-save-file-name-transforms `((<span style="color: #ffa07a;">".*"</span> ,emacs-tmp-dir t)))
|
|
(<span style="color: #00ffff;">setq</span> auto-save-list-file-prefix emacs-tmp-dir)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-completelydisablebackups" class="outline-4">
|
|
<h4 id="completelydisablebackups"><span class="section-number-4">6.4.2</span> Completely disable backups</h4>
|
|
<div class="outline-text-4" id="text-6-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> backup-inhibited t)
|
|
(<span style="color: #00ffff;">setq</span> make-backup-files nil)
|
|
(<span style="color: #00ffff;">setq</span> auto-save-default nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-prompts" class="outline-3">
|
|
<h3 id="prompts"><span class="section-number-3">6.5</span> Prompts</h3>
|
|
<div class="outline-text-3" id="text-6-5">
|
|
</div><div id="outline-container-nopopupframes" class="outline-4">
|
|
<h4 id="nopopupframes"><span class="section-number-4">6.5.1</span> No popup frames</h4>
|
|
<div class="outline-text-4" id="text-6-5-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> ns-pop-up-frames nil)
|
|
(<span style="color: #00ffff;">setq</span> pop-up-frames nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-booleanyesorno" class="outline-4">
|
|
<h4 id="booleanyesorno"><span class="section-number-4">6.5.2</span> boolean (yes-or-no)</h4>
|
|
<div class="outline-text-4" id="text-6-5-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span class="linenr"> 1: </span>(<span style="color: #00ffff;">defadvice</span> <span style="color: #87cefa;">yes-or-no-p</span> (around prevent-dialog activate)
|
|
<span class="linenr"> 2: </span> <span style="color: #ffa07a;">"Prevent yes-or-no-p from activating a dialog"</span>
|
|
<span class="linenr"> 3: </span> (<span style="color: #00ffff;">let</span> ((use-dialog-box nil))
|
|
<span class="linenr"> 4: </span> ad-do-it))
|
|
<span class="linenr"> 5: </span>
|
|
<span class="linenr"> 6: </span>(<span style="color: #00ffff;">defadvice</span> <span style="color: #87cefa;">y-or-n-p</span> (around prevent-dialog-yorn activate)
|
|
<span class="linenr"> 7: </span> <span style="color: #ffa07a;">"Prevent y-or-n-p from activating a dialog"</span>
|
|
<span class="linenr"> 8: </span> (<span style="color: #00ffff;">let</span> ((use-dialog-box nil))
|
|
<span class="linenr"> 9: </span> ad-do-it))
|
|
<span class="linenr">10: </span>
|
|
<span id="coderef-y-or-n-p-only" class="coderef-off"><span class="linenr">11: </span>(<span style="color: #00ffff;">defalias</span> '<span style="color: #87cefa;">yes-or-no-p</span> 'y-or-n-p)</span>
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-nodialogboxes" class="outline-4">
|
|
<h4 id="nodialogboxes"><span class="section-number-4">6.5.3</span> No dialog boxes</h4>
|
|
<div class="outline-text-4" id="text-6-5-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> use-dialog-box nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-splitting" class="outline-3">
|
|
<h3 id="splitting"><span class="section-number-3">6.6</span> Splitting</h3>
|
|
<div class="outline-text-3" id="text-6-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">split-horizontally-for-temp-buffers</span> () (split-window-horizontally))
|
|
(add-hook 'temp-buffer-setup-hook 'split-horizontally-for-temp-buffers)
|
|
(<span style="color: #00ffff;">setq</span> split-height-threshold nil)
|
|
(<span style="color: #00ffff;">setq</span> split-width-threshold 160)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-bufferdisplay" class="outline-3">
|
|
<h3 id="bufferdisplay"><span class="section-number-3">6.7</span> Buffer Display</h3>
|
|
<div class="outline-text-3" id="text-6-7">
|
|
</div><div id="outline-container-ewmctrl" class="outline-4">
|
|
<h4 id="ewmctrl"><span class="section-number-4">6.7.1</span> ewmctrl</h4>
|
|
<div class="outline-text-4" id="text-6-7-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ewmctrl</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-handlexrefsannoyingdedicatedwindowgarbage" class="outline-4">
|
|
<h4 id="handlexrefsannoyingdedicatedwindowgarbage"><span class="section-number-4">6.7.2</span> Handle xrefs annoying dedicated window garbage</h4>
|
|
<div class="outline-text-4" id="text-6-7-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">xref</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">xref--show-pos-in-buf</span> (pos buf select)
|
|
(<span style="color: #00ffff;">let</span> ((xref-buf (current-buffer))
|
|
win)
|
|
(<span style="color: #00ffff;">with-selected-window</span>
|
|
(display-buffer buf)
|
|
(xref--goto-char pos)
|
|
(run-hooks 'xref-after-jump-hook)
|
|
(<span style="color: #00ffff;">let</span> ((buf (current-buffer)))
|
|
(<span style="color: #00ffff;">setq</span> win (selected-window))
|
|
(<span style="color: #00ffff;">with-current-buffer</span> xref-buf
|
|
(<span style="color: #00ffff;">setq-local</span> other-window-scroll-buffer buf))))
|
|
(<span style="color: #00ffff;">when</span> select
|
|
(select-window win)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-displaybufferalist" class="outline-4">
|
|
<h4 id="displaybufferalist"><span class="section-number-4">6.7.3</span> display-buffer-alist</h4>
|
|
<div class="outline-text-4" id="text-6-7-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:use-frames-only</span>)
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:use-frames-only</span> nil)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:use-frames-only</span> ()
|
|
(<span style="color: #00ffff;">or</span> imalison:use-frames-only
|
|
(member (getenv <span style="color: #ffa07a;">"XDG_CURRENT_DESKTOP"</span>) '(<span style="color: #ffa07a;">"XMonad"</span>))))
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:use-new-frame-or-window</span> nil)
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:use-new-frame-or-window-next-command</span> nil)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:other-window-or-frame-next-command</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">setq</span> imalison:use-new-frame-or-window-next-command
|
|
(not imalison:use-new-frame-or-window-next-command))
|
|
(message <span style="color: #ffa07a;">"Using other frame: %s"</span>
|
|
imalison:use-new-frame-or-window-next-command))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:use-other-frame-or-window</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">or</span> imalison:use-new-frame-or-window-next-command
|
|
imalison:use-new-frame-or-window))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:display-buffer</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">if</span> (imalison:use-other-frame-or-window args)
|
|
(apply 'imalison:display-buffer-other-frame-or-window args)
|
|
(apply 'display-buffer-same-window args)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:display-buffer-other-frame-or-window</span> (buffer args)
|
|
(<span style="color: #00ffff;">if</span> (imalison:use-frames-only)
|
|
(apply 'display-buffer-use-some-frame buffer (append args (inhibit-same-window t)))
|
|
(apply 'display-buffer-reuse-window buffer args)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:split-window-right</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">if</span> (imalison:use-frames-only)
|
|
(make-frame)
|
|
(split-window-right)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:other-window</span> (count)
|
|
(<span style="color: #00ffff;">interactive</span>
|
|
(list 1))
|
|
(other-window count 'visible)
|
|
(select-frame-set-input-focus (selected-frame)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-use-new-frame-to-default</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">setq</span> imalison:use-new-frame-or-window-next-command nil))
|
|
|
|
(advice-add 'display-buffer <span style="color: #b0c4de;">:after</span> 'imalison:set-use-new-frame-to-default)
|
|
|
|
(<span style="color: #00ffff;">when</span> imalison:use-frames-only
|
|
(<span style="color: #00ffff;">setq</span> pop-up-frames 'graphic-only)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-c s"</span> 'imalison:other-window-or-frame-next-command)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x o"</span> 'imalison:other-window)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x 3"</span> 'imalison:split-window-right)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x O"</span> (<span style="color: #00ffff;">lambda</span> () (<span style="color: #00ffff;">interactive</span>) (imalison:other-window -1)))
|
|
(<span style="color: #00ffff;">setq</span> display-buffer-alist
|
|
'((<span style="color: #ffa07a;">".*popup\*"</span> . (display-buffer-pop-up-window))
|
|
(<span style="color: #ffa07a;">"\\*Flycheck errors\\*"</span> . ((display-buffer-use-some-frame) ((inhibit-same-window t))))
|
|
(<span style="color: #ffa07a;">".*magit-diff.*"</span> . ((display-buffer-pop-up-window)
|
|
((reusable-frames . 0)
|
|
(inhibit-switch-frame . t)
|
|
(inhibit-same-window . t))))
|
|
(imalison:use-other-frame-or-window
|
|
.
|
|
((display-buffer-use-some-frame display-buffer-pop-up-frame)
|
|
((inhibit-same-window . t)
|
|
(reusable-frames . t))))
|
|
(<span style="color: #ffa07a;">".*"</span> . ((display-buffer-same-window
|
|
display-buffer-use-some-frame
|
|
display-buffer-pop-up-frame)
|
|
((reusable-frames . t)))))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-fillsetup" class="outline-3">
|
|
<h3 id="fillsetup"><span class="section-number-3">6.8</span> Fill Setup</h3>
|
|
<div class="outline-text-3" id="text-6-8">
|
|
<p>
|
|
Get rid of nags about requiring setences to end with two spaces.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> sentence-end-double-space nil)
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
Set the default fill-column
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq-default</span> fill-column 80)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-showtrailingwhitespace" class="outline-3">
|
|
<h3 id="showtrailingwhitespace"><span class="section-number-3">6.9</span> Show Trailing Whitespace</h3>
|
|
<div class="outline-text-3" id="text-6-9">
|
|
<p>
|
|
Trailing whitespace is really messy and annoying, which makes this a must-have
|
|
in my opinion. It's kind of crazy how often you will encounter serious codebases
|
|
with random whitespace ALL over the place.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq-default</span> show-trailing-whitespace t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-disable" class="outline-4">
|
|
<h4 id="disable"><span class="section-number-4">6.9.1</span> Disable</h4>
|
|
<div class="outline-text-4" id="text-6-9-1">
|
|
<p>
|
|
Unfortunately, this setting can get annoying in a lot of modes, which is why I
|
|
use this hook to disable it in those modes
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:disable-show-trailing-whitespace</span> ()
|
|
(<span style="color: #00ffff;">setq</span> show-trailing-whitespace nil))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-encoding" class="outline-3">
|
|
<h3 id="encoding"><span class="section-number-3">6.10</span> Encoding</h3>
|
|
<div class="outline-text-3" id="text-6-10">
|
|
<p>
|
|
UTF-8 everywhere
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-coding-systems</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(set-language-environment <span style="color: #ffa07a;">"Latin-1"</span>)
|
|
(set-default-coding-systems 'utf-8)
|
|
(<span style="color: #00ffff;">unless</span> (eq system-type 'windows-nt)
|
|
(set-selection-coding-system 'utf-8))
|
|
(set-terminal-coding-system 'utf-8)
|
|
(<span style="color: #00ffff;">setq</span> locale-coding-system 'utf-8)
|
|
(prefer-coding-system 'utf-8))
|
|
(imalison:set-coding-systems)
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
Disable CJK coding/encoding (Chinese/Japanese/Korean characters)
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> utf-translate-cjk-mode nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-visiblebell" class="outline-3">
|
|
<h3 id="visiblebell"><span class="section-number-3">6.11</span> Visible Bell</h3>
|
|
<div class="outline-text-3" id="text-6-11">
|
|
<p>
|
|
This is set to true to disable the annoying audible bell that plays
|
|
whenever there is an error.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> visible-bell t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-configurevc" class="outline-3">
|
|
<h3 id="configurevc"><span class="section-number-3">6.12</span> Configure <code>vc</code></h3>
|
|
<div class="outline-text-3" id="text-6-12">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> vc-follow-symlinks t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-timeinmodeline" class="outline-3">
|
|
<h3 id="timeinmodeline"><span class="section-number-3">6.13</span> Time in Mode Line</h3>
|
|
<div class="outline-text-3" id="text-6-13">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> display-time-default-load-average nil)
|
|
(<span style="color: #00ffff;">setq</span> display-time-interval 1)
|
|
(<span style="color: #00ffff;">setq</span> display-time-format <span style="color: #ffa07a;">"%a|%m-%d|%r"</span>)
|
|
(display-time-mode 1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-killring" class="outline-3">
|
|
<h3 id="killring"><span class="section-number-3">6.14</span> Kill Ring</h3>
|
|
<div class="outline-text-3" id="text-6-14">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> kill-ring-max 1000)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-subword" class="outline-3">
|
|
<h3 id="subword"><span class="section-number-3">6.15</span> Subword</h3>
|
|
<div class="outline-text-3" id="text-6-15">
|
|
<p>
|
|
This makes <code>forward-word</code> and <code>backward-word</code> understand snake and camel case.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> c-subword-mode t)
|
|
(global-subword-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-scratchbuffer" class="outline-3">
|
|
<h3 id="scratchbuffer"><span class="section-number-3">6.16</span> Scratch Buffer</h3>
|
|
<div class="outline-text-3" id="text-6-16">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> initial-scratch-message <span style="color: #ffa07a;">""</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-dontpromptaboutlocalvariables" class="outline-3">
|
|
<h3 id="dontpromptaboutlocalvariables"><span class="section-number-3">6.17</span> Don't prompt about local variables</h3>
|
|
<div class="outline-text-3" id="text-6-17">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">risky-local-variable-p</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-proced" class="outline-3">
|
|
<h3 id="proced"><span class="section-number-3">6.18</span> proced</h3>
|
|
<div class="outline-text-3" id="text-6-18">
|
|
<p>
|
|
proced is an top like utility that runs inside of emacs. The following sets auto updating automatically and makes the update interval faster.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">proced</span>)
|
|
(<span style="color: #00ffff;">setq</span> proced-auto-update-interval 1)
|
|
(add-hook 'proced-mode-hook (<span style="color: #00ffff;">lambda</span> () (proced-toggle-auto-update +1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-setdefaultbrowser" class="outline-3">
|
|
<h3 id="setdefaultbrowser"><span class="section-number-3">6.19</span> Set default browser</h3>
|
|
<div class="outline-text-3" id="text-6-19">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">when</span> (equal system-type 'gnu/linux)
|
|
(<span style="color: #00ffff;">setq</span> browse-url-browser-function 'browse-url-generic
|
|
browse-url-generic-program <span style="color: #ffa07a;">"google-chrome-stable"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-setepaprogram" class="outline-3">
|
|
<h3 id="setepaprogram"><span class="section-number-3">6.20</span> Set epa program</h3>
|
|
<div class="outline-text-3" id="text-6-20">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> epg-gpg-program <span style="color: #ffa07a;">"gpg"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-makefilesexecutable" class="outline-3">
|
|
<h3 id="makefilesexecutable"><span class="section-number-3">6.21</span> Make files executable</h3>
|
|
<div class="outline-text-3" id="text-6-21">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-misc" class="outline-3">
|
|
<h3 id="misc"><span class="section-number-3">6.22</span> Misc</h3>
|
|
<div class="outline-text-3" id="text-6-22">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">iedit-toggle-key-default</span> nil)
|
|
(put 'set-goal-column 'disabled nil)
|
|
(auto-fill-mode -1)
|
|
(<span style="color: #00ffff;">setq</span> indent-tabs-mode nil)
|
|
|
|
(<span style="color: #00ffff;">setq</span> confirm-nonexistent-file-or-buffer nil)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">No prompt for killing a buffer with processes attached.</span>
|
|
(<span style="color: #00ffff;">setq</span> kill-buffer-query-functions
|
|
(remq 'process-kill-buffer-query-function
|
|
kill-buffer-query-functions))
|
|
|
|
(<span style="color: #00ffff;">setq</span> inhibit-startup-message t
|
|
inhibit-startup-echo-area-message t)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This makes it so that emacs --daemon puts its files in ~/.emacs.d/server</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(setq server-use-tcp t)</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Make buffer names unique.</span>
|
|
(<span style="color: #00ffff;">setq</span> uniquify-buffer-name-style 'forward)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Don't disable commands...</span>
|
|
(<span style="color: #00ffff;">setq</span> disabled-command-function nil)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Make forward word understand camel and snake case.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Preserve pastes from OS when saving a new item to the kill</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">ring. Why wouldn't this be enabled by default?</span>
|
|
|
|
(<span style="color: #00ffff;">setq-default</span> cursor-type 'box)
|
|
(<span style="color: #00ffff;">setq-default</span> cursor-in-non-selected-windows 'bar)
|
|
|
|
(<span style="color: #00ffff;">when</span> nil <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Causing too many annoying issues</span>
|
|
(add-hook 'after-init-hook '(lambda () (<span style="color: #00ffff;">setq</span> debug-on-error t))))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Make mouse scrolling less jumpy.</span>
|
|
(<span style="color: #00ffff;">setq</span> mouse-wheel-scroll-amount '(1 ((shift) . 1)))
|
|
|
|
(<span style="color: #00ffff;">setq</span> ediff-split-window-function 'split-window-horizontally)
|
|
(<span style="color: #00ffff;">setq</span> ediff-window-setup-function 'ediff-setup-windows-plain)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Disable this per major mode or maybe using file size if it causes</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">performance issues?</span>
|
|
(<span style="color: #00ffff;">setq</span> imenu-auto-rescan t)
|
|
(<span style="color: #00ffff;">setq</span> imenu-max-item-length 300)
|
|
|
|
(put 'narrow-to-region 'disabled nil)
|
|
(put 'narrow-to-page 'disabled nil)
|
|
|
|
(<span style="color: #00ffff;">setq</span> echo-keystrokes 0.25)
|
|
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">text mode stuff:</span>
|
|
(remove-hook 'text-mode-hook #'turn-on-auto-fill)
|
|
(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
|
|
(<span style="color: #00ffff;">setq</span> sentence-end-double-space nil)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">y and n instead of yes and no</span>
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq-default</span> c-basic-offset 4
|
|
tab-width 4
|
|
indent-tabs-mode t)
|
|
|
|
(add-hook 'prog-mode-hook (<span style="color: #00ffff;">lambda</span> () (auto-fill-mode -1)))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(add-hook 'prog-mode-hook 'flyspell-prog-mode)</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(add-hook 'prog-mode-hook (lambda () (highlight-lines-matching-regexp</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">".\\{81\\}" 'hi-blue)))</span>
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-paradox" class="outline-3">
|
|
<h3 id="paradox"><span class="section-number-3">6.23</span> paradox</h3>
|
|
<div class="outline-text-3" id="text-6-23">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">paradox</span>
|
|
<span style="color: #b0c4de;">:defer</span> 10
|
|
<span style="color: #b0c4de;">:commands</span> (paradox-upgrade-packages paradox-list-packages)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">gh</span>)
|
|
(<span style="color: #00ffff;">setq</span> paradox-execute-asynchronously t
|
|
paradox-github-token (gh-auth-get-oauth-token))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-diminish" class="outline-3">
|
|
<h3 id="diminish"><span class="section-number-3">6.24</span> diminish</h3>
|
|
<div class="outline-text-3" id="text-6-24">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">diminish</span>
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:packages-to-diminish</span>
|
|
'(auto-revert-mode smartparens-mode eldoc-mode tern-mode js2-refactor-mode))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">cl-loop</span> for package in imalison:packages-to-diminish
|
|
do (diminish package))
|
|
(eval-after-load 'subword '(diminish 'subword-mode))
|
|
(eval-after-load 'simple '(diminish 'visual-line-mode))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-editserver" class="outline-3">
|
|
<h3 id="editserver"><span class="section-number-3">6.25</span> edit-server</h3>
|
|
<div class="outline-text-3" id="text-6-25">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">edit-server</span>
|
|
<span style="color: #b0c4de;">:commands</span> edit-server-start
|
|
<span style="color: #b0c4de;">:defer</span> 1
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(edit-server-start)
|
|
(<span style="color: #00ffff;">setq</span> edit-server-new-frame nil)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-loaddir" class="outline-3">
|
|
<h3 id="loaddir"><span class="section-number-3">6.26</span> load-dir</h3>
|
|
<div class="outline-text-3" id="text-6-26">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">load-dir</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> load-dir-debug nil)
|
|
(add-to-list 'load-dirs <span style="color: #ffa07a;">"~/.emacs.d/load.d"</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">site-lisp</span> <span style="color: #ffa07a;">"/usr/share/emacs24/site-lisp/"</span>)
|
|
(<span style="color: #00ffff;">when</span> (file-exists-p site-lisp) (add-to-list 'load-dirs site-lisp))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-server" class="outline-3">
|
|
<h3 id="server"><span class="section-number-3">6.27</span> server</h3>
|
|
<div class="outline-text-3" id="text-6-27">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">server</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">unless</span> (server-running-p) (server-start))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-listenvironment" class="outline-3">
|
|
<h3 id="listenvironment"><span class="section-number-3">6.28</span> list-environment</h3>
|
|
<div class="outline-text-3" id="text-6-28">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">list-environment</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-bughunter" class="outline-3">
|
|
<h3 id="bughunter"><span class="section-number-3">6.29</span> bug-hunter</h3>
|
|
<div class="outline-text-3" id="text-6-29">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">bug-hunter</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-shackle" class="outline-3">
|
|
<h3 id="shackle"><span class="section-number-3">6.30</span> shackle</h3>
|
|
<div class="outline-text-3" id="text-6-30">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">shackle</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(diminish 'shackle-mode)
|
|
(<span style="color: #00ffff;">when</span> nil <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">disabled for now</span>
|
|
(shackle-mode))
|
|
(<span style="color: #00ffff;">setq</span> shackle-inhibit-window-quit-on-same-windows t)
|
|
(<span style="color: #00ffff;">setq</span> shackle-default-rule '(<span style="color: #b0c4de;">:same</span> t))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-beacon" class="outline-3">
|
|
<h3 id="beacon"><span class="section-number-3">6.31</span> beacon</h3>
|
|
<div class="outline-text-3" id="text-6-31">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">beacon</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c b"</span> . beacon-blink)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(beacon-mode 1))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-iregister" class="outline-3">
|
|
<h3 id="iregister"><span class="section-number-3">6.32</span> iregister</h3>
|
|
<div class="outline-text-3" id="text-6-32">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">iregister</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-discovermymajor" class="outline-3">
|
|
<h3 id="discovermymajor"><span class="section-number-3">6.33</span> discover-my-major</h3>
|
|
<div class="outline-text-3" id="text-6-33">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">discover-my-major</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-refine" class="outline-3">
|
|
<h3 id="refine"><span class="section-number-3">6.34</span> refine</h3>
|
|
<div class="outline-text-3" id="text-6-34">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">refine</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-winner" class="outline-3">
|
|
<h3 id="winner"><span class="section-number-3">6.35</span> winner</h3>
|
|
<div class="outline-text-3" id="text-6-35">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">winner</span>
|
|
<span style="color: #b0c4de;">:after</span> hydra
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:commands</span> (winner-undo winner-redo)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">bind-key</span>
|
|
<span style="color: #ffa07a;">"C-c q"</span>
|
|
(<span style="color: #00ffff;">defhydra</span> imalison:winner-hydra ()
|
|
<span style="color: #ffa07a;">"Winner"</span>
|
|
(<span style="color: #ffa07a;">"p"</span> winner-undo <span style="color: #ffa07a;">"back"</span>)
|
|
(<span style="color: #ffa07a;">"n"</span> winner-redo <span style="color: #ffa07a;">"forward"</span> <span style="color: #b0c4de;">:exit</span> t)))
|
|
(winner-mode 1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-eyebrowse" class="outline-3">
|
|
<h3 id="eyebrowse"><span class="section-number-3">6.36</span> eyebrowse</h3>
|
|
<div class="outline-text-3" id="text-6-36">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">eyebrowse</span>
|
|
<span style="color: #b0c4de;">:defer</span> 1
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span> (eyebrowse-mode +1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-stream" class="outline-3">
|
|
<h3 id="stream"><span class="section-number-3">6.37</span> stream</h3>
|
|
<div class="outline-text-3" id="text-6-37">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">stream</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-tile" class="outline-3">
|
|
<h3 id="tile"><span class="section-number-3">6.38</span> tile</h3>
|
|
<div class="outline-text-3" id="text-6-38">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> tile
|
|
<span style="color: #b0c4de;">:after</span> hydra
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c t"</span> . imalison:hydra-tile/body)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:tall-tile-strategy</span> (tile-split-n-tall 3))
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:wide-tile-strategy</span> tile-wide)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:master-tile-strategy</span> (tile-argument-buffer-fetcher
|
|
<span style="color: #b0c4de;">:layout</span> tile-master-left))
|
|
(<span style="color: #00ffff;">defhydra</span> imalison:hydra-tile
|
|
nil
|
|
<span style="color: #ffa07a;">"tile"</span>
|
|
(<span style="color: #ffa07a;">"t"</span> (tile <span style="color: #b0c4de;">:strategy</span> imalison:tall-tile-strategy))
|
|
(<span style="color: #ffa07a;">"w"</span> (tile <span style="color: #b0c4de;">:strategy</span> imalison:wide-tile-strategy))
|
|
(<span style="color: #ffa07a;">"m"</span> (tile <span style="color: #b0c4de;">:strategy</span> imalison:master-tile-strategy))
|
|
(<span style="color: #ffa07a;">"s"</span> tile-select)
|
|
(<span style="color: #ffa07a;">"0"</span> (tile <span style="color: #b0c4de;">:strategy</span> tile-one))
|
|
(<span style="color: #ffa07a;">"n"</span> tile)
|
|
(<span style="color: #ffa07a;">"l"</span> winner-undo))
|
|
(<span style="color: #00ffff;">setq</span> tile-cycler
|
|
(tile-strategies <span style="color: #b0c4de;">:strategies</span>
|
|
(list imalison:tall-tile-strategy
|
|
imalison:master-tile-strategy
|
|
imalison:wide-tile-strategy
|
|
tile-one)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-fillcolumnindicator" class="outline-3">
|
|
<h3 id="fillcolumnindicator"><span class="section-number-3">6.39</span> fill-column-indicator</h3>
|
|
<div class="outline-text-3" id="text-6-39">
|
|
<p>
|
|
This interferes with too many other packages. See
|
|
<a href="https://github.com/alpaker/Fill-Column-Indicator/issues/21">https://github.com/alpaker/Fill-Column-Indicator/issues/21</a> for more details
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">fill-column-indicator</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">fci-on-off-fci-before-company</span> (command)
|
|
(<span style="color: #00ffff;">when</span> (string= <span style="color: #ffa07a;">"show"</span> command)
|
|
(turn-off-fci-mode))
|
|
(<span style="color: #00ffff;">when</span> (string= <span style="color: #ffa07a;">"hide"</span> command)
|
|
(turn-on-fci-mode)))
|
|
(advice-add 'company-call-frontends <span style="color: #b0c4de;">:before</span> #'fci-on-off-fci-before-company)
|
|
(add-hook 'prog-mode-hook 'fci-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-keybindings" class="outline-2">
|
|
<h2 id="keybindings"><span class="section-number-2">7</span> Keybindings</h2>
|
|
<div class="outline-text-2" id="text-7">
|
|
</div><div id="outline-container-godmode" class="outline-3">
|
|
<h3 id="godmode"><span class="section-number-3">7.1</span> god-mode</h3>
|
|
<div class="outline-text-3" id="text-7-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">god-mode</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(global-set-key (kbd <span style="color: #ffa07a;">"<escape>"</span>) 'god-local-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-bindkey" class="outline-3">
|
|
<h3 id="bindkey"><span class="section-number-3">7.2</span> bind-key</h3>
|
|
<div class="outline-text-3" id="text-7-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">bind-key</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-whichkey" class="outline-3">
|
|
<h3 id="whichkey"><span class="section-number-3">7.3</span> which-key</h3>
|
|
<div class="outline-text-3" id="text-7-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">which-key</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> which-key-idle-delay .50)
|
|
(diminish 'which-key-mode)
|
|
(which-key-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-hydra" class="outline-3">
|
|
<h3 id="hydra"><span class="section-number-3">7.4</span> hydra</h3>
|
|
<div class="outline-text-3" id="text-7-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">hydra</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-c f"</span> . imalison:hydra-font/body)
|
|
(<span style="color: #ffa07a;">"C-c y"</span> . imalison:hydra-yank/body)
|
|
(<span style="color: #ffa07a;">"C-c 6"</span> . imalison:compile/body))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-fontsettings" class="outline-4">
|
|
<h4 id="fontsettings"><span class="section-number-4">7.4.1</span> Font Settings</h4>
|
|
<div class="outline-text-4" id="text-7-4-1">
|
|
<p>
|
|
<a id="orgtarget1"></a>
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defhydra</span> imalison:hydra-font
|
|
nil
|
|
<span style="color: #ffa07a;">"Font Settings"</span>
|
|
(<span style="color: #ffa07a;">"-"</span> imalison:font-size-decr <span style="color: #ffa07a;">"Decrease"</span>)
|
|
(<span style="color: #ffa07a;">"d"</span> imalison:font-size-decr <span style="color: #ffa07a;">"Decrease"</span>)
|
|
(<span style="color: #ffa07a;">"="</span> imalison:font-size-incr <span style="color: #ffa07a;">"Increase"</span>)
|
|
(<span style="color: #ffa07a;">"+"</span> imalison:font-size-incr <span style="color: #ffa07a;">"Increase"</span>)
|
|
(<span style="color: #ffa07a;">"i"</span> imalison:font-size-incr <span style="color: #ffa07a;">"Increase"</span>)
|
|
(<span style="color: #ffa07a;">"h"</span> imalison:set-huge-font-size <span style="color: #ffa07a;">"Huge"</span>)
|
|
(<span style="color: #ffa07a;">"a"</span> imalison:appearance <span style="color: #ffa07a;">"Set Default Appearance"</span>)
|
|
(<span style="color: #ffa07a;">"f"</span> set-frame-font <span style="color: #ffa07a;">"Set Frame Font"</span>)
|
|
(<span style="color: #ffa07a;">"t"</span> helm-themes <span style="color: #ffa07a;">"Choose Emacs Theme"</span>)
|
|
(<span style="color: #ffa07a;">"0"</span> imalison:font-size-reset <span style="color: #ffa07a;">"Reset to default size"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-copyyanking" class="outline-4">
|
|
<h4 id="copyyanking"><span class="section-number-4">7.4.2</span> Copy/Yanking</h4>
|
|
<div class="outline-text-4" id="text-7-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defhydra</span> imalison:hydra-yank
|
|
nil
|
|
<span style="color: #ffa07a;">"Yank text"</span>
|
|
(<span style="color: #ffa07a;">"p"</span> imalison:copy-buffer-file-path <span style="color: #ffa07a;">"Projectile path"</span>)
|
|
(<span style="color: #ffa07a;">"l"</span> imalison:copy-current-buffer-name <span style="color: #ffa07a;">"Buffer Name"</span>)
|
|
(<span style="color: #ffa07a;">"f"</span> imalison:copy-buffer-file-path-full <span style="color: #ffa07a;">"Full path"</span>)
|
|
(<span style="color: #ffa07a;">"n"</span> imalison:copy-buffer-file-name <span style="color: #ffa07a;">"File name"</span>)
|
|
(<span style="color: #ffa07a;">"b"</span> imalison:copy-current-git-branch <span style="color: #ffa07a;">"Git Branch"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-compile" class="outline-4">
|
|
<h4 id="compile"><span class="section-number-4">7.4.3</span> Compile</h4>
|
|
<div class="outline-text-4" id="text-7-4-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:make-test</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((default-directory (projectile-project-root)))
|
|
(imalison:named-compile <span style="color: #ffa07a;">"make test"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:glide-up</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(imalison:named-compile <span style="color: #ffa07a;">"glide up"</span>))
|
|
|
|
(<span style="color: #00ffff;">defhydra</span> imalison:compile nil <span style="color: #ffa07a;">"Compile"</span>
|
|
(<span style="color: #ffa07a;">"p"</span> imalison:projectile-helm-command-from-zsh <span style="color: #ffa07a;">"Run a command in projectile root"</span>)
|
|
(<span style="color: #ffa07a;">"d"</span> helm-command-from-zsh <span style="color: #ffa07a;">"Run a command in default directory"</span>)
|
|
(<span style="color: #ffa07a;">"c"</span> imalison:named-compile <span style="color: #ffa07a;">"Enter Custom Command"</span>)
|
|
(<span style="color: #ffa07a;">"t"</span> imalison:make-test <span style="color: #ffa07a;">"Test"</span>)
|
|
(<span style="color: #ffa07a;">"u"</span> imalison:glide-up <span style="color: #ffa07a;">"Update Dependencies"</span>))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">The following parens close the use-package/progn created several blocks above</span>
|
|
))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-killemacs" class="outline-3">
|
|
<h3 id="killemacs"><span class="section-number-3">7.5</span> kill-emacs</h3>
|
|
<div class="outline-text-3" id="text-7-5">
|
|
<p>
|
|
This ensures that C-x C-c will always kill emacs, even if we are running in server mode.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x C-c"</span> 'kill-emacs)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-imenu" class="outline-3">
|
|
<h3 id="imenu"><span class="section-number-3">7.6</span> imenu</h3>
|
|
<div class="outline-text-3" id="text-7-6">
|
|
<p>
|
|
imenu is the best. This should be a default binding.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x C-i"</span> 'imenu)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-undo" class="outline-3">
|
|
<h3 id="undo"><span class="section-number-3">7.7</span> undo</h3>
|
|
<div class="outline-text-3" id="text-7-7">
|
|
<p>
|
|
I can't shake the habit of using this keybinding for undo. I should really use the default of C-/.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C--"</span> 'undo)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-otherwindow" class="outline-3">
|
|
<h3 id="otherwindow"><span class="section-number-3">7.8</span> other-window</h3>
|
|
<div class="outline-text-3" id="text-7-8">
|
|
<p>
|
|
Go the other way when you use capital O.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x O"</span> (<span style="color: #00ffff;">lambda</span> () (<span style="color: #00ffff;">interactive</span>) (other-window -1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-markring" class="outline-3">
|
|
<h3 id="markring"><span class="section-number-3">7.9</span> Mark ring</h3>
|
|
<div class="outline-text-3" id="text-7-9">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-c SPC"</span> 'imalison:mark-ring)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-otherbindings" class="outline-3">
|
|
<h3 id="otherbindings"><span class="section-number-3">7.10</span> Other bindings</h3>
|
|
<div class="outline-text-3" id="text-7-10">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x p"</span> 'pop-to-mark-command)
|
|
(<span style="color: #00ffff;">setq</span> set-mark-command-repeat-pop t)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x C-b"</span> 'buffer-menu)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x C-r"</span> (<span style="color: #00ffff;">lambda</span> () (<span style="color: #00ffff;">interactive</span>) (revert-buffer t t)))
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x w"</span> 'whitespace-mode)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"M-n"</span> 'forward-paragraph)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"M-p"</span> 'backward-paragraph)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-M-<backspace>"</span> 'backward-kill-sexp)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"s-<return>"</span> 'toggle-frame-fullscreen)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"M-|"</span> 'imalison:shell-command-on-region)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"C-x 9"</span> 'previous-buffer)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"s-v"</span> 'clipboard-yank)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-globalsetkeytousepackage" class="outline-3">
|
|
<h3 id="globalsetkeytousepackage"><span class="section-number-3">7.11</span> global-set-key-to-use-package</h3>
|
|
<div class="outline-text-3" id="text-7-11">
|
|
<p>
|
|
This might be useless, but I believe that it is a macro that converts between
|
|
bind-key and global-set-key forms.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(fset 'global-set-key-to-use-package
|
|
(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&optional</span> arg) <span style="color: #ffa07a;">"Keyboard macro."</span> (<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"p"</span>)
|
|
(kmacro-exec-ring-item
|
|
(<span style="color: #00ffff;">quote</span> ([1 67108896 19 100 6 23 40 19 41 return
|
|
backspace 32 46 6 4] 0 <span style="color: #ffa07a;">"%d"</span>)) arg)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-osx" class="outline-3">
|
|
<h3 id="osx"><span class="section-number-3">7.12</span> OSX</h3>
|
|
<div class="outline-text-3" id="text-7-12">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">when</span> (equal system-type 'darwin)
|
|
(<span style="color: #00ffff;">setq</span> mac-option-modifier 'meta)
|
|
(<span style="color: #00ffff;">setq</span> mac-command-modifier 'super))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-navigation" class="outline-2">
|
|
<h2 id="navigation"><span class="section-number-2">8</span> Navigation</h2>
|
|
<div class="outline-text-2" id="text-8">
|
|
</div><div id="outline-container-zoptochar" class="outline-3">
|
|
<h3 id="zoptochar"><span class="section-number-3">8.1</span> zop-to-char</h3>
|
|
<div class="outline-text-3" id="text-8-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">zop-to-char</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"M-z"</span> . zop-to-char)
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> zop-to-char-kill-keys '(?\C-k))
|
|
(<span style="color: #00ffff;">setq</span> zop-to-char-quit-at-point-keys '(?\r))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helm" class="outline-3">
|
|
<h3 id="helm"><span class="section-number-3">8.2</span> helm</h3>
|
|
<div class="outline-text-3" id="text-8-2">
|
|
<p>
|
|
I use helm for almost all emacs completion
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp"><span class="linenr"> 1: </span>(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-config</span>
|
|
<span class="linenr"> 2: </span> <span style="color: #b0c4de;">:ensure</span> helm
|
|
<span class="linenr"> 3: </span> <span style="color: #b0c4de;">:demand</span> t
|
|
<span class="linenr"> 4: </span> <span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"M-y"</span> . helm-show-kill-ring)
|
|
<span class="linenr"> 5: </span> (<span style="color: #ffa07a;">"M-x"</span> . helm-M-x)
|
|
<span class="linenr"> 6: </span> (<span style="color: #ffa07a;">"C-x C-i"</span> . helm-imenu)
|
|
<span class="linenr"> 7: </span> (<span style="color: #ffa07a;">"C-h a"</span> . helm-apropos)
|
|
<span class="linenr"> 8: </span> (<span style="color: #ffa07a;">"C-c C-h"</span> . helm-org-agenda-files-headings)
|
|
<span class="linenr"> 9: </span> (<span style="color: #ffa07a;">"C-c ;"</span> . helm-recentf))
|
|
<span class="linenr">10: </span> <span style="color: #b0c4de;">:diminish</span> helm-mode
|
|
<span class="linenr">11: </span> <span style="color: #b0c4de;">:config</span>
|
|
<span class="linenr">12: </span> (<span style="color: #00ffff;">progn</span>
|
|
<span class="linenr">13: </span> (<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">helm-org</span>)
|
|
<span id="coderef-helm split window" class="coderef-off"><span class="linenr">14: </span> (<span style="color: #00ffff;">setq</span> helm-split-window-default-side 'same)</span>
|
|
<span class="linenr">15: </span>
|
|
<span class="linenr">16: </span> (<span style="color: #00ffff;">cl-defun</span> <span style="color: #87cefa;">helm-org-headings-in-buffer</span> ()
|
|
<span class="linenr">17: </span> (<span style="color: #00ffff;">interactive</span>)
|
|
<span class="linenr">18: </span> (helm <span style="color: #b0c4de;">:sources</span> (helm-source-org-headings-for-files
|
|
<span class="linenr">19: </span> (list (projectile-completing-read
|
|
<span class="linenr">20: </span> <span style="color: #ffa07a;">"File to look at headings from: "</span>
|
|
<span class="linenr">21: </span> (projectile-all-project-files))))
|
|
<span class="linenr">22: </span> <span style="color: #b0c4de;">:candidate-number-limit</span> 99999
|
|
<span class="linenr">23: </span> <span style="color: #b0c4de;">:buffer</span> <span style="color: #ffa07a;">"*helm org inbuffer*"</span>))
|
|
<span class="linenr">24: </span>
|
|
<span class="linenr">25: </span> (<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-descbinds</span>
|
|
<span class="linenr">26: </span> <span style="color: #b0c4de;">:demand</span> t
|
|
<span class="linenr">27: </span> <span style="color: #b0c4de;">:config</span> (helm-descbinds-mode 1))
|
|
<span class="linenr">28: </span>
|
|
<span class="linenr">29: </span> (<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-ag</span>
|
|
<span class="linenr">30: </span> <span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c p 1"</span> . imalison:set-helm-ag-extra-options)
|
|
<span class="linenr">31: </span> <span style="color: #b0c4de;">:preface</span>
|
|
<span class="linenr">32: </span> (<span style="color: #00ffff;">progn</span>
|
|
<span class="linenr">33: </span> (<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-helm-ag-extra-options</span> ()
|
|
<span class="linenr">34: </span> (<span style="color: #00ffff;">interactive</span>)
|
|
<span class="linenr">35: </span> (<span style="color: #00ffff;">let</span> ((option (read-string <span style="color: #ffa07a;">"Extra options: "</span> (<span style="color: #00ffff;">or</span> helm-ag--extra-options <span style="color: #ffa07a;">""</span>)
|
|
<span class="linenr">36: </span> 'helm-ag--extra-options-history)))
|
|
<span class="linenr">37: </span> (<span style="color: #00ffff;">setq</span> helm-ag--extra-options option))))
|
|
<span class="linenr">38: </span> <span style="color: #b0c4de;">:config</span>
|
|
<span class="linenr">39: </span> (<span style="color: #00ffff;">progn</span>
|
|
<span class="linenr">40: </span> (<span style="color: #00ffff;">setq</span> helm-ag-always-set-extra-option nil)))
|
|
<span class="linenr">41: </span> (helm-mode 1)))
|
|
</pre>
|
|
</div>
|
|
<p>
|
|
<a href="#coderef-helm split window"class="coderef" onmouseover="CodeHighlightOn(this, 'coderef-helm split window');" onmouseout="CodeHighlightOff(this, 'coderef-helm split window');">Ensure that helm buffers are started in the window that currently holds the focus</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmprojectile" class="outline-3">
|
|
<h3 id="helmprojectile"><span class="section-number-3">8.3</span> helm-projectile</h3>
|
|
<div class="outline-text-3" id="text-8-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-projectile</span>
|
|
<span style="color: #b0c4de;">:commands</span> (helm-projectile-on)
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> helm-projectile-projects-map
|
|
(<span style="color: #ffa07a;">"M-s"</span> . imalison:switch-to-project-and-search)
|
|
(<span style="color: #ffa07a;">"M-t"</span> . imalison:helm-term-projectile))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:invalidate-cache-and-open-file</span> (_dir)
|
|
(projectile-invalidate-cache nil)
|
|
(projectile-find-file))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:switch-to-project-and-search</span> (dir)
|
|
(<span style="color: #00ffff;">let</span> ((default-directory dir)
|
|
(projectile-require-project-root nil)
|
|
(helm-action-buffer <span style="color: #ffa07a;">"this-buffer-should-not-exist"</span>))
|
|
(helm-projectile-ag)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:helm-term-projectile</span> (dir)
|
|
(<span style="color: #00ffff;">let</span> ((default-directory dir)
|
|
(projectile-require-project-root nil)
|
|
(helm-action-buffer <span style="color: #ffa07a;">"this-buffer-should-not-exist"</span>))
|
|
(term-projectile-forward))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(helm-delete-action-from-source <span style="color: #ffa07a;">"Search in Project"</span>
|
|
helm-source-projectile-projects)
|
|
(helm-delete-action-from-source <span style="color: #ffa07a;">"Open term for project"</span>
|
|
helm-source-projectile-projects)
|
|
(helm-add-action-to-source <span style="color: #ffa07a;">"Search in Project"</span>
|
|
'imalison:switch-to-project-and-search
|
|
helm-source-projectile-projects)
|
|
(helm-add-action-to-source <span style="color: #ffa07a;">"Open term for project"</span>
|
|
'imalison:helm-term-projectile
|
|
helm-source-projectile-projects)
|
|
(helm-add-action-to-source <span style="color: #ffa07a;">"Invalidate Cache and Open File"</span>
|
|
'imalison:invalidate-cache-and-open-file
|
|
helm-source-projectile-projects)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-projectile" class="outline-3">
|
|
<h3 id="projectile"><span class="section-number-3">8.4</span> projectile</h3>
|
|
<div class="outline-text-3" id="text-8-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">projectile</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-x f"</span> . projectile-find-file-in-known-projects)
|
|
(<span style="color: #ffa07a;">"C-c p f"</span> . imalison:projectile-find-file))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:do-ag-default-directory</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(helm-do-ag default-directory (car (projectile-parse-dirconfig-file))))
|
|
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:do-ag
|
|
helm-projectile-ag
|
|
imalison:do-ag-default-directory
|
|
helm-do-ag)
|
|
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:projectile-find-file
|
|
projectile-find-file
|
|
projectile-find-file-other-window)
|
|
|
|
(<span style="color: #00ffff;">imalison:let-around</span> imalison:set-options-do-ag
|
|
imalison:do-ag
|
|
(helm-ag-always-set-extra-option t))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:projectile-make-all-subdirs-projects</span> (directory)
|
|
(<span style="color: #00ffff;">cl-loop</span> for file-info in (directory-files-and-attributes directory)
|
|
do (<span style="color: #00ffff;">when</span> (nth 1 file-info)
|
|
(write-region <span style="color: #ffa07a;">""</span> nil
|
|
(expand-file-name
|
|
(concat directory <span style="color: #ffa07a;">"/"</span>
|
|
(nth 0 file-info) <span style="color: #ffa07a;">"/.projectile"</span>)))))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">persp-projectile</span>
|
|
<span style="color: #b0c4de;">:commands</span> projectile-persp-switch-project)
|
|
|
|
(projectile-global-mode)
|
|
(<span style="color: #00ffff;">setq</span> projectile-require-project-root nil)
|
|
(<span style="color: #00ffff;">setq</span> projectile-enable-caching nil)
|
|
(<span style="color: #00ffff;">setq</span> projectile-completion-system 'helm)
|
|
(add-to-list 'projectile-globally-ignored-files <span style="color: #ffa07a;">"Godeps"</span>)
|
|
(<span style="color: #00ffff;">shut-up</span> (helm-projectile-on))
|
|
(diminish 'projectile-mode)
|
|
(<span style="color: #00ffff;">bind-key*</span> <span style="color: #ffa07a;">"C-c p s"</span> 'imalison:do-ag)
|
|
(<span style="color: #00ffff;">bind-key*</span> <span style="color: #ffa07a;">"C-c p S"</span> 'imalison:set-options-do-ag)
|
|
(<span style="color: #00ffff;">bind-key*</span> <span style="color: #ffa07a;">"C-c p f"</span> 'imalison:projectile-find-file)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-ido" class="outline-3">
|
|
<h3 id="ido"><span class="section-number-3">8.5</span> ido</h3>
|
|
<div class="outline-text-3" id="text-8-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ido</span>
|
|
<span style="color: #b0c4de;">:commands</span> ido-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(ido-mode 1)
|
|
(<span style="color: #00ffff;">setq</span> ido-auto-merge-work-directories-length -1
|
|
ido-default-buffer-method 'selected-window
|
|
ido-use-virtual-buffers t
|
|
ido-use-filename-at-point nil
|
|
ido-create-new-buffer 'always)
|
|
(ido-everywhere 1)
|
|
(<span style="color: #00ffff;">setq</span> ido-enable-flex-matching t)
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flx</span>)
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flx-ido</span>
|
|
<span style="color: #b0c4de;">:commands</span> flx-ido-mode
|
|
<span style="color: #b0c4de;">:init</span> (flx-ido-mode 1)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">disable ido faces to see flx highlights.</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This makes flx-ido much faster.</span>
|
|
(<span style="color: #00ffff;">setq</span> gc-cons-threshold 20000000)
|
|
(<span style="color: #00ffff;">setq</span> ido-use-faces nil)))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ido-ubiquitous</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:commands</span> (ido-ubiquitous-mode))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ido-vertical-mode</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(ido-vertical-mode 1)
|
|
(<span style="color: #00ffff;">setq</span> ido-vertical-define-keys 'C-n-C-p-up-and-down)))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flx-ido</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-avy" class="outline-3">
|
|
<h3 id="avy"><span class="section-number-3">8.6</span> avy</h3>
|
|
<div class="outline-text-3" id="text-8-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">avy</span>
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:avy
|
|
avy-goto-word-1
|
|
avy-goto-char))
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-j"</span> . imalison:avy)
|
|
(<span style="color: #ffa07a;">"M-g l"</span> . avy-goto-line)
|
|
(<span style="color: #ffa07a;">"C-'"</span> . avy-goto-char-2)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-acewindow" class="outline-3">
|
|
<h3 id="acewindow"><span class="section-number-3">8.7</span> ace-window</h3>
|
|
<div class="outline-text-3" id="text-8-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ace-window</span>
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:ace-window
|
|
ace-select-window
|
|
ace-swap-window)
|
|
<span style="color: #b0c4de;">:config</span> (<span style="color: #00ffff;">setq</span> aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c w"</span> . imalison:ace-window))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-neotree" class="outline-3">
|
|
<h3 id="neotree"><span class="section-number-3">8.8</span> neotree</h3>
|
|
<div class="outline-text-3" id="text-8-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">neotree</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-jumpchar" class="outline-3">
|
|
<h3 id="jumpchar"><span class="section-number-3">8.9</span> jump-char</h3>
|
|
<div class="outline-text-3" id="text-8-9">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">jump-char</span>
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-;"</span> . jump-char-forward)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-flimenu" class="outline-3">
|
|
<h3 id="flimenu"><span class="section-number-3">8.10</span> flimenu</h3>
|
|
<div class="outline-text-3" id="text-8-10">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> flimenu
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(flimenu-global-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-swiper" class="outline-3">
|
|
<h3 id="swiper"><span class="section-number-3">8.11</span> swiper</h3>
|
|
<div class="outline-text-3" id="text-8-11">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">swiper</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-s"</span> . swiper))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-completion" class="outline-2">
|
|
<h2 id="completion"><span class="section-number-2">9</span> Completion</h2>
|
|
<div class="outline-text-2" id="text-9">
|
|
</div><div id="outline-container-company" class="outline-3">
|
|
<h3 id="company"><span class="section-number-3">9.1</span> company</h3>
|
|
<div class="outline-text-3" id="text-9-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company</span>
|
|
<span style="color: #b0c4de;">:commands</span> company-mode imalison:company
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-\\"</span> . imalison:company))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:company
|
|
company-complete
|
|
company-yasnippet)
|
|
|
|
(<span style="color: #00ffff;">setq</span> company-idle-delay .25)
|
|
(global-company-mode)
|
|
(diminish 'company-mode))
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(add-hook 'prog-mode-hook (<span style="color: #00ffff;">lambda</span> () (company-mode t))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-companyflx" class="outline-4">
|
|
<h4 id="companyflx"><span class="section-number-4">9.1.1</span> company-flx</h4>
|
|
<div class="outline-text-4" id="text-9-1-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-flx</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:after</span> company
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(company-flx-mode +1))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-autocomplete" class="outline-3">
|
|
<h3 id="autocomplete"><span class="section-number-3">9.2</span> auto-complete</h3>
|
|
<div class="outline-text-3" id="text-9-2">
|
|
<p>
|
|
I don't use auto-complete at all, so I have set up a hook to automatically disable it whenever it is enabled to avoid creating conflicting popups when company is activated.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">auto-complete</span>
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:auto-complete-hook</span> ()
|
|
(debug)
|
|
(<span style="color: #ffc0cb; font-weight: bold;">warn</span> <span style="color: #ffa07a;">"auto-complete-mode was activated, but is being automatically disabled."</span>)
|
|
(<span style="color: #00ffff;">let</span> ((auto-complete-mode-hook nil))
|
|
(auto-complete-mode -1))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'auto-complete-mode-hook 'imalison:auto-complete-hook)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-textmanipulation" class="outline-2">
|
|
<h2 id="textmanipulation"><span class="section-number-2">10</span> Text Manipulation</h2>
|
|
<div class="outline-text-2" id="text-10">
|
|
</div><div id="outline-container-smartparens" class="outline-3">
|
|
<h3 id="smartparens"><span class="section-number-3">10.1</span> smartparens</h3>
|
|
<div class="outline-text-3" id="text-10-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">smartparens</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:diminish</span> smartparens-mode
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> smartparens-mode-map
|
|
(<span style="color: #ffa07a;">"H-z"</span> . sp-kill-symbol)
|
|
(<span style="color: #ffa07a;">"C-)"</span> . sp-forward-slurp-sexp)
|
|
(<span style="color: #ffa07a;">"C-}"</span> . sp-forward-barf-sexp)
|
|
(<span style="color: #ffa07a;">"C-("</span> . sp-backward-slurp-sexp)
|
|
(<span style="color: #ffa07a;">"C-{"</span> . sp-backward-barf-sexp))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">smartparens-config</span>)
|
|
(smartparens-global-mode 1)
|
|
(sp-use-smartparens-bindings)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-M-<backspace>"</span> smartparens-mode-map)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-<backspace>"</span> smartparens-mode-map)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"M-<backspace>"</span> smartparens-mode-map)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-multiplecursors" class="outline-3">
|
|
<h3 id="multiplecursors"><span class="section-number-3">10.2</span> multiple-cursors</h3>
|
|
<div class="outline-text-3" id="text-10-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">multiple-cursors</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">phi-search-mc</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(phi-search-mc/setup-keys))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">mc-extras</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(define-key mc/keymap (kbd <span style="color: #ffa07a;">"C-. ="</span>) 'mc/compare-chars)))
|
|
<span style="color: #b0c4de;">:bind</span>
|
|
((<span style="color: #ffa07a;">"C-c m a"</span> . mc/mark-all-like-this)
|
|
(<span style="color: #ffa07a;">"C-c m m"</span> . mc/mark-all-like-this-dwim)
|
|
(<span style="color: #ffa07a;">"C-c m l"</span> . mc/edit-lines)
|
|
(<span style="color: #ffa07a;">"C-c m n"</span> . mc/mark-next-like-this)
|
|
(<span style="color: #ffa07a;">"C-c m p"</span> . mc/mark-previous-like-this)
|
|
(<span style="color: #ffa07a;">"C-c m s"</span> . mc/mark-sgml-tag-pair)
|
|
(<span style="color: #ffa07a;">"C-c m d"</span> . mc/mark-all-like-this-in-defun)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-expandregion" class="outline-3">
|
|
<h3 id="expandregion"><span class="section-number-3">10.3</span> expand-region</h3>
|
|
<div class="outline-text-3" id="text-10-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">expand-region</span>
|
|
<span style="color: #b0c4de;">:commands</span> er/expand-region
|
|
<span style="color: #b0c4de;">:config</span> (<span style="color: #00ffff;">setq</span> expand-region-contract-fast-key <span style="color: #ffa07a;">"j"</span>)
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-c k"</span> . er/expand-region)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-multiline" class="outline-3">
|
|
<h3 id="multiline"><span class="section-number-3">10.4</span> multi-line</h3>
|
|
<div class="outline-text-3" id="text-10-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> multi-line
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c d"</span> . multi-line))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-commentdwim" class="outline-3">
|
|
<h3 id="commentdwim"><span class="section-number-3">10.5</span> comment-dwim-2</h3>
|
|
<div class="outline-text-3" id="text-10-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">comment-dwim-2</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"M-;"</span> . comment-dwim-2))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-unfill" class="outline-3">
|
|
<h3 id="unfill"><span class="section-number-3">10.6</span> unfill</h3>
|
|
<div class="outline-text-3" id="text-10-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">unfill</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"M-q"</span> . unfill-toggle))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-cliphist" class="outline-3">
|
|
<h3 id="cliphist"><span class="section-number-3">10.7</span> cliphist</h3>
|
|
<div class="outline-text-3" id="text-10-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">cliphist</span>
|
|
<span style="color: #b0c4de;">:config</span> (<span style="color: #00ffff;">setq</span> cliphist-use-ivy t))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-electricoperatormode" class="outline-3">
|
|
<h3 id="electricoperatormode"><span class="section-number-3">10.8</span> electric-operator-mode</h3>
|
|
<div class="outline-text-3" id="text-10-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">electric-operator</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(add-hook 'python-mode-hook #'electric-operator-mode))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-stringinflection" class="outline-3">
|
|
<h3 id="stringinflection"><span class="section-number-3">10.9</span> string-inflection</h3>
|
|
<div class="outline-text-3" id="text-10-9">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">string-inflection</span>
|
|
<span style="color: #b0c4de;">:commands</span> string-inflection-toggle
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c l"</span> . string-inflection-toggle))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-yasnippet" class="outline-3">
|
|
<h3 id="yasnippet"><span class="section-number-3">10.10</span> yasnippet</h3>
|
|
<div class="outline-text-3" id="text-10-10">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">yasnippet</span>
|
|
<span style="color: #b0c4de;">:defer</span> 5
|
|
<span style="color: #b0c4de;">:commands</span> (yas-global-mode)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(yas-global-mode)
|
|
(diminish 'yas-minor-mode)
|
|
(add-hook 'term-mode-hook (<span style="color: #00ffff;">lambda</span>() (yas-minor-mode -1)))
|
|
(<span style="color: #00ffff;">setq</span> yas-prompt-functions
|
|
(cons 'yas-ido-prompt
|
|
(cl-delete 'yas-ido-prompt yas-prompt-functions)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sourcecontrol" class="outline-2">
|
|
<h2 id="sourcecontrol"><span class="section-number-2">11</span> Source Control</h2>
|
|
<div class="outline-text-2" id="text-11">
|
|
</div><div id="outline-container-magit" class="outline-3">
|
|
<h3 id="magit"><span class="section-number-3">11.1</span> magit</h3>
|
|
<div class="outline-text-3" id="text-11-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">magit</span>
|
|
<span style="color: #b0c4de;">:commands</span> magit-status
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-x g"</span> . imalison:magit-status))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">emit-let-around</span> imalison:magit-status-traditional
|
|
magit-status
|
|
(magit-display-buffer-function
|
|
'magit-display-buffer-traditional))
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:magit-status
|
|
magit-status
|
|
imalison:magit-status-traditional)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:after-magit-visit-file</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">when</span> (derived-mode-p 'org-mode)
|
|
(org-show-context 'magit-goto))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">when</span> (imalison:use-frames-only)
|
|
(<span style="color: #00ffff;">setq</span> magit-commit-show-diff t))
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> magit-status-mode-map)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> magit-hunk-section-map)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> magit-file-section-map)
|
|
(<span style="color: #00ffff;">setq</span> magit-last-seen-setup-instructions <span style="color: #ffa07a;">"1.4.0"</span>
|
|
magit-display-buffer-function
|
|
'magit-display-buffer-same-window-except-diff-v1)
|
|
(magit-auto-revert-mode)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO: Is this necessary now that signing is a git default</span>
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">bound-and-true-p</span> imalison:gpg-key)
|
|
(add-to-list 'magit-commit-arguments
|
|
(format <span style="color: #ffa07a;">"--gpg-sign=%s"</span> imalison:gpg-key)))
|
|
|
|
(add-to-list 'org-show-context-detail '(magit-goto . lineage))
|
|
(advice-add 'magit-diff-visit-file <span style="color: #b0c4de;">:after</span> 'imalison:after-magit-visit-file)
|
|
(add-hook 'magit-popup-mode-hook 'imalison:disable-show-trailing-whitespace)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-magithub" class="outline-4">
|
|
<h4 id="magithub"><span class="section-number-4">11.1.1</span> magithub</h4>
|
|
<div class="outline-text-4" id="text-11-1-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">magithub</span>
|
|
<span style="color: #b0c4de;">:if</span> (executable-find <span style="color: #ffa07a;">"hub"</span>)
|
|
<span style="color: #b0c4de;">:after</span> magit)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gitlink" class="outline-3">
|
|
<h3 id="gitlink"><span class="section-number-3">11.2</span> git-link</h3>
|
|
<div class="outline-text-3" id="text-11-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">git-link</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> git-link-use-commit t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-magitgitflow" class="outline-3">
|
|
<h3 id="magitgitflow"><span class="section-number-3">11.3</span> magit-gitflow</h3>
|
|
<div class="outline-text-3" id="text-11-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">magit-gitflow</span>
|
|
<span style="color: #b0c4de;">:diminish</span> magit-gitflow-mode
|
|
<span style="color: #b0c4de;">:after</span> magit
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> magit-gitflow-popup-key <span style="color: #ffa07a;">"C-k"</span>))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'magit-mode-hook 'turn-on-magit-gitflow)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gittimemachine" class="outline-3">
|
|
<h3 id="gittimemachine"><span class="section-number-3">11.4</span> git-timemachine</h3>
|
|
<div class="outline-text-3" id="text-11-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">git-timemachine</span>
|
|
<span style="color: #b0c4de;">:commands</span> git-timemachine)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gitgutter" class="outline-3">
|
|
<h3 id="gitgutter"><span class="section-number-3">11.5</span> git-gutter</h3>
|
|
<div class="outline-text-3" id="text-11-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">git-gutter</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(global-git-gutter-mode -1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gitoliteclone" class="outline-3">
|
|
<h3 id="gitoliteclone"><span class="section-number-3">11.6</span> gitolite-clone</h3>
|
|
<div class="outline-text-3" id="text-11-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">gitolite-clone</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">gitolite-clone-force-refresh</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(gitolite-clone-get-projects nil nil t))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gitconfigmode" class="outline-3">
|
|
<h3 id="gitconfigmode"><span class="section-number-3">11.7</span> gitconfig-mode</h3>
|
|
<div class="outline-text-3" id="text-11-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">gitconfig-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.?gitconfig.?.*\\'"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gitignoremode" class="outline-3">
|
|
<h3 id="gitignoremode"><span class="section-number-3">11.8</span> gitignore-mode</h3>
|
|
<div class="outline-text-3" id="text-11-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">gitignore-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.?gitignore.?.*\\'"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-github" class="outline-3">
|
|
<h3 id="github"><span class="section-number-3">11.9</span> github</h3>
|
|
<div class="outline-text-3" id="text-11-9">
|
|
</div><div id="outline-container-githubsearch" class="outline-4">
|
|
<h4 id="githubsearch"><span class="section-number-4">11.9.1</span> github-search</h4>
|
|
<div class="outline-text-4" id="text-11-9-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> github-search
|
|
<span style="color: #b0c4de;">:commands</span> (github-search-clone-repo github-search-user-clone-repo)
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-appropriate-path-from-gh-repo-for-go</span> (repo)
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">go-mode</span>)
|
|
(<span style="color: #00ffff;">imalison:get-go-src</span> <span style="color: #ffa07a;">"github.com"</span> (<span style="color: #00ffff;">oref</span> (<span style="color: #00ffff;">oref</span> repo <span style="color: #b0c4de;">:owner</span>) <span style="color: #b0c4de;">:login</span>)
|
|
(<span style="color: #00ffff;">oref</span> repo <span style="color: #b0c4de;">:name</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-projects-directory-target-from-repo</span> (repo)
|
|
(<span style="color: #00ffff;">let</span> ((prospective-path
|
|
(<span style="color: #00ffff;">if</span> (equal (<span style="color: #00ffff;">oref</span> repo language) <span style="color: #ffa07a;">"Go"</span>)
|
|
(imalison:get-appropriate-path-from-gh-repo-for-go repo)
|
|
(imalison:join-paths imalison:projects-directory (<span style="color: #00ffff;">oref</span> repo <span style="color: #b0c4de;">:name</span>)))))
|
|
(<span style="color: #00ffff;">if</span> (file-exists-p prospective-path)
|
|
(funcall 'github-search-prompt-for-target-directory repo)
|
|
prospective-path))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> github-search-get-target-directory-for-repo-function
|
|
'imalison:get-projects-directory-target-from-repo)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-githubclone" class="outline-4">
|
|
<h4 id="githubclone"><span class="section-number-4">11.9.2</span> github-clone</h4>
|
|
<div class="outline-text-4" id="text-11-9-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package*</span> github-clone <span style="color: #ffa07a;">"~/Projects/github-clone.el"</span>
|
|
<span style="color: #b0c4de;">:commands</span> (github-clone-add-parent-remote
|
|
github-clone-add-source-remote
|
|
github-clone-fork-remote
|
|
github-clone-add-existing-remote
|
|
github-clone))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-githubnotifier" class="outline-4">
|
|
<h4 id="githubnotifier"><span class="section-number-4">11.9.3</span> github-notifier</h4>
|
|
<div class="outline-text-4" id="text-11-9-3">
|
|
<p>
|
|
This is disabled because it was causing too many issues with my
|
|
modeline and with excessive http requests to github.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">github-notifier</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(advice-add 'github-notifier-update <span style="color: #b0c4de;">:around</span> 'imalison:shut-up-around)
|
|
(github-notifier-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-githubbrowsefile" class="outline-4">
|
|
<h4 id="githubbrowsefile"><span class="section-number-4">11.9.4</span> github-browse-file</h4>
|
|
<div class="outline-text-4" id="text-11-9-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">github-browse-file</span>
|
|
<span style="color: #b0c4de;">:commands</span> github-browse-file)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-magitghpulls" class="outline-4">
|
|
<h4 id="magitghpulls"><span class="section-number-4">11.9.5</span> magit-gh-pulls</h4>
|
|
<div class="outline-text-4" id="text-11-9-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">magit-gh-pulls</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:diminish</span> magit-gh-pulls-mode
|
|
<span style="color: #b0c4de;">:after</span> magit
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'magit-mode-hook 'turn-on-magit-gh-pulls)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gist" class="outline-4">
|
|
<h4 id="gist"><span class="section-number-4">11.9.6</span> gist</h4>
|
|
<div class="outline-text-4" id="text-11-9-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">gist</span>
|
|
<span style="color: #b0c4de;">:commands</span> (gist-region gist-region-private gist-buffer gist-buffer-private
|
|
gist-region-or-buffer gist-region-or-buffer-private
|
|
gist-list-user gist-list gist-fetch gist-star
|
|
gist-unstar gist-list-starred gist-fork))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-majormodes" class="outline-2">
|
|
<h2 id="majormodes"><span class="section-number-2">12</span> Major Modes</h2>
|
|
<div class="outline-text-2" id="text-12">
|
|
</div><div id="outline-container-programming" class="outline-3">
|
|
<h3 id="programming"><span class="section-number-3">12.1</span> Programming</h3>
|
|
<div class="outline-text-3" id="text-12-1">
|
|
<p>
|
|
<a id="orgtarget6"></a>
|
|
</p>
|
|
</div>
|
|
<div id="outline-container-python" class="outline-4">
|
|
<h4 id="python"><span class="section-number-4">12.1.1</span> python</h4>
|
|
<div class="outline-text-4" id="text-12-1-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">python</span>
|
|
<span style="color: #b0c4de;">:commands</span> python-mode
|
|
<span style="color: #b0c4de;">:mode</span> (<span style="color: #ffa07a;">"\\.py\\'"</span> . python-mode)
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:python-mode</span> ()
|
|
(<span style="color: #00ffff;">setq</span> show-trailing-whitespace t)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO: This was likely fixed and can probably be removed</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Somehow this is sometimes set to jedi:ac-setup which we</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">don't want. This binding avoids starting auto-complete mode.</span>
|
|
(<span style="color: #00ffff;">let</span> ((jedi:setup-function nil))
|
|
(jedi:setup))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">XXX: This has become pretty annoying</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(add-hook 'before-save-hook 'pyimport-remove-unused t t)</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Ensure company is active</span>
|
|
(company-mode +1)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Only use company-jedi for completion</span>
|
|
(set (make-local-variable 'company-backends) '(company-jedi))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Remove default python completion, as we are going to rely on</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">company-jedi.</span>
|
|
(remove-hook 'completion-at-point-functions
|
|
'python-completion-complete-at-point 'local))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">sphinx-doc</span>)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> python-mode-map)
|
|
(add-hook 'python-mode-hook #'imalison:python-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-pyimport" class="outline-5">
|
|
<h5 id="pyimport"><span class="section-number-5">12.1.1.1</span> pyimport</h5>
|
|
<div class="outline-text-5" id="text-12-1-1-1">
|
|
<p>
|
|
Pyimport is disabled because it may be causing a performance problem.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">pyimport</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> python-mode-map
|
|
(<span style="color: #ffa07a;">"C-c C-i"</span> . pyimport-insert-missing))
|
|
<span style="color: #b0c4de;">:commands</span> pyimport-remove-unused)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-jedi" class="outline-5">
|
|
<h5 id="jedi"><span class="section-number-5">12.1.1.2</span> jedi</h5>
|
|
<div class="outline-text-5" id="text-12-1-1-2">
|
|
<p>
|
|
The accepted way to use jedi if you prefer company to auto-complete is
|
|
simply to require the company jedi package, which is why we make no
|
|
reference to the jedi-core package.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-jedi</span>
|
|
<span style="color: #b0c4de;">:after</span> python
|
|
<span style="color: #b0c4de;">:commands</span> (jedi:goto-definition jedi-mode company-jedi)
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> python-mode-map
|
|
(<span style="color: #ffa07a;">"M-."</span> . jedi:goto-definition)
|
|
(<span style="color: #ffa07a;">"M-,"</span> . jedi:goto-definition-pop-marker))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> jedi:complete-on-dot t)
|
|
(<span style="color: #00ffff;">setq</span> jedi:imenu-create-index-function 'jedi:create-flat-imenu-index)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-go" class="outline-4">
|
|
<h4 id="go"><span class="section-number-4">12.1.2</span> go</h4>
|
|
<div class="outline-text-4" id="text-12-1-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">go-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.go\\'"</span> . go-mode))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:glide-novendor</span> ()
|
|
(<span style="color: #00ffff;">projectile-with-default-dir</span> (projectile-project-root)
|
|
(shell-command-to-string <span style="color: #ffa07a;">"glide novendor"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:go-mode-create-imenu-index</span> ()
|
|
<span style="color: #ffa07a;">"Create and return an imenu index alist. Unlike the default</span>
|
|
<span style="color: #ffa07a;"> alist created by go-mode, this method creates an alist where</span>
|
|
<span style="color: #ffa07a;"> items follow a style that is consistent with other prog-modes."</span>
|
|
(<span style="color: #00ffff;">let*</span> ((patterns '((<span style="color: #ffa07a;">"type"</span> <span style="color: #ffa07a;">"^type *</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">[</span><span style="color: #ffa07a;">^</span><span style="color: #ffa07a;"> \t\n\r\f]*</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">"</span> 1)))
|
|
(type-index (imenu--generic-function patterns))
|
|
(func-index))
|
|
(<span style="color: #00ffff;">save-excursion</span>
|
|
(goto-char (point-min))
|
|
(<span style="color: #00ffff;">while</span> (re-search-forward go-func-meth-regexp (point-max) t)
|
|
(<span style="color: #00ffff;">let*</span> ((var (match-string-no-properties 1))
|
|
(func (match-string-no-properties 2))
|
|
(name (<span style="color: #00ffff;">if</span> var
|
|
(concat (substring var 0 -1) <span style="color: #ffa07a;">"."</span> func)
|
|
func))
|
|
(beg (match-beginning 0))
|
|
(marker (copy-marker beg))
|
|
(item (cons name marker)))
|
|
(<span style="color: #00ffff;">setq</span> func-index (cons item func-index)))))
|
|
(nconc type-index (list (cons <span style="color: #ffa07a;">"func"</span> func-index)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:go-workspace-path</span> ()
|
|
(file-relative-name (projectile-project-root)
|
|
(concat (file-name-as-directory
|
|
(imalison:get-go-path)) <span style="color: #ffa07a;">"src"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:install-current-go-project</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(start-process
|
|
<span style="color: #ffa07a;">"go install"</span> <span style="color: #ffa07a;">"go install log"</span> <span style="color: #ffa07a;">"go"</span> <span style="color: #ffa07a;">"install"</span>
|
|
(concat (file-name-as-directory (imalison:go-workspace-path)) <span style="color: #ffa07a;">"..."</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:get-go-path</span> ()
|
|
(<span style="color: #00ffff;">let</span> ((environment-go-path (getenv <span style="color: #ffa07a;">"GOPATH"</span>)))
|
|
(<span style="color: #00ffff;">if</span> environment-go-path
|
|
(file-name-as-directory (car (s-split <span style="color: #ffa07a;">":"</span> environment-go-path)))
|
|
<span style="color: #ffa07a;">"~/go"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">imalison:get-go-src</span> (<span style="color: #98fb98;">&rest</span> paths)
|
|
`(imalison:join-paths (imalison:get-go-path) <span style="color: #ffa07a;">"src"</span> ,@paths))
|
|
|
|
(<span style="color: #00ffff;">imalison:let-advise-around</span> imalison:advise-normal-go-command
|
|
(go-command <span style="color: #ffa07a;">"go"</span>))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:go-mode-hook</span> ()
|
|
(go-eldoc-setup)
|
|
(set (make-local-variable 'company-backends) '(company-go))
|
|
(make-local-variable 'projectile-globally-ignored-files)
|
|
(add-hook 'after-save-hook 'imalison:install-current-go-project nil
|
|
'yes-do-local)
|
|
(add-to-list 'projectile-globally-ignored-files
|
|
<span style="color: #ffa07a;">"vendor"</span>)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">imalison:use-package*</span>
|
|
gotest <span style="color: #ffa07a;">"~/Projects/gotest.el"</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> go-mode-map
|
|
(<span style="color: #ffa07a;">"C-c t"</span> . imalison:gotest))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:gotest
|
|
go-test-current-test
|
|
go-test-current-file)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:add-expected-test-name-for-suite</span> (suite-name test-name)
|
|
(<span style="color: #00ffff;">if</span> (> (length suite-name) 0)
|
|
(concat <span style="color: #ffa07a;">" -run Test"</span> suite-name)
|
|
<span style="color: #ffa07a;">""</span>)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> go-test-verbose t
|
|
go-test-additional-arguments-function
|
|
'imalison:add-expected-test-name-for-suite)))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-go</span>
|
|
<span style="color: #b0c4de;">:config</span> (<span style="color: #00ffff;">setq</span> company-go-show-annotation t))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">go-projectile</span> <span style="color: #b0c4de;">:demand</span> t)
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">go-eldoc</span> <span style="color: #b0c4de;">:demand</span> t)
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">go-guru</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> go-mode-map
|
|
(<span style="color: #ffa07a;">"M-."</span> . go-guru-definition)
|
|
(<span style="color: #ffa07a;">"M-,"</span> . pop-tag-mark))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-go-guru-scope</span> ()
|
|
(<span style="color: #00ffff;">setq</span> go-guru-scope (go-mode-parse-glide-novendor)))
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">go-mode-parse-glide-novendor</span> ()
|
|
(s-join <span style="color: #ffa07a;">","</span>
|
|
(<span style="color: #00ffff;">cl-loop</span> for path in (s-split <span style="color: #ffa07a;">"\n"</span> (imalison:glide-novendor))
|
|
collect (<span style="color: #00ffff;">if</span> (string-equal path <span style="color: #ffa07a;">"."</span>)
|
|
(imalison:go-workspace-path)
|
|
(s-replace <span style="color: #ffa07a;">"\./"</span> (imalison:go-workspace-path) path))))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(advice-add 'go-guru--set-scope-if-empty <span style="color: #b0c4de;">:before</span> 'imalison:set-go-guru-scope)
|
|
(advice-add 'go-guru-start <span style="color: #b0c4de;">:before</span> 'imalison:set-go-guru-scope)
|
|
(advice-add 'go-guru-definition <span style="color: #b0c4de;">:around</span> 'imalison:advise-normal-go-command)
|
|
(advice-add 'go-guru-definition <span style="color: #b0c4de;">:before</span>
|
|
(<span style="color: #00ffff;">lambda</span> ()
|
|
(with-no-warnings
|
|
(ring-insert find-tag-marker-ring (point-marker)))))))
|
|
|
|
(advice-add 'go-import-add <span style="color: #b0c4de;">:around</span> 'imalison:advise-normal-go-command)
|
|
|
|
(<span style="color: #00ffff;">setq</span> gofmt-command <span style="color: #ffa07a;">"goimports"</span>)
|
|
|
|
(add-hook 'go-mode-hook 'imalison:go-mode-hook)
|
|
(add-hook 'before-save-hook 'gofmt-before-save t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-showdiffsoftestifyoutput" class="outline-5">
|
|
<h5 id="showdiffsoftestifyoutput"><span class="section-number-5">12.1.2.1</span> Show diffs of testify output</h5>
|
|
<div class="outline-text-5" id="text-12-1-2-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:testify-ediff-buffers</span> nil)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:purge-ediff-buffers</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">cl-loop</span> for buffer in imalison:testify-ediff-buffers
|
|
do (kill-buffer buffer))
|
|
(<span style="color: #00ffff;">setq</span> imalison:testify-ediff-buffers nil))
|
|
|
|
(add-hook 'ediff-cleanup-hook 'imalison:purge-ediff-buffers)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:go-testify-show-ediff</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((buffer (get-buffer-create <span style="color: #ffa07a;">"*Testify JSON*"</span>))
|
|
json-result)
|
|
(shell-command-on-region (point-min) (point-max) <span style="color: #ffa07a;">"parse_go_testify_for_emacs.py"</span> buffer)
|
|
(<span style="color: #00ffff;">with-current-buffer</span> buffer
|
|
(goto-char (point-min))
|
|
(<span style="color: #00ffff;">setq</span> json-result (json-read)))
|
|
(<span style="color: #00ffff;">let</span> ((actual-buffer (generate-new-buffer <span style="color: #ffa07a;">"*Testify Actual*"</span>))
|
|
(expected-buffer (generate-new-buffer <span style="color: #ffa07a;">"*Testify Expected*"</span>)))
|
|
(add-to-list 'imalison:testify-ediff-buffers actual-buffer)
|
|
(add-to-list 'imalison:testify-ediff-buffers expected-buffer)
|
|
(<span style="color: #00ffff;">with-current-buffer</span> actual-buffer
|
|
(insert (cdr (assoc 'actual json-result)))
|
|
(<span style="color: #00ffff;">with-current-buffer</span> expected-buffer
|
|
(insert (cdr (assoc 'expected json-result)))
|
|
(ediff-buffers actual-buffer expected-buffer))))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:go-testify-show-icdiff</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((buffer (get-buffer-create <span style="color: #ffa07a;">"*Testify Comparison*"</span>)))
|
|
(shell-command-on-region (point-min) (point-max) <span style="color: #ffa07a;">"parse_go_testify_not_equal.py"</span> buffer)
|
|
(<span style="color: #00ffff;">with-current-buffer</span> buffer
|
|
(fundamental-ansi-mode))
|
|
(switch-to-buffer buffer)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-emacslisp" class="outline-4">
|
|
<h4 id="emacslisp"><span class="section-number-4">12.1.3</span> emacs-lisp</h4>
|
|
<div class="outline-text-4" id="text-12-1-3">
|
|
</div><div id="outline-container-elispslimenav" class="outline-5">
|
|
<h5 id="elispslimenav"><span class="section-number-5">12.1.3.1</span> elisp-slime-nav</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">elisp-slime-nav</span>
|
|
<span style="color: #b0c4de;">:commands</span> elisp-slime-nav-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(diminish 'elisp-slime-nav-mode)
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:elisp-slime-nav
|
|
elisp-slime-nav-find-elisp-thing-at-point
|
|
elisp-slime-nav-describe-elisp-thing-at-point)
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> elisp-slime-nav-mode-map
|
|
(<span style="color: #ffa07a;">"M-."</span> . imalison:elisp-slime-nav)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-macrostep" class="outline-5">
|
|
<h5 id="macrostep"><span class="section-number-5">12.1.3.2</span> macrostep</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-2">
|
|
<p>
|
|
Macrostep is an indespensible tool for writing emacs lisp macros. It lets you see pretty printed versions of the result of macro evaluation as the macro is evaluated
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">macrostep</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> lisp-mode-shared-map
|
|
(<span style="color: #ffa07a;">"C-c e"</span> . macrostep-expand)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-emr" class="outline-5">
|
|
<h5 id="emr"><span class="section-number-5">12.1.3.3</span> emr</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">emr</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"M-RET"</span> . emr-show-refactor-menu)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'prog-mode-hook 'emr-initialize)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-editingconfiguration" class="outline-5">
|
|
<h5 id="editingconfiguration"><span class="section-number-5">12.1.3.4</span> Editing configuration</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-4">
|
|
<p>
|
|
Reduce indentation for some functions
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(put 'use-package 'lisp-indent-function 1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-checkdoc" class="outline-5">
|
|
<h5 id="checkdoc"><span class="section-number-5">12.1.3.5</span> Checkdoc</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> checkdoc-force-docstrings-flag nil
|
|
checkdoc-arguments-in-order-flag nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-edebug" class="outline-5">
|
|
<h5 id="edebug"><span class="section-number-5">12.1.3.6</span> edebug</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">edebug</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span> (<span style="color: #00ffff;">setq</span> edebug-trace t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-overseer" class="outline-5">
|
|
<h5 id="overseer"><span class="section-number-5">12.1.3.7</span> overseer</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">overseer</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-misc1" class="outline-5">
|
|
<h5 id="misc1"><span class="section-number-5">12.1.3.8</span> Misc</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imenu-elisp-sections</span> ()
|
|
(<span style="color: #00ffff;">setq</span> imenu-prev-index-position-function nil)
|
|
(<span style="color: #00ffff;">setq</span> imenu-space-replacement nil)
|
|
(add-to-list 'imenu-generic-expression
|
|
`(<span style="color: #ffa07a;">"Package"</span>
|
|
,<span style="color: #ffa07a;">"(use-package </span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">.+</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">$"</span> 1))
|
|
(add-to-list 'imenu-generic-expression
|
|
`(<span style="color: #ffa07a;">"Section"</span>
|
|
,(concat <span style="color: #ffa07a;">";\\{1,4\\} =\\{10,80\\}\n;\\{1,4\\} \\{10,80\\}"</span>
|
|
<span style="color: #ffa07a;">"</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">.+</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">$"</span>) <span style="color: #ffc0cb; font-weight: bold;">1) t))</span>
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:maybe-remove-flycheck-checkdoc-checker</span> ()
|
|
(<span style="color: #00ffff;">when</span> (s-starts-with? <span style="color: #ffa07a;">"*"</span> (buffer-name))
|
|
(flycheck-disable-checker 'emacs-lisp-checkdoc)))
|
|
|
|
(add-hook 'emacs-lisp-mode-hook 'imenu-elisp-sections)
|
|
(add-hook 'emacs-lisp-mode-hook (<span style="color: #00ffff;">lambda</span> ()
|
|
(<span style="color: #00ffff;">setq</span> indent-tabs-mode nil)
|
|
(<span style="color: #00ffff;">setq</span> show-trailing-whitespace t)))
|
|
(add-hook 'flycheck-mode-hook 'imalison:maybe-remove-flycheck-checkdoc-checker)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-showresultofevallastsexpinline" class="outline-5">
|
|
<h5 id="showresultofevallastsexpinline"><span class="section-number-5">12.1.3.9</span> Show result of eval-last-sexp inline</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-9">
|
|
<p>
|
|
Taken from <a href="http://endlessparentheses.com/eval-result-overlays-in-emacs-lisp.html">http://endlessparentheses.com/eval-result-overlays-in-emacs-lisp.html</a>
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(autoload 'cider--make-result-overlay <span style="color: #ffa07a;">"cider-overlays"</span>)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:eval-overlay</span> (value point)
|
|
(cider--make-result-overlay (format <span style="color: #ffa07a;">"%S"</span> value)
|
|
<span style="color: #b0c4de;">:where</span> point
|
|
<span style="color: #b0c4de;">:duration</span> 'command)
|
|
value)
|
|
|
|
(advice-add 'eval-region <span style="color: #b0c4de;">:around</span>
|
|
(<span style="color: #00ffff;">lambda</span> (f beg end <span style="color: #98fb98;">&rest</span> r)
|
|
(imalison:eval-overlay
|
|
(apply f beg end r)
|
|
end)))
|
|
|
|
(advice-add 'eval-last-sexp <span style="color: #b0c4de;">:filter-return</span>
|
|
(<span style="color: #00ffff;">lambda</span> (r)
|
|
(imalison:eval-overlay r (point))))
|
|
|
|
(advice-add 'eval-defun <span style="color: #b0c4de;">:filter-return</span>
|
|
(<span style="color: #00ffff;">lambda</span> (r)
|
|
(imalison:eval-overlay
|
|
r
|
|
(<span style="color: #00ffff;">save-excursion</span>
|
|
(end-of-defun)
|
|
(point)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-reevalutedefvarswhenrunningevallastsexp" class="outline-5">
|
|
<h5 id="reevalutedefvarswhenrunningevallastsexp"><span class="section-number-5">12.1.3.10</span> Reevalute defvars when running eval-last-sexp</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-10">
|
|
<p>
|
|
We noflet elisp–preceding-sexp to munge defvars into sexps only for
|
|
eval-last-sexp.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:maybe-setq-instead</span> (fn <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">noflet</span> ((elisp--preceding-sexp (<span style="color: #98fb98;">&rest</span> preceding-args)
|
|
(<span style="color: #00ffff;">let*</span> ((preceding-sexp (apply this-fn preceding-args)))
|
|
(<span style="color: #00ffff;">if</span> (<span style="color: #00ffff;">and</span> (listp preceding-sexp) (equal (car preceding-sexp) 'defvar))
|
|
`(<span style="color: #00ffff;">setq</span> ,@(cdr preceding-sexp))
|
|
preceding-sexp))))
|
|
(apply fn args)))
|
|
|
|
(advice-add 'eval-last-sexp <span style="color: #b0c4de;">:around</span> 'imalison:maybe-setq-instead)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-inithook" class="outline-5">
|
|
<h5 id="inithook"><span class="section-number-5">12.1.3.11</span> Init hook</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-11">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:check-parens</span> nil)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:maybe-check-parens</span> ()
|
|
(<span style="color: #00ffff;">if</span> imalison:check-parens
|
|
(check-parens)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:emacs-lisp-hook</span> ()
|
|
(elisp-slime-nav-mode t)
|
|
(add-hook 'write-file-functions 'imalison:maybe-check-parens nil t))
|
|
|
|
(add-hook 'emacs-lisp-mode-hook 'imalison:emacs-lisp-hook)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-keybinds" class="outline-5">
|
|
<h5 id="keybinds"><span class="section-number-5">12.1.3.12</span> Keybinds</h5>
|
|
<div class="outline-text-5" id="text-12-1-3-12">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">emit-compose</span> imalison:copy-eval-last-sexp
|
|
kill-new prin1-to-string eval-last-sexp)
|
|
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:eval-last-sexp
|
|
eval-region-or-last-sexp
|
|
imalison:copy-eval-last-sexp)
|
|
|
|
(define-key lisp-mode-shared-map (kbd <span style="color: #ffa07a;">"C-c C-c"</span>) 'eval-defun)
|
|
(define-key lisp-mode-shared-map (kbd <span style="color: #ffa07a;">"C-c o r"</span>) 'up-list-region)
|
|
(define-key lisp-mode-shared-map (kbd <span style="color: #ffa07a;">"C-c o o"</span>) 'up-list-back)
|
|
(define-key lisp-mode-shared-map (kbd <span style="color: #ffa07a;">"C-x C-e"</span>) 'imalison:eval-last-sexp)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> lisp-interaction-mode-map)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-clojure" class="outline-4">
|
|
<h4 id="clojure"><span class="section-number-4">12.1.4</span> clojure</h4>
|
|
<div class="outline-text-4" id="text-12-1-4">
|
|
<p>
|
|
The following is taken from <a href="https://github.com/syl20bnr/spacemacs/blob/a650877bea582fed72bbca0dc1f80fcb2ec0e6d5/layers/+lang/clojure/funcs.el#L30">spacemacs</a>. It adds fancification to a clojure mode.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:clojure-fancify-symbols</span> (mode)
|
|
<span style="color: #ffa07a;">"Pretty symbols for Clojure's anonymous functions and sets,</span>
|
|
<span style="color: #ffa07a;"> like (λ [a] (+ a 5)), ƒ(+ % 5), and ∈{2 4 6}."</span>
|
|
(font-lock-add-keywords mode
|
|
`((<span style="color: #ffa07a;">"(</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">fn</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">[\n\[[:space:]]"</span>
|
|
(0 (<span style="color: #00ffff;">progn</span> (compose-region (match-beginning 1)
|
|
(match-end 1) <span style="color: #ffa07a;">"λ"</span>))))
|
|
(<span style="color: #ffa07a;">"(</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">partial</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">[\[[:space:]]"</span>
|
|
(0 (<span style="color: #00ffff;">progn</span> (compose-region (match-beginning 1)
|
|
(match-end 1) <span style="color: #ffa07a;">"Ƥ"</span>))))
|
|
(<span style="color: #ffa07a;">"(</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">comp</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">[\n\[[:space:]]"</span>
|
|
(0 (<span style="color: #00ffff;">progn</span> (compose-region (match-beginning 1)
|
|
(match-end 1) <span style="color: #ffa07a;">"∘"</span>))))
|
|
(<span style="color: #ffa07a;">"</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">#</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">("</span>
|
|
(0 (<span style="color: #00ffff;">progn</span> (compose-region (match-beginning 1)
|
|
(match-end 1) <span style="color: #ffa07a;">"ƒ"</span>))))
|
|
(<span style="color: #ffa07a;">"</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">(</span><span style="color: #ffa07a;">#</span><span style="color: #ffa07a; font-weight: bold;">\\</span><span style="color: #ffa07a; font-weight: bold;">)</span><span style="color: #ffa07a;">{"</span>
|
|
(0 (<span style="color: #00ffff;">progn</span> (compose-region (match-beginning 1)
|
|
(match-end 1) <span style="color: #ffa07a;">"∈"</span>)))))))
|
|
</pre>
|
|
</div>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">clojure-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> clojure-mode
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-to-list 'magic-mode-alist '(<span style="color: #ffa07a;">"#!.*boot\\s-*$"</span> . clojure-mode))
|
|
(add-to-list 'auto-mode-alist '(<span style="color: #ffa07a;">"\\.boot\\'"</span> . clojure-mode))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:clojure-mode-hook</span> ()
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(cljr-add-keybindings-with-prefix "C-c C-m")</span>
|
|
(clj-refactor-mode 1)
|
|
<span style="color: #ff7f24;">;;</span><span style="color: #ff7f24;">for adding require/use/import statements</span>
|
|
(yas-minor-mode 1))
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:clojure-level-1-symobls</span>
|
|
'(describe <span style="color: #eedd82;">it</span>)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">cl-loop</span> for symbol in imalison:clojure-level-1-symobls
|
|
do (put-clojure-indent symbol 1))
|
|
(add-hook 'clojure-mode-hook 'imalison:clojure-mode-hook)
|
|
(<span style="color: #00ffff;">dolist</span> (m '(clojure-mode clojurescript-mode clojurec-mode clojurex-mode))
|
|
(imalison:clojure-fancify-symbols m))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-cider" class="outline-5">
|
|
<h5 id="cider"><span class="section-number-5">12.1.4.1</span> cider</h5>
|
|
<div class="outline-text-5" id="text-12-1-4-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">cider</span>
|
|
<span style="color: #b0c4de;">:commands</span> (cider-jack-in)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> cider-stacktrace-default-filters '(tooling dup)
|
|
cider-repl-pop-to-buffer-on-connect nil
|
|
cider-prompt-save-file-on-load nil
|
|
cider-repl-use-clojure-font-lock t
|
|
cider-prompt-for-symbol nil
|
|
cider-preferred-build-tool <span style="color: #ffa07a;">"boot"</span>)
|
|
(add-hook 'clojure-mode-hook 'cider-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-cljrefactor" class="outline-5">
|
|
<h5 id="cljrefactor"><span class="section-number-5">12.1.4.2</span> clj-refactor</h5>
|
|
<div class="outline-text-5" id="text-12-1-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">clj-refactor</span>
|
|
<span style="color: #b0c4de;">:commands</span> clj-refactor-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-scala" class="outline-4">
|
|
<h4 id="scala"><span class="section-number-4">12.1.5</span> scala</h4>
|
|
<div class="outline-text-4" id="text-12-1-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">scala-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.scala\\'"</span> . scala-mode)
|
|
(<span style="color: #ffa07a;">"\\.sc\\'"</span> . scala-mode))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ensime</span>
|
|
<span style="color: #b0c4de;">:pin</span> melpa-stable
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> ensime-mode-map
|
|
(<span style="color: #ffa07a;">"M-,"</span> . ensime-pop-find-definition-stack))
|
|
<span style="color: #b0c4de;">:commands</span> ensime-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> ensime-startup-snapshot-notification nil)))
|
|
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
|
|
(<span style="color: #00ffff;">setq</span> scala-indent:align-parameters t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-js" class="outline-4">
|
|
<h4 id="js"><span class="section-number-4">12.1.6</span> js</h4>
|
|
<div class="outline-text-4" id="text-12-1-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">tape-onlyify</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">save-excursion</span>
|
|
(move-end-of-line nil)
|
|
(re-search-backward <span style="color: #ffa07a;">"^test"</span>)
|
|
(forward-sexp)
|
|
(<span style="color: #00ffff;">if</span> (looking-at <span style="color: #ffa07a;">".only"</span>) (<span style="color: #00ffff;">progn</span> (zap-to-char 1 (string-to-char <span style="color: #ffa07a;">"("</span>)) (insert <span style="color: #ffa07a;">"("</span>))
|
|
(insert <span style="color: #ffa07a;">".only"</span>))))
|
|
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">js2-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> (js2-mode)
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.js\\'"</span>
|
|
<span style="color: #b0c4de;">:bind</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(("C-c b" . web-beautify-js)) TODO: to make this mode specific</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">and change binding</span>
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defvar-setq</span> imalison:identifier-count 0)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:console-log-unique</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let*</span> ((identifier-string (int-to-string imalison:identifier-count))
|
|
(uuid (imalison:uuid)))
|
|
(insert (format <span style="color: #ffa07a;">"console.log('%s//////////%s//////////');"</span> identifier-string uuid))
|
|
(<span style="color: #00ffff;">setq</span> imalison:identifier-count (+ imalison:identifier-count 1))))
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:js2-mode-hook</span> ()
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Sensible defaults</span>
|
|
(<span style="color: #00ffff;">setq</span> js2-bounce-indent-p nil
|
|
js2-indent-level 4
|
|
js2-basic-offset 4
|
|
js2-highlight-level 3
|
|
js2-include-node-externs t
|
|
js2-mode-show-parse-errors nil
|
|
js2-mode-show-strict-warnings nil
|
|
indent-tabs-mode nil
|
|
js2-indent-switch-body t)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(edconf-find-file-hook) ;; Make sure that editorconfig takes precedence</span>
|
|
(tern-mode t)
|
|
(<span style="color: #00ffff;">when</span> nil (skewer-mode)) <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO: reenable</span>
|
|
(<span style="color: #00ffff;">setq</span> imenu-create-index-function
|
|
(<span style="color: #00ffff;">lambda</span> ()
|
|
(imalison:flatten-imenu-index
|
|
(js2-mode-create-imenu-index))))))
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'js2-mode-hook 'imalison:js2-mode-hook)
|
|
(add-hook 'js2-mode-hook 'js2-imenu-extras-mode)))
|
|
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">js2-refactor</span>
|
|
<span style="color: #b0c4de;">:after</span> js2-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(js2r-add-keybindings-with-prefix <span style="color: #ffa07a;">"C-c C-m"</span>)
|
|
(add-hook 'js2-mode-hook #'js2-refactor-mode)))
|
|
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">skewer-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> skewer-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'css-mode-hook #'skewer-css-mode)
|
|
(add-hook 'html-mode-hook #'skewer-html-mode)))
|
|
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">tern</span>
|
|
<span style="color: #b0c4de;">:commands</span> tern-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-tern</span>
|
|
<span style="color: #b0c4de;">:config</span> (add-to-list 'company-backends 'company-tern)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">delete-tern-process</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(delete-process <span style="color: #ffa07a;">"tern"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-rust" class="outline-4">
|
|
<h4 id="rust"><span class="section-number-4">12.1.7</span> rust</h4>
|
|
<div class="outline-text-4" id="text-12-1-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">rust-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.rs\\'"</span> . rust-mode))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:rust-mode-hook</span> ()
|
|
(racer-mode 1)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flycheck-rust</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'flycheck-mode-hook #'flycheck-rust-setup)))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">racer</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> racer-cmd <span style="color: #ffa07a;">"~/.cargo/bin/racer"</span>)
|
|
(<span style="color: #00ffff;">setq</span> racer-rust-src-path <span style="color: #ffa07a;">"~/Projects/rust/src"</span>)))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">cargo</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'rust-mode-hook 'cargo-minor-mode)))
|
|
(add-hook 'rust-mode-hook 'imalison:rust-mode-hook)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-haskell" class="outline-4">
|
|
<h4 id="haskell"><span class="section-number-4">12.1.8</span> haskell</h4>
|
|
<div class="outline-text-4" id="text-12-1-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">haskell-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> haskell-mode
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> haskell-mode-map
|
|
(<span style="color: #ffa07a;">"C-c h"</span> . haskell-hoogle))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> haskell-hoogle-command <span style="color: #ffa07a;">"hoogle"</span>)
|
|
(<span style="color: #00ffff;">setq</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Use notify.el (if you have it installed) at the end of running</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Cabal commands or generally things worth notifying.</span>
|
|
haskell-notify-p t
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Remove annoying error popups</span>
|
|
haskell-interactive-popup-errors nil
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Better import handling</span>
|
|
haskell-process-suggest-remove-import-lines t
|
|
haskell-process-auto-import-loaded-modules t
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Disable haskell-stylish-on-save, as it breaks flycheck highlighting.</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">NOTE: May not be true anymore - taksuyu 2015-10-06</span>
|
|
haskell-stylish-on-save nil)
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">flycheck</span>)
|
|
(delq 'haskell-stack-ghc flycheck-checkers)
|
|
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
|
|
(<span style="color: #00ffff;">setq</span> haskell-tags-on-save t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-intero" class="outline-5">
|
|
<h5 id="intero"><span class="section-number-5">12.1.8.1</span> intero</h5>
|
|
<div class="outline-text-5" id="text-12-1-8-1">
|
|
<p>
|
|
Intero seems to be causing hangs, so it has been disabled
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">intero</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:after</span> haskell-mode
|
|
<span style="color: #b0c4de;">:config</span> (add-hook 'haskell-mode-hook 'intero-mode))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-hindent" class="outline-5">
|
|
<h5 id="hindent"><span class="section-number-5">12.1.8.2</span> hindent</h5>
|
|
<div class="outline-text-5" id="text-12-1-8-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">hindent</span>
|
|
<span style="color: #b0c4de;">:after</span> haskell-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> hindent-style <span style="color: #ffa07a;">"chris-done"</span>)
|
|
(add-hook 'haskell-mode-hook 'hindent-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-ghcmod" class="outline-5">
|
|
<h5 id="ghcmod"><span class="section-number-5">12.1.8.3</span> ghc-mod</h5>
|
|
<div class="outline-text-5" id="text-12-1-8-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ghc</span>
|
|
<span style="color: #b0c4de;">:after</span> haskell-mode
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> ghc-debug t)
|
|
(add-hook 'haskell-mode-hook 'ghc-init)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-companyghc" class="outline-5">
|
|
<h5 id="companyghc"><span class="section-number-5">12.1.8.4</span> company-ghc</h5>
|
|
<div class="outline-text-5" id="text-12-1-8-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-ghc</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(add-to-list 'company-backends '(company-ghc <span style="color: #b0c4de;">:with</span> company-dabbrev-code)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-cc" class="outline-4">
|
|
<h4 id="cc"><span class="section-number-4">12.1.9</span> C/C++</h4>
|
|
<div class="outline-text-4" id="text-12-1-9">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">cc-mode</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:cc-mode-hook</span> ()
|
|
(<span style="color: #00ffff;">when</span> (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode)
|
|
(ggtags-mode 1)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ggtags</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> ggtags-mode-map
|
|
(<span style="color: #ffa07a;">"C-c g s"</span> . ggtags-find-other-symbol)
|
|
(<span style="color: #ffa07a;">"C-c g h"</span> . ggtags-view-tag-history)
|
|
(<span style="color: #ffa07a;">"C-c g r"</span> . ggtags-find-reference)
|
|
(<span style="color: #ffa07a;">"C-c g f"</span> . ggtags-find-file)
|
|
(<span style="color: #ffa07a;">"C-c g c"</span> . ggtags-create-tags)
|
|
(<span style="color: #ffa07a;">"C-c g u"</span> . ggtags-update-tags)
|
|
(<span style="color: #ffa07a;">"M-,"</span> . pop-tag-mark)))
|
|
(add-hook 'c-mode-common-hook 'imalison:cc-mode-hook)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-c" class="outline-4">
|
|
<h4 id="c"><span class="section-number-4">12.1.10</span> C#</h4>
|
|
<div class="outline-text-4" id="text-12-1-10">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">csharp-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.cs\\'"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-racket" class="outline-4">
|
|
<h4 id="racket"><span class="section-number-4">12.1.11</span> racket</h4>
|
|
<div class="outline-text-4" id="text-12-1-11">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">racket-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.rkt\\'"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-dataconfigprotocol" class="outline-3">
|
|
<h3 id="dataconfigprotocol"><span class="section-number-3">12.2</span> Data/Config/Protocol</h3>
|
|
<div class="outline-text-3" id="text-12-2">
|
|
</div><div id="outline-container-thrift" class="outline-4">
|
|
<h4 id="thrift"><span class="section-number-4">12.2.1</span> thrift</h4>
|
|
<div class="outline-text-4" id="text-12-2-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">thrift</span>
|
|
<span style="color: #b0c4de;">:commands</span> thrift-mode
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.thrift\\'"</span> . thrift-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-protobuf" class="outline-4">
|
|
<h4 id="protobuf"><span class="section-number-4">12.2.2</span> protobuf</h4>
|
|
<div class="outline-text-4" id="text-12-2-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">protobuf-mode</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-jsonmode" class="outline-4">
|
|
<h4 id="jsonmode"><span class="section-number-4">12.2.3</span> json-mode</h4>
|
|
<div class="outline-text-4" id="text-12-2-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">json-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.json\\'"</span>
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(add-hook 'json-mode-hook
|
|
(<span style="color: #00ffff;">lambda</span> ()
|
|
(<span style="color: #00ffff;">setq</span> indent-tabs-mode nil)
|
|
(<span style="color: #00ffff;">setq</span> js-indent-level 4))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-yamlmode" class="outline-4">
|
|
<h4 id="yamlmode"><span class="section-number-4">12.2.4</span> yaml-mode</h4>
|
|
<div class="outline-text-4" id="text-12-2-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">yaml-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.yaml\\'"</span> . yaml-mode)
|
|
(<span style="color: #ffa07a;">"\\.yml\\'"</span> . yaml-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-esmode" class="outline-4">
|
|
<h4 id="esmode"><span class="section-number-4">12.2.5</span> es-mode</h4>
|
|
<div class="outline-text-4" id="text-12-2-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">es-mode</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-document" class="outline-3">
|
|
<h3 id="document"><span class="section-number-3">12.3</span> Document</h3>
|
|
<div class="outline-text-3" id="text-12-3">
|
|
</div><div id="outline-container-org" class="outline-4">
|
|
<h4 id="org"><span class="section-number-4">12.3.1</span> org</h4>
|
|
<div class="outline-text-4" id="text-12-3-1">
|
|
</div><div id="outline-container-config" class="outline-5">
|
|
<h5 id="config"><span class="section-number-5">12.3.1.1</span> config</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org</span>
|
|
<span style="color: #b0c4de;">:ensure</span> org-plus-contrib
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> org-mode-map
|
|
((<span style="color: #ffa07a;">"C-e"</span> . end-of-visual-line)))
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">XXX: These should probably be moved to config, right?</span>
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-startup-indented nil)
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-startup-folded t)
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-edit-src-content-indentation 0)
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-src-preserve-indentation t)
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-directory <span style="color: #ffa07a;">"~/Dropbox/org"</span>)
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-mobile-inbox-for-pull <span style="color: #ffa07a;">"~/Dropbox/org/flagged.org"</span>)
|
|
(<span style="color: #00ffff;">defvar-setq</span> org-mobile-directory <span style="color: #ffa07a;">"~/Dropbox/Apps/MobileOrg"</span>)
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-goto-interface 'outline-path-completion
|
|
org-goto-max-level 10
|
|
org-export-headline-levels 3)
|
|
(add-hook 'org-mode-hook 'imalison:disable-linum-mode)
|
|
(add-hook 'org-mode-hook (<span style="color: #00ffff;">lambda</span> () (<span style="color: #00ffff;">setq</span> org-todo-key-trigger t)))
|
|
(add-hook 'org-agenda-mode-hook 'imalison:disable-linum-mode)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-archive-if</span> (condition-function)
|
|
(<span style="color: #00ffff;">if</span> (funcall condition-function)
|
|
(<span style="color: #00ffff;">let</span> ((next-point-marker
|
|
(<span style="color: #00ffff;">save-excursion</span> (org-forward-heading-same-level 1) (point-marker))))
|
|
(org-archive-subtree)
|
|
(<span style="color: #00ffff;">setq</span> org-map-continue-from (marker-position next-point-marker)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-archive-if-completed</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(org-archive-if 'org-entry-is-done-p))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-archive-completed-in-buffer</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(org-map-entries 'org-archive-if-completed))
|
|
|
|
(<span style="color: #00ffff;">cl-defun</span> <span style="color: #87cefa;">imalison:make-org-template</span> (<span style="color: #98fb98;">&key</span> (content <span style="color: #ffa07a;">"%?"</span>))
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(org-mode)
|
|
(insert content)
|
|
(org-set-property <span style="color: #ffa07a;">"CREATED"</span>
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(org-insert-time-stamp
|
|
(org-current-effective-time) t t)))
|
|
(buffer-substring-no-properties (point-min) (point-max))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:make-org-template-from-file</span> (filename)
|
|
(imalison:make-org-template (imalison:get-string-from-file filename)))
|
|
|
|
(<span style="color: #00ffff;">cl-defun</span> <span style="color: #87cefa;">imalison:make-org-todo-template</span>
|
|
(<span style="color: #98fb98;">&key</span> (content <span style="color: #ffa07a;">"%?"</span>) (creation-state <span style="color: #ffa07a;">"TODO"</span>))
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(org-mode)
|
|
(org-insert-heading)
|
|
(insert content)
|
|
(org-todo creation-state)
|
|
(org-set-property <span style="color: #ffa07a;">"CREATED"</span>
|
|
(<span style="color: #00ffff;">with-temp-buffer</span>
|
|
(org-insert-time-stamp
|
|
(org-current-effective-time) t t)))
|
|
(remove-hook 'post-command-hook 'org-add-log-note)
|
|
(<span style="color: #00ffff;">let</span> ((org-log-note-purpose 'state)
|
|
(org-log-note-return-to (point-marker))
|
|
(org-log-note-marker (<span style="color: #00ffff;">progn</span> (goto-char (org-log-beginning t))
|
|
(point-marker)))
|
|
(org-log-note-state creation-state))
|
|
(org-add-log-note))
|
|
(buffer-substring-no-properties (point-min) (point-max))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-todo-force-notes</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((org-todo-log-states
|
|
(mapcar (<span style="color: #00ffff;">lambda</span> (state)
|
|
(list state 'note 'time))
|
|
(apply 'append org-todo-sets))))
|
|
(<span style="color: #00ffff;">cond</span> ((eq major-mode 'org-mode) (org-todo))
|
|
((eq major-mode 'org-agenda-mode) (org-agenda-todo)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-make-habit</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(org-set-property <span style="color: #ffa07a;">"STYLE"</span> <span style="color: #ffa07a;">"habit"</span>))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-insert-habit</span> ()
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(org-insert-todo-heading nil)
|
|
(org-make-habit))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-todo-at-date</span> (date)
|
|
(<span style="color: #00ffff;">interactive</span> (list (org-time-string-to-time (org-read-date))))
|
|
(<span style="color: #00ffff;">cl-flet</span> ((org-current-effective-time (<span style="color: #98fb98;">&rest</span> r) date)
|
|
(org-today (<span style="color: #98fb98;">&rest</span> r) (time-to-days date)))
|
|
(<span style="color: #00ffff;">cond</span> ((eq major-mode 'org-mode) (org-todo))
|
|
((eq major-mode 'org-agenda-mode) (org-agenda-todo)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:make-org-linked-todo-template</span> ()
|
|
(imalison:make-org-todo-template <span style="color: #ffa07a;">"%? %A"</span>))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-cmp-creation-times</span> (a b)
|
|
(<span style="color: #00ffff;">let</span> ((a-created (get-date-created-from-agenda-entry a))
|
|
(b-created (get-date-created-from-agenda-entry b)))
|
|
(imalison:compare-int-list a-created b-created)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-agenda-done</span> (<span style="color: #98fb98;">&optional</span> arg)
|
|
<span style="color: #ffa07a;">"Mark current TODO as done.</span>
|
|
<span style="color: #ffa07a;"> This changes the line at point, all other lines in the agenda referring to</span>
|
|
<span style="color: #ffa07a;"> the same tree node, and the headline of the tree node in the Org-mode file."</span>
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"P"</span>)
|
|
(org-agenda-todo <span style="color: #ffa07a;">"DONE"</span>)))
|
|
<span style="color: #b0c4de;">:commands</span> (org-mode org org-mobile-push org-mobile-pull org-agenda)
|
|
<span style="color: #b0c4de;">:mode</span> (<span style="color: #ffa07a;">"\\.org\\'"</span> . org-mode)
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-c a"</span> . org-agenda)
|
|
(<span style="color: #ffa07a;">"C-c c"</span> . org-capture)
|
|
<span style="color: #b0c4de;">:map</span> org-mode-map
|
|
(<span style="color: #ffa07a;">"C-c n t"</span> . org-insert-todo-heading)
|
|
(<span style="color: #ffa07a;">"C-c n s"</span> . org-insert-todo-subheading)
|
|
(<span style="color: #ffa07a;">"C-c n h"</span> . org-insert-habit)
|
|
(<span style="color: #ffa07a;">"C-c n m"</span> . org-make-habit)
|
|
(<span style="color: #ffa07a;">"C-c n l"</span> . org-store-link)
|
|
(<span style="color: #ffa07a;">"C-c n i"</span> . org-insert-link)
|
|
(<span style="color: #ffa07a;">"C-c C-t"</span> . org-todo)
|
|
(<span style="color: #ffa07a;">"C-c C-S-t"</span> . org-todo-force-notes)
|
|
(<span style="color: #ffa07a;">"M-."</span> . elisp-slime-nav-find-elisp-thing-at-point))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> org-global-properties
|
|
'(<span style="color: #00ffff;">quote</span> ((<span style="color: #ffa07a;">"Effort_ALL"</span> . <span style="color: #ffa07a;">"0:15 0:30 0:45 1:00 2:00 3:00 4:00 5:00 6:00 0:00"</span>)
|
|
(<span style="color: #ffa07a;">"STYLE_ALL"</span> . <span style="color: #ffa07a;">"habit"</span>))))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Record changes to todo states</span>
|
|
(<span style="color: #00ffff;">setq</span> org-todo-keywords
|
|
'((sequence <span style="color: #ffa07a;">"IDEA(i!)"</span> <span style="color: #ffa07a;">"RESEARCH(r!)"</span> <span style="color: #ffa07a;">"TODO(t!)"</span> <span style="color: #ffa07a;">"NEXT(n!)"</span>
|
|
<span style="color: #ffa07a;">"STARTED(s!)"</span> <span style="color: #ffa07a;">"WAIT(w!)"</span> <span style="color: #ffa07a;">"BACKLOG(b!)"</span> <span style="color: #ffa07a;">"|"</span>
|
|
<span style="color: #ffa07a;">"DONE(d!)"</span> <span style="color: #ffa07a;">"HANDLED(h!)"</span> <span style="color: #ffa07a;">"EXPIRED(e!)"</span> <span style="color: #ffa07a;">"CANCELED(c!)"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defvar-setq</span> helm-org-headings-fontify t)
|
|
(<span style="color: #00ffff;">setq</span> org-todo-repeat-to-state <span style="color: #ffa07a;">"TODO"</span>)
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-span 10)
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-start-day <span style="color: #ffa07a;">"-2d"</span>)
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-columns-default-format
|
|
<span style="color: #ffa07a;">"%80ITEM(Task) %10Effort(Effort){:} %10CLOCKSUM"</span>)
|
|
|
|
(add-to-list 'org-show-context-detail '(org-goto . lineage))
|
|
(sp-local-pair 'org-mode <span style="color: #ffa07a;">"~"</span> <span style="color: #ffa07a;">"~"</span>)
|
|
|
|
(add-to-list
|
|
'org-src-lang-modes '(<span style="color: #ffa07a;">"plantuml"</span> . plantuml))
|
|
|
|
(org-babel-do-load-languages
|
|
'org-babel-load-languages
|
|
'((sh . t)
|
|
(python . t)
|
|
(ruby . t)
|
|
(octave . t)
|
|
(sqlite . t)
|
|
(plantuml . t)))
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-log-into-drawer t
|
|
org-log-reschedule t
|
|
org-log-redeadline t
|
|
org-treat-insert-todo-heading-as-state-change t)
|
|
|
|
(<span style="color: #00ffff;">when</span> nil
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Enable appointment notifications.</span>
|
|
(<span style="color: #00ffff;">defadvice</span> <span style="color: #87cefa;">org-agenda-to-appt</span> (before wickedcool activate)
|
|
<span style="color: #ffa07a;">"Clear the appt-time-msg-list."</span>
|
|
(<span style="color: #00ffff;">setq</span> appt-time-msg-list nil))
|
|
(appt-activate)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-agenda-to-appt-no-message</span> ()
|
|
(<span style="color: #00ffff;">shut-up</span> (org-agenda-to-appt)))
|
|
(run-at-time <span style="color: #ffa07a;">"00:00"</span> 60 'org-agenda-to-appt-no-message))
|
|
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Override the key definition for org-exit</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO why does this cause an error</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(define-key org-agenda-mode-map "x" #'org-agenda-done)</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">org-mode add-ons</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org-present</span>
|
|
<span style="color: #b0c4de;">:commands</span> org-present)
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org-pomodoro</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">variable configuration</span>
|
|
(add-to-list 'org-modules 'org-habit)
|
|
(add-to-list 'org-modules 'org-expiry)
|
|
(add-to-list 'org-modules 'org-notify)
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-src-fontify-natively t)
|
|
(<span style="color: #00ffff;">setq</span> org-habit-graph-column 50)
|
|
(<span style="color: #00ffff;">setq</span> org-habit-show-habits-only-for-today t)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">My priority system:</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">A - Absolutely MUST, at all costs, be completed by the provided</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">due date. TODO: implement some type of extreme nagging</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">system that alerts in an intrusive way for overdue A</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">priority tasks.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">B - Should be given immediate attention if the due date is any</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">time in the next two days. Failure to meet due date would</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">be bad but not catastrophic.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">C - The highest priority to which tasks for which failure to</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">complete on time would not have considerable significant</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">consequences. There is still significant reason to prefer</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">the completion of these tasks sooner rather than later.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">D - Failure to complete within a few days (or ever) of any</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">deadline would be completely okay. As such, any deadline</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">present on such a task is necessarily self imposed. Still</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">probably worth doing</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">E - Potentially not even worth doing at all, but worth taking a</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">note about in case it comes up again, or becomes more</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">interesting later.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">F - Almost certainly not worth attempting in the immediate future.</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Just brain dump.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Priorities are somewhat contextual within each category. Things</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">in the gtd or work categories are generally regarded as much</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">more important than things with the same priority from the</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">dotfiles category.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Items without deadlines or scheduled times of a given priority</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">can be regarded as less important than items that DO have</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">deadlines of that same priority.</span>
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-lowest-priority 69) <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">The character E</span>
|
|
(<span style="color: #00ffff;">setq</span> org-completion-use-ido t)
|
|
(<span style="color: #00ffff;">setq</span> org-enforce-todo-dependencies t)
|
|
(<span style="color: #00ffff;">setq</span> org-deadline-warning-days 0)
|
|
(<span style="color: #00ffff;">setq</span> org-default-priority ?D)
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-skip-scheduled-if-done t)
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-skip-deadline-if-done t)
|
|
<span style="color: #ff7f24;">;;</span><span style="color: #ff7f24;">(add-to-list org-agenda-tag-filter-preset "+PRIORITY<\"C\"")</span>
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-imenu-depth 10)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Stop starting agenda from deleting frame setup!</span>
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-window-setup 'other-window)
|
|
(define-key mode-specific-map [?a] 'org-agenda)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> org-mode-map)
|
|
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org-bullets</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'org-mode-hook (<span style="color: #00ffff;">lambda</span> () (org-bullets-mode 1)))))
|
|
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org-ehtml</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> org-ehtml-docroot (expand-file-name <span style="color: #ffa07a;">"~/Dropbox/org"</span>))
|
|
(<span style="color: #00ffff;">setq</span> org-ehtml-allow-agenda t)
|
|
(<span style="color: #00ffff;">setq</span> org-ehtml-editable-headlines t)
|
|
(<span style="color: #00ffff;">setq</span> org-ehtml-everything-editable t)))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Agenda setup.</span>
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:org-gtd-file</span> <span style="color: #ffa07a;">"~/org/gtd.org"</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:org-habits-file</span> <span style="color: #ffa07a;">"~/org/habits.org"</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:org-calendar-file</span> <span style="color: #ffa07a;">"~/org/calendar.org"</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:org-inbox-file</span> <span style="color: #ffa07a;">"~/org/inbox.org"</span>)
|
|
|
|
(<span style="color: #00ffff;">unless</span> (boundp 'org-capture-templates)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">org-capture-templates</span> nil))
|
|
|
|
(imalison:add-to-org-agenda-files
|
|
(list imalison:org-gtd-file imalison:org-habits-file
|
|
imalison:org-calendar-file imalison:org-inbox-file))
|
|
|
|
(add-to-list 'org-capture-templates
|
|
`(<span style="color: #ffa07a;">"t"</span> <span style="color: #ffa07a;">"GTD Todo (Linked)"</span> entry (file ,imalison:org-gtd-file)
|
|
(<span style="color: #00ffff;">function</span> imalison:make-org-linked-todo-template)))
|
|
|
|
(add-to-list 'org-capture-templates
|
|
`(<span style="color: #ffa07a;">"g"</span> <span style="color: #ffa07a;">"GTD Todo"</span> entry (file ,imalison:org-gtd-file)
|
|
(<span style="color: #00ffff;">function</span> imalison:make-org-todo-template)))
|
|
|
|
(add-to-list 'org-capture-templates
|
|
`(<span style="color: #ffa07a;">"y"</span> <span style="color: #ffa07a;">"Calendar entry (Linked)"</span> entry
|
|
(file ,imalison:org-calendar-file)
|
|
<span style="color: #ffa07a;">"* %? %A</span>
|
|
<span style="color: #ffa07a;"> :PROPERTIES:</span>
|
|
<span style="color: #ffa07a;"> :CREATED: %U</span>
|
|
<span style="color: #ffa07a;"> :END:</span>
|
|
<span style="color: #ffa07a;">%^T"</span>))
|
|
|
|
(add-to-list 'org-capture-templates
|
|
`(<span style="color: #ffa07a;">"c"</span> <span style="color: #ffa07a;">"Calendar entry"</span> entry
|
|
(file ,imalison:org-calendar-file)
|
|
<span style="color: #ffa07a;">"* %?</span>
|
|
<span style="color: #ffa07a;"> :PROPERTIES:</span>
|
|
<span style="color: #ffa07a;"> :CREATED: %U</span>
|
|
<span style="color: #ffa07a;"> :END:</span>
|
|
<span style="color: #ffa07a;">%^T"</span>))
|
|
|
|
(add-to-list 'org-capture-templates
|
|
`(<span style="color: #ffa07a;">"h"</span> <span style="color: #ffa07a;">"Habit"</span> entry (file ,imalison:org-habits-file)
|
|
<span style="color: #ffa07a;">"* TODO</span>
|
|
<span style="color: #ffa07a;"> SCHEDULED: %^t</span>
|
|
<span style="color: #ffa07a;"> :PROPERTIES:</span>
|
|
<span style="color: #ffa07a;"> :CREATED: %U</span>
|
|
<span style="color: #ffa07a;"> :STYLE: habit</span>
|
|
<span style="color: #ffa07a;"> :END:"</span>))
|
|
|
|
(<span style="color: #00ffff;">let</span> ((this-week-high-priority
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">The < in the following line works has behavior that is opposite</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">to what one might expect.</span>
|
|
'(tags-todo <span style="color: #ffa07a;">"+PRIORITY<\"C\"+DEADLINE<\"<+1w>\"DEADLINE>\"<+0d>\""</span>
|
|
((org-agenda-overriding-header
|
|
<span style="color: #ffa07a;">"Upcoming high priority tasks:"</span>))))
|
|
(due-today '(tags-todo
|
|
<span style="color: #ffa07a;">"+DEADLINE=<\"<+0d>\""</span>
|
|
((org-agenda-overriding-header
|
|
<span style="color: #ffa07a;">"Due today:"</span>))))
|
|
(recently-created '(tags-todo
|
|
<span style="color: #ffa07a;">"+CREATED=>\"<-3d>\""</span>
|
|
((org-agenda-overriding-header <span style="color: #ffa07a;">"Recently created:"</span>)
|
|
(org-agenda-cmp-user-defined 'org-cmp-creation-times)
|
|
(org-agenda-sorting-strategy '(user-defined-down)))))
|
|
(next '(todo <span style="color: #ffa07a;">"NEXT"</span>))
|
|
(started '(todo <span style="color: #ffa07a;">"STARTED"</span>))
|
|
(missing-deadline
|
|
'(tags-todo <span style="color: #ffa07a;">"-DEADLINE={.}/!"</span>
|
|
((org-agenda-overriding-header
|
|
<span style="color: #ffa07a;">"These don't have deadlines:"</span>))))
|
|
(missing-priority
|
|
'(tags-todo <span style="color: #ffa07a;">"-PRIORITY={.}/!"</span>
|
|
((org-agenda-overriding-header
|
|
<span style="color: #ffa07a;">"These don't have priorities:"</span>)))))
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-agenda-custom-commands
|
|
`((<span style="color: #ffa07a;">"M"</span> <span style="color: #ffa07a;">"Main agenda view"</span>
|
|
((agenda <span style="color: #ffa07a;">""</span>
|
|
((org-agenda-overriding-header <span style="color: #ffa07a;">"Agenda:"</span>)
|
|
(org-agenda-ndays 5)
|
|
(org-deadline-warning-days 0)))
|
|
,due-today
|
|
,next
|
|
,started
|
|
,this-week-high-priority
|
|
,recently-created)
|
|
nil nil)
|
|
,(cons <span style="color: #ffa07a;">"A"</span> (cons <span style="color: #ffa07a;">"High priority upcoming"</span> this-week-high-priority))
|
|
,(cons <span style="color: #ffa07a;">"d"</span> (cons <span style="color: #ffa07a;">"Overdue tasks and due today"</span> due-today))
|
|
,(cons <span style="color: #ffa07a;">"r"</span> (cons <span style="color: #ffa07a;">"Recently created"</span> recently-created))
|
|
(<span style="color: #ffa07a;">"h"</span> <span style="color: #ffa07a;">"A, B priority:"</span> tags-todo <span style="color: #ffa07a;">"+PRIORITY<\"C\""</span>
|
|
((org-agenda-overriding-header
|
|
<span style="color: #ffa07a;">"High Priority:"</span>)))
|
|
(<span style="color: #ffa07a;">"c"</span> <span style="color: #ffa07a;">"At least priority C:"</span> tags-todo <span style="color: #ffa07a;">"+PRIORITY<\"D\""</span>
|
|
((org-agenda-overriding-header
|
|
<span style="color: #ffa07a;">"At least priority C:"</span>))))))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">What follows is a description of the significance of each of</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">the values available in `</span><span style="color: #7fffd4;">org-todo-keywords</span><span style="color: #ff7f24;">'. All headings with</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">one of these keywords deal with the concept of the completion</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">of some task or collection of tasks to bring about a particular</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">state of affairs. In some cases, the actual tasks involved may</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">not be known at the time of task creation.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Incomplete States:</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">IDEA - This TODO exists in only the most abstract sense: it is</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">an imagined state of affairs that requires tasks that are</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">either not yet known, or have not thoroughly been considered.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">RESEARCH - This TODO needs to be investigated further before</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">action can be taken to achieve the desired outcome. It is not</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">known how much time and effort will be consumed in the actual</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">completion of the task.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO - The scope and work involved in this TODO are well</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">understood, but for some reason or another, it is not something</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">that should be attempted in the immediate future. Typically</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">this is because the task is not considered a top priority, but</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">it may also be for some other reason.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">NEXT - This TODO is immediately actionable and should be</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">started in the immediate future.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">STARTED - Work on this TODO has already started, further work</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">is immediately actionable.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">WAIT - The work involved in this TODO is well understood, but</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">it is blocked for the time being.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">BACKLOG - While technically actionable, this task is not only</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">not worth pursuing in the immediate future, but the foreseable</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">future. It exists as a task mostly as a note/reminder, in case</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">it becomes higher priority in the future.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Complete States:</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">DONE - This TODO has been completed exactly as imagined.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">HANDLED - This TODO was completed in spirit, though not by the</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">means that were originally imagined/outlined in the TODO.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">EXPIRED - The owner of this TODO failed to take action on it</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">within the appropriate time period, and there is now no point in</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">attempting it.</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">CANCELED - For whatever reason, this TODO should no longer be</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">attempted. This TODO is typically used in contrast to the</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">EXPIRED TODO to indicate that the owner is not necessarily to</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">blame.</span>
|
|
))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-useframes" class="outline-5">
|
|
<h5 id="useframes"><span class="section-number-5">12.3.1.2</span> Use frames</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> org-src-window-setup 'current-window)
|
|
(<span style="color: #00ffff;">when</span> (imalison:use-frames-only)
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(setcdr (assoc 'file org-link-frame-setup) 'find-file-other-frame)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-setbackgroundcolorofsourceblocksforexport" class="outline-5">
|
|
<h5 id="setbackgroundcolorofsourceblocksforexport"><span class="section-number-5">12.3.1.3</span> Set Background Color of Source Blocks for Export</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-3">
|
|
<p>
|
|
This was taken from <a href="http://emacs.stackexchange.com/questions/3374/set-the-background-of-org-exported-code-blocks-according-to-theme">here</a>.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:org-inline-css-hook</span> (exporter)
|
|
<span style="color: #ffa07a;">"Insert custom inline css to automatically set the</span>
|
|
<span style="color: #ffa07a;">background of code to whatever theme I'm using's background"</span>
|
|
(<span style="color: #00ffff;">when</span> (eq exporter 'html)
|
|
(<span style="color: #00ffff;">let*</span> ((my-pre-bg (face-background 'default))
|
|
(my-pre-fg (face-foreground 'default)))
|
|
(<span style="color: #00ffff;">setq</span>
|
|
org-html-head-extra
|
|
(concat
|
|
org-html-head-extra
|
|
(format <span style="color: #ffa07a;">"<style type=\"text/css\">\n pre.src {background-color: %s; color: %s;}</style>\n"</span>
|
|
my-pre-bg my-pre-fg))))))
|
|
|
|
(add-hook 'org-export-before-processing-hook 'imalison:org-inline-css-hook)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-usemyowndefaultnamingschemefororgheadings" class="outline-5">
|
|
<h5 id="usemyowndefaultnamingschemefororgheadings"><span class="section-number-5">12.3.1.4</span> Use my own default naming scheme for org-headings</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-4">
|
|
<p>
|
|
First we define a function that will generate a sanitized version of the heading
|
|
as its link target.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:org-get-raw-value</span> (item)
|
|
(<span style="color: #00ffff;">when</span> (listp item)
|
|
(<span style="color: #00ffff;">let*</span> ((property-list (cadr item)))
|
|
(<span style="color: #00ffff;">when</span> property-list (plist-get property-list <span style="color: #b0c4de;">:raw-value</span>)))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:sanitize-name</span> (name)
|
|
(replace-regexp-in-string <span style="color: #ffa07a;">"[</span><span style="color: #ffa07a;">^</span><span style="color: #ffa07a;">[:alpha:]]"</span> <span style="color: #ffa07a;">""</span> (s-downcase name)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:generate-name</span> (datum cache)
|
|
(<span style="color: #00ffff;">let</span> ((raw-value (imalison:org-get-raw-value datum)))
|
|
(<span style="color: #00ffff;">if</span> raw-value
|
|
(imalison:sanitize-name raw-value)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This is the default implementation from org</span>
|
|
(<span style="color: #00ffff;">let</span> ((type (org-element-type datum)))
|
|
(format <span style="color: #ffa07a;">"org%s%d"</span>
|
|
(<span style="color: #00ffff;">if</span> type
|
|
(replace-regexp-in-string <span style="color: #ffa07a;">"-"</span> <span style="color: #ffa07a;">""</span> (symbol-name type))
|
|
<span style="color: #ffa07a;">"secondarystring"</span>)
|
|
(<span style="color: #00ffff;">incf</span> (gethash type cache 0)))))))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
This function replaces the default naming scheme with a call to
|
|
<code>imalison:generate-name</code>, and uses a slightly different uniquify approach.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ox</span>
|
|
<span style="color: #b0c4de;">:ensure</span> nil
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">org-export-get-reference</span> (datum info)
|
|
<span style="color: #ffa07a;">"Return a unique reference for DATUM, as a string.</span>
|
|
<span style="color: #ffa07a;">DATUM is either an element or an object. INFO is the current</span>
|
|
<span style="color: #ffa07a;">export state, as a plist. Returned reference consists of</span>
|
|
<span style="color: #ffa07a;">alphanumeric characters only."</span>
|
|
(<span style="color: #00ffff;">let</span> ((type (org-element-type datum))
|
|
(cache (<span style="color: #00ffff;">or</span> (plist-get info <span style="color: #b0c4de;">:internal-references</span>)
|
|
(<span style="color: #00ffff;">let</span> ((h (make-hash-table <span style="color: #b0c4de;">:test</span> #'eq)))
|
|
(plist-put info <span style="color: #b0c4de;">:internal-references</span> h)
|
|
h)))
|
|
(reverse-cache (<span style="color: #00ffff;">or</span> (plist-get info <span style="color: #b0c4de;">:taken-internal-references</span>)
|
|
(<span style="color: #00ffff;">let</span> ((h (make-hash-table <span style="color: #b0c4de;">:test</span> 'equal)))
|
|
(plist-put info <span style="color: #b0c4de;">:taken-internal-references</span> h)
|
|
h))))
|
|
(<span style="color: #00ffff;">or</span> (gethash datum cache)
|
|
(<span style="color: #00ffff;">let*</span> ((name (imalison:generate-name datum cache))
|
|
(number (+ 1 (gethash name reverse-cache -1)))
|
|
(new-name (format <span style="color: #ffa07a;">"%s%s"</span> name (<span style="color: #00ffff;">if</span> (< 0 number) number <span style="color: #ffa07a;">""</span>))))
|
|
(puthash name number reverse-cache)
|
|
(puthash datum new-name cache)
|
|
new-name)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-orgprojectile" class="outline-5">
|
|
<h5 id="orgprojectile"><span class="section-number-5">12.3.1.5</span> org-projectile</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> org-projectile
|
|
<span style="color: #b0c4de;">:after</span> helm
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-c n p"</span> . imalison:helm-org-todo))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(org-projectile:prompt)
|
|
(add-to-list 'org-capture-templates
|
|
(org-projectile:project-todo-entry
|
|
<span style="color: #ffa07a;">"l"</span> <span style="color: #ffa07a;">"* TODO %? %a\n"</span> <span style="color: #ffa07a;">"Linked Project TODO"</span>))
|
|
(add-to-list 'org-capture-templates (org-projectile:project-todo-entry <span style="color: #ffa07a;">"p"</span>))
|
|
(<span style="color: #00ffff;">setq</span> org-confirm-elisp-link-function nil)
|
|
(imalison:add-to-org-agenda-files (org-projectile:todo-files))
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">helm-source</span>)
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">helm-org</span>)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:helm-org-todo</span> (<span style="color: #98fb98;">&optional</span> arg)
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"P"</span>)
|
|
(helm <span style="color: #b0c4de;">:sources</span> (list (helm-source-org-capture-templates)
|
|
(org-projectile:helm-source
|
|
(<span style="color: #00ffff;">if</span> arg (imalison:make-org-linked-todo-template)
|
|
(imalison:make-org-todo-template))))
|
|
<span style="color: #b0c4de;">:candidate-number-limit</span> 99999
|
|
<span style="color: #b0c4de;">:buffer</span> <span style="color: #ffa07a;">"*helm org capture templates*"</span>))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-orgnotify" class="outline-5">
|
|
<h5 id="orgnotify"><span class="section-number-5">12.3.1.6</span> org-notify</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org-notify</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:after</span> org
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:org-notify-notification-handler</span> (plist)
|
|
(sauron-add-event 'org-notify 4 (format <span style="color: #ffa07a;">"%s, %s.\n"</span> (plist-get plist <span style="color: #b0c4de;">:heading</span>)
|
|
(org-notify-body-text plist))))
|
|
|
|
(<span style="color: #00ffff;">setq</span> org-show-notification-handler 'imalison:org-notify-notification-handler)
|
|
|
|
(org-notify-add 'default '(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"1h"</span> <span style="color: #b0c4de;">:actions</span> imalison:org-notify-notification-handler
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2m"</span> <span style="color: #b0c4de;">:duration</span> 60))
|
|
(org-notify-add 'default '(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"100m"</span> <span style="color: #b0c4de;">:actions</span> imalison:org-notify-notification-handler
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2m"</span> <span style="color: #b0c4de;">:duration</span> 60))
|
|
(org-notify-add 'urgent-second '(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"3m"</span> <span style="color: #b0c4de;">:actions</span> (-notify/window -ding)
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"15s"</span> <span style="color: #b0c4de;">:duration</span> 10))
|
|
(org-notify-add 'minute '(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"5m"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"100s"</span> <span style="color: #b0c4de;">:duration</span> 70))
|
|
(org-notify-add '12hours
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"3m"</span> <span style="color: #b0c4de;">:actions</span> (-notify/window -ding)
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"15s"</span> <span style="color: #b0c4de;">:duration</span> 10)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"100m"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2m"</span> <span style="color: #b0c4de;">:duration</span> 60)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"12h"</span> <span style="color: #b0c4de;">:actions</span> -notify/window <span style="color: #b0c4de;">:audible</span> nil
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"10m"</span> <span style="color: #b0c4de;">:duration</span> 200))
|
|
(org-notify-add '5days
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"100m"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2m"</span> <span style="color: #b0c4de;">:duration</span> 60)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"2d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"15m"</span> <span style="color: #b0c4de;">:duration</span> 100)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"5d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2h"</span> <span style="color: #b0c4de;">:duration</span> 200))
|
|
(org-notify-add 'long-20days
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"2d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"15m"</span> <span style="color: #b0c4de;">:duration</span> 60)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"5d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2h"</span> <span style="color: #b0c4de;">:duration</span> 60)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"20d"</span> <span style="color: #b0c4de;">:actions</span> -email <span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"2d"</span> <span style="color: #b0c4de;">:audible</span> nil))
|
|
(org-notify-add 'long-50days
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"4d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"30m"</span> <span style="color: #b0c4de;">:duration</span> 100)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"10d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"4h"</span> <span style="color: #b0c4de;">:duration</span> 200)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"50d"</span> <span style="color: #b0c4de;">:actions</span> -email <span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"3d"</span> <span style="color: #b0c4de;">:audible</span> nil))
|
|
(org-notify-add 'long-100days
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"2d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"1h"</span> <span style="color: #b0c4de;">:duration</span> 200)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"10d"</span> <span style="color: #b0c4de;">:actions</span> -notify/window
|
|
<span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"10h"</span> <span style="color: #b0c4de;">:duration</span> 300)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"50d"</span> <span style="color: #b0c4de;">:actions</span> -email <span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"3d"</span> <span style="color: #b0c4de;">:audible</span> nil)
|
|
'(<span style="color: #b0c4de;">:time</span> <span style="color: #ffa07a;">"100d"</span> <span style="color: #b0c4de;">:actions</span> -email <span style="color: #b0c4de;">:period</span> <span style="color: #ffa07a;">"5d"</span> <span style="color: #b0c4de;">:audible</span> nil))
|
|
(org-notify-start 10)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-orgreveal" class="outline-5">
|
|
<h5 id="orgreveal"><span class="section-number-5">12.3.1.7</span> org-reveal</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ox-reveal</span>
|
|
<span style="color: #b0c4de;">:after</span> org
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">setq</span> org-reveal-root
|
|
(imalison:join-paths <span style="color: #ffa07a;">"file://"</span> imalison:projects-directory <span style="color: #ffa07a;">"reveal.js"</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-orgcaldav" class="outline-5">
|
|
<h5 id="orgcaldav"><span class="section-number-5">12.3.1.8</span> org-caldav</h5>
|
|
<div class="outline-text-5" id="text-12-3-1-8">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">org-caldav</span>
|
|
<span style="color: #b0c4de;">:defer</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> org-caldav-url <span style="color: #ffa07a;">"https://www.google.com/calendar/dav"</span>
|
|
org-caldav-inbox imalison:org-inbox-file
|
|
org-caldav-files (list imalison:org-calendar-file)
|
|
org-icalendar-timezone <span style="color: #ffa07a;">"America/Los_Angeles"</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-tex" class="outline-4">
|
|
<h4 id="tex"><span class="section-number-4">12.3.2</span> TeX</h4>
|
|
<div class="outline-text-4" id="text-12-3-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">tex</span>
|
|
<span style="color: #b0c4de;">:ensure</span> auctex
|
|
<span style="color: #b0c4de;">:commands</span> TeX-mode
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:TeX-mode-hook</span> ()
|
|
(turn-on-reftex)
|
|
(TeX-source-correlate-mode +1)
|
|
(TeX-PDF-mode +1)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> TeX-mode-map)
|
|
(TeX-global-PDF-mode)
|
|
(<span style="color: #00ffff;">setq</span> TeX-auto-save t
|
|
TeX-parse-self t
|
|
TeX-save-query nil
|
|
TeX-PDF-mode t)
|
|
(TeX-global-PDF-mode t)
|
|
(add-hook 'TeX-mode-hook 'imalison:TeX-mode-hook)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-latex" class="outline-5">
|
|
<h5 id="latex"><span class="section-number-5">12.3.2.1</span> latex</h5>
|
|
<div class="outline-text-5" id="text-12-3-2-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">latex</span>
|
|
<span style="color: #b0c4de;">:ensure</span> auctex
|
|
<span style="color: #b0c4de;">:after</span> tex
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-j"</span> LaTeX-mode-map)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-auctexlatexmk" class="outline-5">
|
|
<h5 id="auctexlatexmk"><span class="section-number-5">12.3.2.2</span> auctex-latexmk</h5>
|
|
<div class="outline-text-5" id="text-12-3-2-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">auctex-latexmk</span>
|
|
<span style="color: #b0c4de;">:after</span> tex
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> auctex-latexmk-inherit-TeX-PDF-mode t)
|
|
(auctex-latexmk-setup)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-companyauctex" class="outline-5">
|
|
<h5 id="companyauctex"><span class="section-number-5">12.3.2.3</span> company-auctex</h5>
|
|
<div class="outline-text-5" id="text-12-3-2-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-auctex</span>
|
|
<span style="color: #b0c4de;">:after</span> tex
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(company-auctex-init))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-markdownmode" class="outline-4">
|
|
<h4 id="markdownmode"><span class="section-number-4">12.3.3</span> markdown-mode</h4>
|
|
<div class="outline-text-4" id="text-12-3-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">markdown-mode</span>
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'markdown-mode-hook 'imalison:disable-linum-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-plantumlmode" class="outline-4">
|
|
<h4 id="plantumlmode"><span class="section-number-4">12.3.4</span> plantuml-mode</h4>
|
|
<div class="outline-text-4" id="text-12-3-4">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">plantuml-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> plantuml-mode
|
|
<span style="color: #b0c4de;">:mode</span> (<span style="color: #ffa07a;">"\\.puml\\'"</span> <span style="color: #ffa07a;">"\\.plantuml\\'"</span>)
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">cond</span> ((equal system-type 'darwin)
|
|
(<span style="color: #00ffff;">let*</span> ((plantuml-dir
|
|
(s-trim (shell-command-to-string <span style="color: #ffa07a;">"brew --prefix plantuml"</span>)))
|
|
(filename
|
|
(<span style="color: #00ffff;">when</span> (file-exists-p plantuml-dir)
|
|
(<span style="color: #00ffff;">--first</span> (s-ends-with? <span style="color: #ffa07a;">".jar"</span> <span style="color: #eedd82;">it</span>) (directory-files plantuml-dir))))
|
|
(filepath (<span style="color: #00ffff;">when</span> filename
|
|
(imalison:join-paths plantuml-dir filename))))
|
|
(<span style="color: #00ffff;">setq</span> plantuml-jar-path filepath
|
|
org-plantuml-jar-path filepath)))
|
|
((equal system-type 'gnu/linux)
|
|
(<span style="color: #00ffff;">let</span> ((filepath <span style="color: #ffa07a;">"/opt/plantuml/plantuml.jar"</span>))
|
|
(<span style="color: #00ffff;">setq</span> plantuml-jar-path filepath
|
|
org-plantuml-jar-path filepath))))
|
|
(add-to-list
|
|
'org-src-lang-modes '(<span style="color: #ffa07a;">"plantuml"</span> . plantuml))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-wsdmode" class="outline-4">
|
|
<h4 id="wsdmode"><span class="section-number-4">12.3.5</span> wsd-mode</h4>
|
|
<div class="outline-text-4" id="text-12-3-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">wsd-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> (wsd-mode))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-utility" class="outline-3">
|
|
<h3 id="utility"><span class="section-number-3">12.4</span> Utility</h3>
|
|
<div class="outline-text-3" id="text-12-4">
|
|
</div><div id="outline-container-restclient" class="outline-4">
|
|
<h4 id="restclient"><span class="section-number-4">12.4.1</span> restclient</h4>
|
|
<div class="outline-text-4" id="text-12-4-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">restclient</span>
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.restclient\\'"</span> . restclient-mode))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">company-restclient</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-jqmode" class="outline-4">
|
|
<h4 id="jqmode"><span class="section-number-4">12.4.2</span> jq-mode</h4>
|
|
<div class="outline-text-4" id="text-12-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">jq-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.jq\\'"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-programming1" class="outline-2">
|
|
<h2 id="programming1"><span class="section-number-2">13</span> Programming</h2>
|
|
<div class="outline-text-2" id="text-13">
|
|
</div><div id="outline-container-realgud" class="outline-3">
|
|
<h3 id="realgud"><span class="section-number-3">13.1</span> realgud</h3>
|
|
<div class="outline-text-3" id="text-13-1">
|
|
<p>
|
|
realgud provides debugging support with many external debuggers in emacs
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">realgud</span>
|
|
<span style="color: #b0c4de;">:defer</span> 10)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-emr1" class="outline-3">
|
|
<h3 id="emr1"><span class="section-number-3">13.2</span> emr</h3>
|
|
<div class="outline-text-3" id="text-13-2">
|
|
<p>
|
|
emr (emacs refactor) provides support for refactoring in many programming languages
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">emr</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> prog-mode-map
|
|
(<span style="color: #ffa07a;">"M-RET"</span> . emr-show-refactor-menu))
|
|
<span style="color: #b0c4de;">:config</span> (emr-initialize))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-semantic" class="outline-3">
|
|
<h3 id="semantic"><span class="section-number-3">13.3</span> semantic</h3>
|
|
<div class="outline-text-3" id="text-13-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">semantic</span>
|
|
<span style="color: #b0c4de;">:commands</span> semantic-mode
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'prog-mode-hook 'semantic-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-utility1" class="outline-2">
|
|
<h2 id="utility1"><span class="section-number-2">14</span> Utility</h2>
|
|
<div class="outline-text-2" id="text-14">
|
|
</div><div id="outline-container-term" class="outline-3">
|
|
<h3 id="term"><span class="section-number-3">14.1</span> term</h3>
|
|
<div class="outline-text-3" id="text-14-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">term</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> term-raw-escape-map
|
|
(<span style="color: #ffa07a;">"M-x"</span> . helm-M-x)
|
|
<span style="color: #b0c4de;">:map</span> term-raw-map
|
|
(<span style="color: #ffa07a;">"M-x"</span> . helm-M-x))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(define-key term-raw-map (kbd <span style="color: #ffa07a;">"C-h"</span>) help-map)
|
|
(add-hook 'term-mode-hook 'imalison:disable-linum-mode)
|
|
(add-hook 'term-mode-hook 'imalison:disable-show-trailing-whitespace)
|
|
(<span style="color: #00ffff;">setq</span> term-buffer-maximum-size 0)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-termmanager" class="outline-3">
|
|
<h3 id="termmanager"><span class="section-number-3">14.2</span> term-manager</h3>
|
|
<div class="outline-text-3" id="text-14-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package</span> term-manager
|
|
<span style="color: #b0c4de;">:defer</span> t
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:set-escape-char</span> (<span style="color: #98fb98;">&rest</span> _args)
|
|
(<span style="color: #00ffff;">let</span> (term-escape-char)
|
|
(term-set-escape-char ?\C-x))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(advice-add
|
|
'term-manager-default-build-term <span style="color: #b0c4de;">:after</span> 'imalison:set-escape-char)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-termprojectile" class="outline-3">
|
|
<h3 id="termprojectile"><span class="section-number-3">14.3</span> term-projectile</h3>
|
|
<div class="outline-text-3" id="text-14-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">imalison:use-package*</span> term-projectile <span style="color: #ffa07a;">"term-manager"</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c 7"</span> . imalison:term-hydra-global/body)
|
|
<span style="color: #b0c4de;">:commands</span> (term-projectile-forward term-projectile-backward
|
|
term-projectile-default-directory-forward
|
|
term-projectile-default-directory-backward
|
|
term-projectile-create-new
|
|
term-projectile-create-new-default-directory)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">emit-prefix-selector</span> imalison:term
|
|
term-projectile-forward
|
|
term-projectile-create-new)
|
|
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:term-hydra-original-default-directory</span>)
|
|
|
|
(<span style="color: #00ffff;">defhydra</span> imalison:term-hydra-default-directory
|
|
(<span style="color: #b0c4de;">:body-pre</span>
|
|
(term-projectile-default-directory-forward-restored))
|
|
<span style="color: #ffa07a;">"term - default-directory"</span>
|
|
(<span style="color: #ffa07a;">"s"</span> term-projectile-switch-to)
|
|
(<span style="color: #ffa07a;">"f"</span> term-projectile-default-directory-forward-restored)
|
|
(<span style="color: #ffa07a;">"b"</span> term-projectile-default-directory-backward-restored)
|
|
(<span style="color: #ffa07a;">"c"</span> term-projectile-default-directory-create-new-restored)
|
|
(<span style="color: #ffa07a;">"d"</span> term-projectile-default-directory-forward-restored)
|
|
(<span style="color: #ffa07a;">"g"</span> imalison:term-hydra-global/body-restored <span style="color: #b0c4de;">:exit</span> t)
|
|
(<span style="color: #ffa07a;">"p"</span> imalison:term-hydra-projectile/body-restored <span style="color: #b0c4de;">:exit</span> t))
|
|
|
|
(<span style="color: #00ffff;">defhydra</span> imalison:term-hydra-projectile
|
|
(<span style="color: #b0c4de;">:body-pre</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(term-projectile-forward-restored)))
|
|
<span style="color: #ffa07a;">"term - projectile"</span>
|
|
(<span style="color: #ffa07a;">"s"</span> term-projectile-switch-to)
|
|
(<span style="color: #ffa07a;">"f"</span> term-projectile-forward-restored)
|
|
(<span style="color: #ffa07a;">"b"</span> term-projectile-backward-restored)
|
|
(<span style="color: #ffa07a;">"c"</span> term-projectile-create-new-restored)
|
|
(<span style="color: #ffa07a;">"d"</span> imalison:term-hydra-default-directory/body-restored <span style="color: #b0c4de;">:exit</span> t)
|
|
(<span style="color: #ffa07a;">"g"</span> imalison:term-hydra-global/body-restored <span style="color: #b0c4de;">:exit</span> t)
|
|
(<span style="color: #ffa07a;">"p"</span> term-projectile-forward-restored))
|
|
|
|
|
|
(<span style="color: #00ffff;">defhydra</span> imalison:term-hydra-global
|
|
(<span style="color: #b0c4de;">:body-pre</span>
|
|
(<span style="color: #00ffff;">progn</span> (<span style="color: #00ffff;">setq</span> imalison:term-hydra-original-default-directory
|
|
default-directory)))
|
|
<span style="color: #ffa07a;">"term - global"</span>
|
|
(<span style="color: #ffa07a;">"s"</span> term-projectile-switch-to)
|
|
(<span style="color: #ffa07a;">"f"</span> term-projectile-global-forward-restored)
|
|
(<span style="color: #ffa07a;">"b"</span> term-projectile-global-backward-restored)
|
|
(<span style="color: #ffa07a;">"c"</span> term-projectile-global-create-new-restored)
|
|
(<span style="color: #ffa07a;">"d"</span> imalison:term-hydra-default-directory/body-restored <span style="color: #b0c4de;">:exit</span> t)
|
|
(<span style="color: #ffa07a;">"g"</span> term-projectile-global-forward-restored)
|
|
(<span style="color: #ffa07a;">"p"</span> imalison:term-hydra-projectile/body-restored <span style="color: #b0c4de;">:exit</span> t))
|
|
|
|
(mapcar (<span style="color: #00ffff;">lambda</span> (term-projectile-function)
|
|
(<span style="color: #00ffff;">defalias</span> (imalison:concat-symbols term-projectile-function '-restored)
|
|
(<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">let</span> ((default-directory imalison:term-hydra-original-default-directory))
|
|
(apply term-projectile-function args)))))
|
|
'(term-projectile-default-directory-forward
|
|
term-projectile-default-directory-backward
|
|
term-projectile-default-directory-create-new
|
|
term-projectile-forward
|
|
term-projectile-backward
|
|
term-projectile-create-new
|
|
term-projectile-global-forward
|
|
term-projectile-global-backward
|
|
term-projectile-global-create-new
|
|
imalison:term-hydra-global/body
|
|
imalison:term-hydra-projectile/body
|
|
imalison:term-hydra-default-directory/body))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-crux" class="outline-3">
|
|
<h3 id="crux"><span class="section-number-3">14.4</span> crux</h3>
|
|
<div class="outline-text-3" id="text-14-4">
|
|
<p>
|
|
crux-reopen-as-root-mode makes it so that any file owned by root will automatically be opened as the root user.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">crux</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C-c C-s"</span> . crux-sudo-edit)
|
|
(<span style="color: #ffa07a;">"C-c C-r"</span> . crux-eval-and-replace)
|
|
(<span style="color: #ffa07a;">"C-c o"</span> . crux-open-with))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(crux-reopen-as-root-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-kdeconnect" class="outline-3">
|
|
<h3 id="kdeconnect"><span class="section-number-3">14.5</span> kde-connect</h3>
|
|
<div class="outline-text-3" id="text-14-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">kdeconnect</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-chat" class="outline-2">
|
|
<h2 id="chat"><span class="section-number-2">15</span> Chat</h2>
|
|
<div class="outline-text-2" id="text-15">
|
|
</div><div id="outline-container-erc" class="outline-3">
|
|
<h3 id="erc"><span class="section-number-3">15.1</span> erc</h3>
|
|
<div class="outline-text-3" id="text-15-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">erc</span>
|
|
<span style="color: #b0c4de;">:commands</span> erc
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(add-to-list 'erc-modules 'notifications)</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">logging:</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">erc-colorize</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(erc-colorize-mode 1))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-bitlbee" class="outline-3">
|
|
<h3 id="bitlbee"><span class="section-number-3">15.2</span> bitlbee</h3>
|
|
<div class="outline-text-3" id="text-15-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">bitlbee</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">bitlbee-password</span> <span style="color: #ffa07a;">"geheim"</span>)
|
|
(add-hook 'erc-join-hook 'bitlbee-identify)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">bitlbee-identify</span> ()
|
|
<span style="color: #ffa07a;">"If we're on the bitlbee server, send the identify command to the</span>
|
|
<span style="color: #ffa07a;"> &bitlbee channel."</span>
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">and</span> (string= <span style="color: #ffa07a;">"localhost"</span> erc-session-server)
|
|
(string= <span style="color: #ffa07a;">"&bitlbee"</span> (buffer-name)))
|
|
(erc-message <span style="color: #ffa07a;">"PRIVMSG"</span> (format <span style="color: #ffa07a;">"%s identify %s"</span>
|
|
(erc-default-target)
|
|
bitlbee-password))))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-slack" class="outline-3">
|
|
<h3 id="slack"><span class="section-number-3">15.3</span> slack</h3>
|
|
<div class="outline-text-3" id="text-15-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">slack</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-cooperation" class="outline-2">
|
|
<h2 id="cooperation"><span class="section-number-2">16</span> Cooperation</h2>
|
|
<div class="outline-text-2" id="text-16">
|
|
</div><div id="outline-container-togetherly" class="outline-3">
|
|
<h3 id="togetherly"><span class="section-number-3">16.1</span> togetherly</h3>
|
|
<div class="outline-text-3" id="text-16-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">togetherly</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-floobits" class="outline-3">
|
|
<h3 id="floobits"><span class="section-number-3">16.2</span> floobits</h3>
|
|
<div class="outline-text-3" id="text-16-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">floobits</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-rudel" class="outline-3">
|
|
<h3 id="rudel"><span class="section-number-3">16.3</span> rudel</h3>
|
|
<div class="outline-text-3" id="text-16-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">rudel</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-other1" class="outline-2">
|
|
<h2 id="other1"><span class="section-number-2">17</span> Other</h2>
|
|
<div class="outline-text-2" id="text-17">
|
|
</div><div id="outline-container-anzu" class="outline-3">
|
|
<h3 id="anzu"><span class="section-number-3">17.1</span> anzu</h3>
|
|
<div class="outline-text-3" id="text-17-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">anzu</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(global-anzu-mode +1)
|
|
|
|
(custom-set-variables
|
|
'(anzu-mode-lighter <span style="color: #ffa07a;">""</span>)
|
|
'(anzu-deactivate-region t)
|
|
'(anzu-search-threshold 1000)
|
|
'(anzu-replace-threshold 50)
|
|
'(anzu-replace-to-string-separator <span style="color: #ffa07a;">" => "</span>))
|
|
|
|
(define-key isearch-mode-map [remap isearch-query-replace]
|
|
#'anzu-isearch-query-replace)
|
|
(define-key isearch-mode-map [remap isearch-query-replace-regexp]
|
|
#'anzu-isearch-query-replace-regexp)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-fontawesome" class="outline-3">
|
|
<h3 id="fontawesome"><span class="section-number-3">17.2</span> fontawesome</h3>
|
|
<div class="outline-text-3" id="text-17-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">fontawesome</span>
|
|
<span style="color: #b0c4de;">:commands</span> helm-fontawesome)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-shellhistory" class="outline-3">
|
|
<h3 id="shellhistory"><span class="section-number-3">17.3</span> shell-history</h3>
|
|
<div class="outline-text-3" id="text-17-3">
|
|
<p>
|
|
I think that shell-history is causing projectile to be very slow so I have disabled it.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">shell-history</span>
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:disabled</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-iedit" class="outline-3">
|
|
<h3 id="iedit"><span class="section-number-3">17.4</span> iedit</h3>
|
|
<div class="outline-text-3" id="text-17-4">
|
|
<p>
|
|
I don't use iedit directly, but it is used by <a href="#emr">emr</a> and I need to disable <code>iedit-toggle-key-default</code> or else a buffer pops up complaing that the key has been bound to something else
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">iedit</span>
|
|
<span style="color: #b0c4de;">:defer</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-tramp" class="outline-3">
|
|
<h3 id="tramp"><span class="section-number-3">17.5</span> tramp</h3>
|
|
<div class="outline-text-3" id="text-17-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">tramp</span>
|
|
<span style="color: #b0c4de;">:commands</span> tramp
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">setq</span> tramp-default-method <span style="color: #ffa07a;">"scp"</span>))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-flycheck" class="outline-3">
|
|
<h3 id="flycheck"><span class="section-number-3">17.6</span> flycheck</h3>
|
|
<div class="outline-text-3" id="text-17-6">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flycheck</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flycheck-package</span>
|
|
<span style="color: #b0c4de;">:config</span> (flycheck-package-setup))
|
|
|
|
(<span style="color: #00ffff;">imalison:use-package</span> flycheck-cask
|
|
<span style="color: #b0c4de;">:after</span> flycheck
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(add-hook 'flycheck-mode-hook #'flycheck-cask-setup))
|
|
|
|
(add-to-list 'flycheck-emacs-lisp-checkdoc-variables
|
|
'sentence-end-double-space)
|
|
(global-flycheck-mode))
|
|
<span style="color: #b0c4de;">:diminish</span> flycheck-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-narrowindirect" class="outline-3">
|
|
<h3 id="narrowindirect"><span class="section-number-3">17.7</span> narrow-indirect</h3>
|
|
<div class="outline-text-3" id="text-17-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">narrow-indirect</span>
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(define-key ctl-x-4-map <span style="color: #ffa07a;">"nd"</span> 'ni-narrow-to-defun-indirect-other-window)
|
|
(define-key ctl-x-4-map <span style="color: #ffa07a;">"nn"</span> 'ni-narrow-to-region-indirect-other-window)
|
|
(define-key ctl-x-4-map <span style="color: #ffa07a;">"np"</span> 'ni-narrow-to-page-indirect-other-window)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-editorconfig" class="outline-3">
|
|
<h3 id="editorconfig"><span class="section-number-3">17.8</span> editorconfig</h3>
|
|
<div class="outline-text-3" id="text-17-8">
|
|
<p>
|
|
I had to disable this mode because something that it does messes with coding settings and makes it so that I have to select the appropriate encoding every time I save gpg encrypted files.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">editorconfig</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-to-list 'editorconfig-exclude-modes '(org-mode))
|
|
(editorconfig-mode 1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-dtrtindent" class="outline-3">
|
|
<h3 id="dtrtindent"><span class="section-number-3">17.9</span> dtrt-indent</h3>
|
|
<div class="outline-text-3" id="text-17-9">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">dtrt-indent</span>
|
|
<span style="color: #b0c4de;">:commands</span> 'dtrt-indent-mode
|
|
<span style="color: #b0c4de;">:init</span> (add-hook 'prog-mode-hook 'dtrt-indent-mode)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> dtrt-indent-active-mode-line-info <span style="color: #ffa07a;">" [⟼]"</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-indentguide" class="outline-3">
|
|
<h3 id="indentguide"><span class="section-number-3">17.10</span> indent-guide</h3>
|
|
<div class="outline-text-3" id="text-17-10">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">indent-guide</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(indent-guide-global-mode -1)
|
|
(<span style="color: #00ffff;">setq</span> indent-guide-delay 0.1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-rainbowdelimiters" class="outline-3">
|
|
<h3 id="rainbowdelimiters"><span class="section-number-3">17.11</span> rainbow-delimiters</h3>
|
|
<div class="outline-text-3" id="text-17-11">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">rainbow-delimiters</span>
|
|
<span style="color: #b0c4de;">:commands</span> rainbow-delimiters-mode
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-hook 'prog-mode-hook (<span style="color: #00ffff;">lambda</span> () (rainbow-delimiters-mode t)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-undotree" class="outline-3">
|
|
<h3 id="undotree"><span class="section-number-3">17.12</span> undo-tree</h3>
|
|
<div class="outline-text-3" id="text-17-12">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">undo-tree</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">this has been getting pretty annoying</span>
|
|
<span style="color: #b0c4de;">:bind</span> ((<span style="color: #ffa07a;">"C--"</span> . undo-redo)
|
|
(<span style="color: #ffa07a;">"C-c u"</span> . undo-tree-visualize)
|
|
(<span style="color: #ffa07a;">"C-c r"</span> . undo-tree-redo))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(diminish 'undo-tree-mode)
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
<span style="color: #ff7f24;">;;</span><span style="color: #ff7f24;">(setq undo-tree-visualizer-diff t) ;; This causes performance problems</span>
|
|
(global-undo-tree-mode)
|
|
(<span style="color: #00ffff;">setq</span> undo-tree-visualizer-timestamps t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-recentf" class="outline-3">
|
|
<h3 id="recentf"><span class="section-number-3">17.13</span> recentf</h3>
|
|
<div class="outline-text-3" id="text-17-13">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">recentf</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> recentf-max-saved-items 1000
|
|
recentf-max-menu-items 1000)
|
|
(advice-add 'recentf-cleanup <span style="color: #b0c4de;">:around</span> 'imalison:shut-up-around)
|
|
(recentf-mode 1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-keychord" class="outline-3">
|
|
<h3 id="keychord"><span class="section-number-3">17.14</span> key-chord</h3>
|
|
<div class="outline-text-3" id="text-17-14">
|
|
<p>
|
|
I have currently disabled key-chord because it may cause typing lag.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">key-chord</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:disable-keychord-around</span> (<span style="color: #00ffff;">function</span> <span style="color: #98fb98;">&rest</span> args)
|
|
(<span style="color: #00ffff;">let</span> ((key-chord-mode-was-enabled (<span style="color: #00ffff;">bound-and-true-p</span> key-chord-mode)))
|
|
(<span style="color: #00ffff;">when</span> key-chord-mode-was-enabled (key-chord-mode -1))
|
|
(<span style="color: #00ffff;">condition-case</span> err (<span style="color: #00ffff;">progn</span> (apply function args)) (<span style="color: #ffc0cb; font-weight: bold;">error</span>))
|
|
(<span style="color: #00ffff;">when</span> key-chord-mode-was-enabled (key-chord-mode 1))))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(advice-add 'key-chord-mode <span style="color: #b0c4de;">:around</span> 'imalison:shut-up-around)
|
|
(key-chord-mode 1)
|
|
(advice-add 'imalison:avy <span style="color: #b0c4de;">:around</span> 'imalison:disable-keychord-around)
|
|
(key-chord-define-global <span style="color: #ffa07a;">"tg"</span> 'imalison:term-hydra/body)
|
|
(key-chord-define-global <span style="color: #ffa07a;">"pj"</span> 'imalison:projectile-find-file)
|
|
(key-chord-define-global <span style="color: #ffa07a;">"p["</span> 'projectile-switch-project)
|
|
(key-chord-define-global <span style="color: #ffa07a;">"fj"</span> 'imalison:do-ag)
|
|
(key-chord-define-global <span style="color: #ffa07a;">"jh"</span> 'imalison:avy)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-nodejsrepl" class="outline-3">
|
|
<h3 id="nodejsrepl"><span class="section-number-3">17.15</span> nodejs-repl</h3>
|
|
<div class="outline-text-3" id="text-17-15">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">nodejs-repl</span>
|
|
<span style="color: #b0c4de;">:commands</span> nodejs-repl)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-calcmode" class="outline-3">
|
|
<h3 id="calcmode"><span class="section-number-3">17.16</span> calc-mode</h3>
|
|
<div class="outline-text-3" id="text-17-16">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">calc-mode</span>
|
|
<span style="color: #b0c4de;">:ensure</span> nil
|
|
<span style="color: #b0c4de;">:commands</span> calc
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> calc-context-sensitive-enter t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmspotify" class="outline-3">
|
|
<h3 id="helmspotify"><span class="section-number-3">17.17</span> helm-spotify</h3>
|
|
<div class="outline-text-3" id="text-17-17">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-spotify</span>
|
|
<span style="color: #b0c4de;">:commands</span> helm-spotify)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-jabber" class="outline-3">
|
|
<h3 id="jabber"><span class="section-number-3">17.18</span> jabber</h3>
|
|
<div class="outline-text-3" id="text-17-18">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">jabber</span>
|
|
<span style="color: #b0c4de;">:commands</span> jabber-connect
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> jabber-alert-presence-hooks nil)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">jabber-message-content-message</span> (from buffer text)
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">or</span> jabber-message-alert-same-buffer
|
|
(not (memq (selected-window) (get-buffer-window-list buffer))))
|
|
(<span style="color: #00ffff;">if</span> (jabber-muc-sender-p from)
|
|
(format <span style="color: #ffa07a;">"%s: %s"</span> (jabber-jid-resource from) text)
|
|
(format <span style="color: #ffa07a;">"%s: %s"</span> (jabber-jid-displayname from) text))))
|
|
(<span style="color: #00ffff;">setq</span> jabber-alert-message-function 'jabber-message-content-message)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-htmlize" class="outline-3">
|
|
<h3 id="htmlize"><span class="section-number-3">17.19</span> htmlize</h3>
|
|
<div class="outline-text-3" id="text-17-19">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">htmlize</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-calfw" class="outline-3">
|
|
<h3 id="calfw"><span class="section-number-3">17.20</span> calfw</h3>
|
|
<div class="outline-text-3" id="text-17-20">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">calfw</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">calfw-org</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-clocker" class="outline-3">
|
|
<h3 id="clocker"><span class="section-number-3">17.21</span> clocker</h3>
|
|
<div class="outline-text-3" id="text-17-21">
|
|
<p>
|
|
Not really sure what this is
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">clocker</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-deft" class="outline-3">
|
|
<h3 id="deft"><span class="section-number-3">17.22</span> deft</h3>
|
|
<div class="outline-text-3" id="text-17-22">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">deft</span>
|
|
<span style="color: #b0c4de;">:commands</span> deft
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> deft-default-extension <span style="color: #ffa07a;">"org"</span>)
|
|
(<span style="color: #00ffff;">setq</span> deft-extensions '(<span style="color: #ffa07a;">"org"</span>))
|
|
(<span style="color: #00ffff;">setq</span> deft-use-filter-string-for-filename t)
|
|
(<span style="color: #00ffff;">setq</span> deft-file-naming-rules '((noslash . <span style="color: #ffa07a;">"_"</span>)
|
|
(nospace . <span style="color: #ffa07a;">"_"</span>)
|
|
(case-fn . downcase)))
|
|
(<span style="color: #00ffff;">setq</span> deft-directory <span style="color: #ffa07a;">"~/SparkleShare/org/notes"</span>)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-epg" class="outline-3">
|
|
<h3 id="epg"><span class="section-number-3">17.23</span> epg</h3>
|
|
<div class="outline-text-3" id="text-17-23">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">epg</span>
|
|
<span style="color: #b0c4de;">:after</span> shut-up
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">shut-up</span>
|
|
(epa-file-enable)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-pinentry" class="outline-3">
|
|
<h3 id="pinentry"><span class="section-number-3">17.24</span> pinentry</h3>
|
|
<div class="outline-text-3" id="text-17-24">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">pinentry</span>
|
|
<span style="color: #b0c4de;">:defer</span> 5
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(pinentry-start))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-twitteringmode" class="outline-3">
|
|
<h3 id="twitteringmode"><span class="section-number-3">17.25</span> twittering-mode</h3>
|
|
<div class="outline-text-3" id="text-17-25">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">twittering-mode</span>
|
|
<span style="color: #b0c4de;">:commands</span> twittering-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-matrixclient" class="outline-3">
|
|
<h3 id="matrixclient"><span class="section-number-3">17.26</span> matrix-client</h3>
|
|
<div class="outline-text-3" id="text-17-26">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">matrix-client</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">fails to load eieio on startup</span>
|
|
)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-mue" class="outline-3">
|
|
<h3 id="mue"><span class="section-number-3">17.27</span> mu4e</h3>
|
|
<div class="outline-text-3" id="text-17-27">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">eval-when-compile</span>
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">s</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">mu4e-elisp-directory</span>
|
|
(s-trim (shell-command-to-string <span style="color: #ffa07a;">"mu4e_directory"</span>))))
|
|
(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">mu4e</span>
|
|
<span style="color: #b0c4de;">:load-path</span> mu4e-elisp-directory
|
|
<span style="color: #b0c4de;">:ensure</span> nil
|
|
<span style="color: #b0c4de;">:commands</span> (mu4e mu4e-view-message-with-msgid mu4e-update-index email)
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c 0"</span> . email)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">email</span> (<span style="color: #98fb98;">&optional</span> arg)
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"P"</span>)
|
|
(<span style="color: #00ffff;">if</span> (string-equal (persp-name persp-curr) <span style="color: #ffa07a;">"email"</span>)
|
|
(<span style="color: #00ffff;">progn</span> (delete-other-windows) (mu4e))
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(persp-switch <span style="color: #ffa07a;">"email"</span>)
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">or</span> (not (mu4e-running-p)) arg)
|
|
(delete-other-windows) (mu4e)))))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">enable inline images</span>
|
|
(<span style="color: #00ffff;">setq</span> mu4e-view-show-images t)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">show images</span>
|
|
(<span style="color: #00ffff;">setq</span> mu4e-show-images t)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Try to display html as text</span>
|
|
(<span style="color: #00ffff;">setq</span> mu4e-view-prefer-html nil)
|
|
|
|
(<span style="color: #00ffff;">setq</span> mu4e-html2text-command <span style="color: #ffa07a;">"html2text -width 80 -nobs -utf8"</span>)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">use imagemagick, if available</span>
|
|
(<span style="color: #00ffff;">when</span> (fboundp 'imagemagick-register-types)
|
|
(imagemagick-register-types))
|
|
(<span style="color: #00ffff;">setq</span> mail-user-agent 'mu4e-user-agent)
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">org-mu4e</span>)
|
|
(<span style="color: #00ffff;">setq</span> mu4e-compose-complete-only-after nil)
|
|
(<span style="color: #00ffff;">setq</span> mu4e-maildir <span style="color: #ffa07a;">"~/Mail"</span>)
|
|
|
|
(<span style="color: #00ffff;">setq</span> mu4e-drafts-folder <span style="color: #ffa07a;">"/[Gmail].Drafts"</span>)
|
|
(<span style="color: #00ffff;">setq</span> mu4e-sent-folder <span style="color: #ffa07a;">"/[Gmail].Sent Mail"</span>)
|
|
(<span style="color: #00ffff;">setq</span> mu4e-trash-folder <span style="color: #ffa07a;">"/[Gmail].Trash"</span>)
|
|
|
|
(<span style="color: #00ffff;">setq</span> mu4e-sent-messages-behavior 'delete)
|
|
(<span style="color: #00ffff;">setq</span> mu4e-headers-skip-duplicates t)
|
|
(<span style="color: #00ffff;">setq</span> mu4e-update-interval (* 60 20))
|
|
(<span style="color: #00ffff;">setq</span> message-kill-buffer-on-exit t)
|
|
(<span style="color: #00ffff;">setq</span> mail-user-agent 'mu4e-user-agent) <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">make mu4e the default mail client</span>
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">don't save message to Sent Messages, Gmail/IMAP takes care of this</span>
|
|
(<span style="color: #00ffff;">setq</span> mu4e-sent-messages-behavior 'delete)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">allow for updating mail using 'U' in the main view:</span>
|
|
(<span style="color: #00ffff;">setq</span> mu4e-get-mail-command <span style="color: #ffa07a;">"timeout 60 offlineimap"</span>)
|
|
|
|
(add-hook 'mu4e-compose-mode-hook
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">my-do-compose-stuff</span> () (flyspell-mode)))
|
|
|
|
(add-to-list 'mu4e-headers-actions '(<span style="color: #ffa07a;">"view in browser"</span> . mu4e-action-view-in-browser))
|
|
(add-to-list 'mu4e-view-actions '(<span style="color: #ffa07a;">"view in browser"</span> . mu4e-action-view-in-browser))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">mu4e-view</span> (msg headersbuf)
|
|
<span style="color: #ffa07a;">"Display the message MSG in a new buffer, and keep in sync with HDRSBUF.</span>
|
|
<span style="color: #ffa07a;"> 'In sync' here means that moving to the next/previous message in</span>
|
|
<span style="color: #ffa07a;"> the the message view affects HDRSBUF, as does marking etc.</span>
|
|
|
|
<span style="color: #ffa07a;"> As a side-effect, a message that is being viewed loses its 'unread'</span>
|
|
<span style="color: #ffa07a;"> marking if it still had that."</span>
|
|
(<span style="color: #00ffff;">let*</span> ((embedded <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">is it as an embedded msg (ie. message/rfc822 att)?</span>
|
|
(<span style="color: #00ffff;">when</span> (gethash (mu4e-message-field msg <span style="color: #b0c4de;">:path</span>)
|
|
mu4e~path-parent-docid-map) <span style="color: #ffc0cb; font-weight: bold;">t))</span>
|
|
(buf
|
|
(<span style="color: #00ffff;">if</span> embedded
|
|
(mu4e~view-embedded-winbuf)
|
|
(get-buffer-create mu4e~view-buffer-name))))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">note: mu4e~view-mark-as-read will pseudo-recursively call mu4e-view again</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">by triggering mu4e~view again as it marks the message as read</span>
|
|
(<span style="color: #00ffff;">with-current-buffer</span> buf
|
|
(switch-to-buffer buf)
|
|
(<span style="color: #00ffff;">setq</span> mu4e~view-msg msg)
|
|
<span style="color: #ff7f24;">;;</span><span style="color: #ff7f24;">(or embedded (not (mu4e~view-mark-as-read msg)))</span>
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">or</span> (mu4e~view-mark-as-read msg) t)
|
|
(<span style="color: #00ffff;">let</span> ((inhibit-read-only t))
|
|
(erase-buffer)
|
|
(mu4e~delete-all-overlays)
|
|
(insert (mu4e-view-message-text msg))
|
|
(goto-char (point-min))
|
|
(mu4e~fontify-cited)
|
|
(mu4e~fontify-signature)
|
|
(mu4e~view-make-urls-clickable)
|
|
(mu4e~view-show-images-maybe msg)
|
|
(<span style="color: #00ffff;">setq</span>
|
|
mu4e~view-buffer buf
|
|
mu4e~view-headers-buffer headersbuf)
|
|
(<span style="color: #00ffff;">when</span> embedded (local-set-key <span style="color: #ffa07a;">"q"</span> 'kill-buffer-and-window))
|
|
(mu4e-view-mode))))))
|
|
|
|
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">smtpmail</span>)
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">alternatively, for emacs-24 you can use:</span>
|
|
(<span style="color: #00ffff;">setq</span> message-send-mail-function 'smtpmail-send-it
|
|
smtpmail-stream-type 'starttls
|
|
smtpmail-default-smtp-server <span style="color: #ffa07a;">"smtp.gmail.com"</span>
|
|
smtpmail-smtp-server <span style="color: #ffa07a;">"smtp.gmail.com"</span>
|
|
smtpmail-smtp-service 587)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gmailmessagemode" class="outline-3">
|
|
<h3 id="gmailmessagemode"><span class="section-number-3">17.28</span> gmail-message-mode</h3>
|
|
<div class="outline-text-3" id="text-17-28">
|
|
<p>
|
|
This is useful with server mode when editing gmail messages. I think that it is not currently working, or it may need to be manually enabled.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">gmail-message-mode</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-hammode" class="outline-3">
|
|
<h3 id="hammode"><span class="section-number-3">17.29</span> ham-mode</h3>
|
|
<div class="outline-text-3" id="text-17-29">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">ham-mode</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> ham-mode-html-to-markdown-command '(<span style="color: #ffa07a;">"pandoc"</span> <span style="color: #ffa07a;">"--from"</span> <span style="color: #ffa07a;">"html"</span> <span style="color: #ffa07a;">"--to"</span> <span style="color: #ffa07a;">"markdown"</span> file))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-alert" class="outline-3">
|
|
<h3 id="alert"><span class="section-number-3">17.30</span> alert</h3>
|
|
<div class="outline-text-3" id="text-17-30">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">alert</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">alert-notifier-notify</span> (info)
|
|
(<span style="color: #00ffff;">if</span> alert-notifier-command
|
|
(<span style="color: #00ffff;">let</span> ((args
|
|
(list <span style="color: #ffa07a;">"-title"</span> (alert-encode-string (plist-get info <span style="color: #b0c4de;">:title</span>))
|
|
<span style="color: #ffa07a;">"-activate"</span> <span style="color: #ffa07a;">"org.gnu.Emacs"</span>
|
|
<span style="color: #ffa07a;">"-message"</span> (alert-encode-string (plist-get info <span style="color: #b0c4de;">:message</span>))
|
|
<span style="color: #ffa07a;">"-execute"</span> (format <span style="color: #ffa07a;">"\"%s\""</span> (switch-to-buffer-command (plist-get info <span style="color: #b0c4de;">:buffer</span>))))))
|
|
(apply #'call-process alert-notifier-command nil nil nil args))
|
|
(alert-message-notify info)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">switch-to-buffer-command</span> (buffer-name)
|
|
(emacsclient-command (format <span style="color: #ffa07a;">"(switch-to-buffer \\\"%s\\\")"</span> buffer-name)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">emacsclient-command</span> (command)
|
|
(format <span style="color: #ffa07a;">"emacsclient --server-file='%s' -e '%s'"</span> server-name command))
|
|
|
|
(<span style="color: #00ffff;">setq</span> alert-default-style 'notifier)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sauron" class="outline-3">
|
|
<h3 id="sauron"><span class="section-number-3">17.31</span> sauron</h3>
|
|
<div class="outline-text-3" id="text-17-31">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">sauron</span>
|
|
<span style="color: #b0c4de;">:defer</span> 5
|
|
<span style="color: #b0c4de;">:commands</span> (sauron-start sauron-start-hidden)
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">when</span> (eq system-type 'darwin)
|
|
(<span style="color: #00ffff;">setq</span> sauron-modules '(sauron-erc sauron-org sauron-notifications
|
|
sauron-twittering sauron-jabber sauron-identica))
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">sauron-dbus-start</span> ()
|
|
nil)
|
|
(makunbound 'dbus-path-emacs)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(sauron-start-hidden)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This should really check (featurep 'dbus) but for some reason</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">this is always true even if support is not there.</span>
|
|
(<span style="color: #00ffff;">setq</span> sauron-prio-sauron-started 2)
|
|
(<span style="color: #00ffff;">setq</span> sauron-min-priority 3)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(setq sauron-dbus-cookie t) ;; linux only?</span>
|
|
(<span style="color: #00ffff;">setq</span> sauron-separate-frame nil)
|
|
(<span style="color: #00ffff;">setq</span> sauron-nick-insensitivity 1)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">sauron:jabber-notify</span> (origin priority message <span style="color: #98fb98;">&optional</span> properties)
|
|
(funcall notify-function <span style="color: #ffa07a;">"gtalk"</span> message))
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">sauron:erc-notify</span> (origin priority message <span style="color: #98fb98;">&optional</span> properties)
|
|
(<span style="color: #00ffff;">let</span> ((event (plist-get properties <span style="color: #b0c4de;">:event</span>)))
|
|
(funcall notify-function <span style="color: #ffa07a;">"IRC"</span> message)))
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">sauron:mu4e-notify</span> (origin priority message <span style="color: #98fb98;">&optional</span> properties)
|
|
nil)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">sauron:dbus-notify</span> (origin priority message <span style="color: #98fb98;">&optional</span> properties)
|
|
(funcall notify-function <span style="color: #ffa07a;">"GMail"</span> message))
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">sauron:dispatch-notify</span> (origin priority message <span style="color: #98fb98;">&optional</span> properties)
|
|
(<span style="color: #00ffff;">let</span> ((handler (<span style="color: #00ffff;">cond</span> ((string= origin <span style="color: #ffa07a;">"erc"</span>) 'sauron:erc-notify)
|
|
((string= origin <span style="color: #ffa07a;">"jabber"</span>) 'sauron:jabber-notify)
|
|
((string= origin <span style="color: #ffa07a;">"mu4e"</span>) 'sauron:mu4e-notify)
|
|
((string= origin <span style="color: #ffa07a;">"dbus"</span>) 'sauron:dbus-notify)
|
|
(t (<span style="color: #00ffff;">lambda</span> (<span style="color: #98fb98;">&rest</span> r) nil)))))
|
|
(funcall handler origin priority message properties)))
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Prefering alert.el for now ;; (add-hook 'sauron-event-added-functions 'sauron:dispatch-notify)</span>
|
|
(sauron-start-hidden)
|
|
(add-hook 'sauron-event-added-functions 'sauron-alert-el-adapter)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-screenshot" class="outline-3">
|
|
<h3 id="screenshot"><span class="section-number-3">17.32</span> screenshot</h3>
|
|
<div class="outline-text-3" id="text-17-32">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">screenshot</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-libmpdee" class="outline-3">
|
|
<h3 id="libmpdee"><span class="section-number-3">17.33</span> libmpdee</h3>
|
|
<div class="outline-text-3" id="text-17-33">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">libmpdee</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-flyspell" class="outline-3">
|
|
<h3 id="flyspell"><span class="section-number-3">17.34</span> flyspell</h3>
|
|
<div class="outline-text-3" id="text-17-34">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">flyspell</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">kind of annoying</span>
|
|
<span style="color: #b0c4de;">:preface</span> (<span style="color: #00ffff;">setq</span> flyspell-issue-welcome-flag nil)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(diminish 'flyspell-mode)
|
|
(<span style="color: #00ffff;">bind-key</span> <span style="color: #ffa07a;">"M-s"</span> 'flyspell-correct-word-before-point flyspell-mode-map)
|
|
(<span style="color: #00ffff;">unbind-key</span> <span style="color: #ffa07a;">"C-;"</span> flyspell-mode-map)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">flyspell-emacs-popup-textual</span> (event poss word)
|
|
<span style="color: #ffa07a;">"A textual flyspell popup menu."</span>
|
|
(<span style="color: #00ffff;">let*</span> ((corrects (<span style="color: #00ffff;">if</span> flyspell-sort-corrections
|
|
(sort (car (cdr (cdr poss))) 'string<)
|
|
(car (cdr (cdr poss)))))
|
|
(cor-menu (<span style="color: #00ffff;">if</span> (consp corrects)
|
|
(mapcar (<span style="color: #00ffff;">lambda</span> (correct)
|
|
(list correct correct))
|
|
corrects)
|
|
'()))
|
|
(affix (car (cdr (cdr (cdr poss)))))
|
|
show-affix-info
|
|
(base-menu (<span style="color: #00ffff;">let</span> ((save (<span style="color: #00ffff;">if</span> (<span style="color: #00ffff;">and</span> (consp affix) show-affix-info)
|
|
(list
|
|
(list (concat <span style="color: #ffa07a;">"Save affix: "</span>
|
|
(car affix))
|
|
'save)
|
|
'(<span style="color: #ffa07a;">"Accept (session)"</span> session)
|
|
'(<span style="color: #ffa07a;">"Accept (buffer)"</span> buffer))
|
|
'((<span style="color: #ffa07a;">"Save word"</span> save)
|
|
(<span style="color: #ffa07a;">"Accept (session)"</span> session)
|
|
(<span style="color: #ffa07a;">"Accept (buffer)"</span> buffer)))))
|
|
(<span style="color: #00ffff;">if</span> (consp cor-menu)
|
|
(append cor-menu (cons <span style="color: #ffa07a;">""</span> save))
|
|
save)))
|
|
(menu (mapcar
|
|
(<span style="color: #00ffff;">lambda</span> (arg) (<span style="color: #00ffff;">if</span> (consp arg) (car arg) arg))
|
|
base-menu)))
|
|
(cadr (assoc (popup-menu* menu <span style="color: #b0c4de;">:scroll-bar</span> t) base-menu))))
|
|
(fset 'flyspell-emacs-popup 'flyspell-emacs-popup-textual)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-webmode" class="outline-3">
|
|
<h3 id="webmode"><span class="section-number-3">17.35</span> web-mode</h3>
|
|
<div class="outline-text-3" id="text-17-35">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">web-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> ((<span style="color: #ffa07a;">"\\.tmpl\\'"</span> . web-mode)
|
|
(<span style="color: #ffa07a;">"\\.cql\\'"</span> . web-mode))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defvar-setq</span> web-mode-content-types-alist
|
|
'((<span style="color: #ffa07a;">"gtl"</span> . <span style="color: #ffa07a;">"\\.tmpl\\'"</span>)
|
|
(<span style="color: #ffa07a;">"gtl"</span> . <span style="color: #ffa07a;">"\\.cql\\'"</span>)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmthemes" class="outline-3">
|
|
<h3 id="helmthemes"><span class="section-number-3">17.36</span> helm-themes</h3>
|
|
<div class="outline-text-3" id="text-17-36">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-themes</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmswoop" class="outline-3">
|
|
<h3 id="helmswoop"><span class="section-number-3">17.37</span> helm-swoop</h3>
|
|
<div class="outline-text-3" id="text-17-37">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-swoop</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-S-s"</span> . helm-swoop)
|
|
<span style="color: #b0c4de;">:commands</span> helm-swoop)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-perspective" class="outline-3">
|
|
<h3 id="perspective"><span class="section-number-3">17.38</span> perspective</h3>
|
|
<div class="outline-text-3" id="text-17-38">
|
|
<p>
|
|
I've disabled perspective because I just don't use it much.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">perspective</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:demand</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(persp-mode)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">persp-get-perspectives-for-buffer</span> (buffer)
|
|
<span style="color: #ffa07a;">"Get the names of all of the perspectives of which `buffer` is a member."</span>
|
|
(<span style="color: #00ffff;">cl-loop</span> for perspective being the hash-value of perspectives-hash
|
|
if (member buffer (persp-buffers perspective))
|
|
collect (persp-name perspective)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">persp-pick-perspective-by-buffer</span> (buffer)
|
|
<span style="color: #ffa07a;">"Select a buffer and go to the perspective to which that buffer</span>
|
|
<span style="color: #ffa07a;"> belongs. If the buffer belongs to more than one perspective</span>
|
|
<span style="color: #ffa07a;"> completion will be used to pick the perspective to switch to.</span>
|
|
<span style="color: #ffa07a;"> Switch the focus to the window in which said buffer is displayed</span>
|
|
<span style="color: #ffa07a;"> if such a window exists. Otherwise display the buffer in whatever</span>
|
|
<span style="color: #ffa07a;"> window is active in the perspective."</span>
|
|
(<span style="color: #00ffff;">interactive</span> (list (funcall persp-interactive-completion-function
|
|
<span style="color: #ffa07a;">"Buffer: "</span> (mapcar 'buffer-name (buffer-list)))))
|
|
(<span style="color: #00ffff;">let*</span> ((perspectives (persp-get-perspectives-for-buffer (get-buffer buffer)))
|
|
(perspective (<span style="color: #00ffff;">if</span> (> (length perspectives) 1)
|
|
(funcall persp-interactive-completion-function
|
|
(format <span style="color: #ffa07a;">"Select the perspective in which you would like to visit %s."</span>
|
|
buffer)
|
|
perspectives)
|
|
(car perspectives))))
|
|
(<span style="color: #00ffff;">if</span> (string= (persp-name persp-curr) perspective)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This allows the opening of a single buffer in more than one window</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">in a single perspective.</span>
|
|
(switch-to-buffer buffer)
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(persp-switch perspective)
|
|
(<span style="color: #00ffff;">if</span> (get-buffer-window buffer)
|
|
(set-frame-selected-window nil (get-buffer-window buffer))
|
|
(switch-to-buffer buffer))))))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">persp-mode-switch-buffers</span> (arg)
|
|
(<span style="color: #00ffff;">interactive</span> <span style="color: #ffa07a;">"P"</span>)
|
|
(<span style="color: #00ffff;">if</span> arg (call-interactively 'ido-switch-buffer)
|
|
(call-interactively 'persp-pick-perspective-by-buffer)))
|
|
|
|
(define-key persp-mode-map (kbd <span style="color: #ffa07a;">"C-x b"</span>) 'persp-mode-switch-buffers))
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"C-c 9"</span> . persp-switch))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-smex" class="outline-3">
|
|
<h3 id="smex"><span class="section-number-3">17.39</span> smex</h3>
|
|
<div class="outline-text-3" id="text-17-39">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">smex</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Using helm-M-x instead</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:commands</span> smex
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This is here because smex feels like part of ido</span>
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #ffa07a;">"M-x"</span> . smex))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-java" class="outline-3">
|
|
<h3 id="java"><span class="section-number-3">17.40</span> java</h3>
|
|
<div class="outline-text-3" id="text-17-40">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(add-hook 'java-mode-hook
|
|
(<span style="color: #00ffff;">lambda</span> ()
|
|
(<span style="color: #00ffff;">setq</span> c-basic-offset 4
|
|
tab-width 4
|
|
indent-tabs-mode t)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-androidmode" class="outline-3">
|
|
<h3 id="androidmode"><span class="section-number-3">17.41</span> android-mode</h3>
|
|
<div class="outline-text-3" id="text-17-41">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">android-mode</span>
|
|
<span style="color: #b0c4de;">:after</span> s
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> android-mode-sdk-dir
|
|
(s-trim (shell-command-to-string <span style="color: #ffa07a;">"android_sdk_directory"</span>)))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-gradlemode" class="outline-3">
|
|
<h3 id="gradlemode"><span class="section-number-3">17.42</span> gradle-mode</h3>
|
|
<div class="outline-text-3" id="text-17-42">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">gradle-mode</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-jsxmode" class="outline-3">
|
|
<h3 id="jsxmode"><span class="section-number-3">17.43</span> jsx-mode</h3>
|
|
<div class="outline-text-3" id="text-17-43">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">jsx-mode</span>
|
|
<span style="color: #b0c4de;">:mode</span> <span style="color: #ffa07a;">"\\.jsx\\'"</span>)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-css" class="outline-3">
|
|
<h3 id="css"><span class="section-number-3">17.44</span> css</h3>
|
|
<div class="outline-text-3" id="text-17-44">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(eval-after-load 'css-mode
|
|
'(define-key css-mode-map (kbd <span style="color: #ffa07a;">"C-c b"</span>) 'web-beautify-css))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-robe" class="outline-3">
|
|
<h3 id="robe"><span class="section-number-3">17.45</span> robe</h3>
|
|
<div class="outline-text-3" id="text-17-45">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">robe</span>
|
|
<span style="color: #b0c4de;">:commands</span> robe-mode
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span> (add-hook 'ruby-mode-hook 'robe-mode)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-rinari" class="outline-3">
|
|
<h3 id="rinari"><span class="section-number-3">17.46</span> rinari</h3>
|
|
<div class="outline-text-3" id="text-17-46">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">rinari</span>
|
|
<span style="color: #b0c4de;">:after</span> ruby-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmgtags" class="outline-3">
|
|
<h3 id="helmgtags"><span class="section-number-3">17.47</span> helm-gtags</h3>
|
|
<div class="outline-text-3" id="text-17-47">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-gtags</span>
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> helm-gtags-ignore-case t
|
|
helm-gtags-auto-update t
|
|
helm-gtags-use-input-at-cursor t
|
|
helm-gtags-pulse-at-cursor t
|
|
helm-gtags-prefix-key <span style="color: #ffa07a;">"\C-cg"</span>
|
|
helm-gtags-suggested-key-mapping t)
|
|
(<span style="color: #00ffff;">cl-loop</span> for hook in '(dired-mode-hook eshell-mode-hook c-mode-hook
|
|
c++-mode-hook asm-mode-hook)
|
|
do (add-hook hook 'helm-gtags-mode)))
|
|
<span style="color: #b0c4de;">:bind</span> (<span style="color: #b0c4de;">:map</span> helm-gtags-mode-map
|
|
(<span style="color: #ffa07a;">"C-c g a"</span> . helm-gtags-tags-in-this-function)
|
|
(<span style="color: #ffa07a;">"C-j"</span> . helm-gtags-select)
|
|
(<span style="color: #ffa07a;">"M-."</span> . helm-gtags-dwim)
|
|
(<span style="color: #ffa07a;">"M-,"</span> . helm-gtags-pop-stack)
|
|
(<span style="color: #ffa07a;">"C-c <"</span> . helm-gtags-previous-history)
|
|
(<span style="color: #ffa07a;">"C-c >"</span> . helm-gtags-next-history)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sgmlmode" class="outline-3">
|
|
<h3 id="sgmlmode"><span class="section-number-3">17.48</span> sgml-mode</h3>
|
|
<div class="outline-text-3" id="text-17-48">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">sgml-mode</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">:bind ("C-c b" . web-beautify-html) TODO: mode specific, change binding</span>
|
|
<span style="color: #b0c4de;">:commands</span> sgml-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-evil" class="outline-3">
|
|
<h3 id="evil"><span class="section-number-3">17.49</span> evil</h3>
|
|
<div class="outline-text-3" id="text-17-49">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">evil</span> <span style="color: #b0c4de;">:commands</span> (evil-mode))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-hackernews" class="outline-3">
|
|
<h3 id="hackernews"><span class="section-number-3">17.50</span> hackernews</h3>
|
|
<div class="outline-text-3" id="text-17-50">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">hackernews</span> <span style="color: #b0c4de;">:commands</span> hackernews)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-appearance" class="outline-2">
|
|
<h2 id="appearance"><span class="section-number-2">18</span> Appearance</h2>
|
|
<div class="outline-text-2" id="text-18">
|
|
</div><div id="outline-container-basicconfig" class="outline-3">
|
|
<h3 id="basicconfig"><span class="section-number-3">18.1</span> Basic Config</h3>
|
|
<div class="outline-text-3" id="text-18-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> inhibit-startup-screen t)
|
|
(blink-cursor-mode -1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-themes" class="outline-3">
|
|
<h3 id="themes"><span class="section-number-3">18.2</span> Themes</h3>
|
|
<div class="outline-text-3" id="text-18-2">
|
|
<p>
|
|
Ensure all themes that I use are installed:
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">solarized-theme</span>
|
|
<span style="color: #b0c4de;">:init</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">setq</span> solarized-high-contrast-mode-line t)))
|
|
|
|
(<span style="color: #00ffff;">defvar-setq</span> packages-appearance
|
|
'(monokai-theme solarized-theme zenburn-theme base16-theme molokai-theme
|
|
tango-2-theme gotham-theme sublime-themes rainbow-delimiters waher-theme
|
|
ample-theme material-theme zerodark-theme color-theme-modern leuven-theme
|
|
spacemacs-theme gruvbox-theme forest-blue-theme flatland-theme afternoon-theme))
|
|
|
|
(ensure-packages-installed packages-appearance)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-alltheicons" class="outline-3">
|
|
<h3 id="alltheicons"><span class="section-number-3">18.3</span> all-the-icons</h3>
|
|
<div class="outline-text-3" id="text-18-3">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">all-the-icons</span>
|
|
<span style="color: #b0c4de;">:demand</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-spaceline" class="outline-3">
|
|
<h3 id="spaceline"><span class="section-number-3">18.4</span> spaceline</h3>
|
|
<div class="outline-text-3" id="text-18-4">
|
|
</div><div id="outline-container-disablesrgbcolorspacetomakepowerlineseparatorswork" class="outline-4">
|
|
<h4 id="disablesrgbcolorspacetomakepowerlineseparatorswork"><span class="section-number-4">18.4.1</span> Disable sRGB colorspace to make powerline separators work</h4>
|
|
<div class="outline-text-4" id="text-18-4-1">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> ns-use-srgb-colorspace nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-config1" class="outline-4">
|
|
<h4 id="config1"><span class="section-number-4">18.4.2</span> config</h4>
|
|
<div class="outline-text-4" id="text-18-4-2">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">spaceline-config</span>
|
|
<span style="color: #b0c4de;">:ensure</span> spaceline
|
|
<span style="color: #b0c4de;">:commands</span> spaceline-compile
|
|
<span style="color: #b0c4de;">:preface</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">spaceline-gh-notifier-disable-default-notifier-modeline</span> (<span style="color: #98fb98;">&rest</span> args)
|
|
(delq 'github-notifier-mode-line global-mode-string)))
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(advice-add 'github-notifier-mode <span style="color: #b0c4de;">:after</span>
|
|
'spaceline-gh-notifier-disable-default-notifier-modeline)
|
|
(advice-add 'github-notifier-update <span style="color: #b0c4de;">:after</span>
|
|
'spaceline-gh-notifier-disable-default-notifier-modeline)
|
|
|
|
(<span style="color: #00ffff;">setq</span> powerline-default-separator (random-choice '(butt slant wave)))
|
|
(<span style="color: #00ffff;">setq</span> spaceline-workspace-numbers-unicode t
|
|
spaceline-window-numbers-unicode t)
|
|
|
|
(<span style="color: #00ffff;">if</span> (display-graphic-p)
|
|
(<span style="color: #00ffff;">setq-default</span> powerline-default-separator 'wave)
|
|
(<span style="color: #00ffff;">setq-default</span> powerline-default-separator 'utf-8))
|
|
|
|
(spaceline-define-segment imalison:muni
|
|
<span style="color: #ffa07a;">"Display the number of minutes until the next muni train comes"</span>
|
|
(format <span style="color: #ffa07a;">"🚇%s"</span> (imalison:get-cached-muni-time))
|
|
<span style="color: #b0c4de;">:when</span> active)
|
|
|
|
(spaceline-define-segment spaceline-gh-notifier
|
|
<span style="color: #ffa07a;">"Display the number of github notifications the user has"</span>
|
|
(format <span style="color: #ffa07a;">"✉%s"</span> github-notifier-unread-count)
|
|
<span style="color: #b0c4de;">:when</span> (> github-notifier-unread-count 0))
|
|
|
|
(advice-add 'pl/separator-height <span style="color: #b0c4de;">:around</span>
|
|
(<span style="color: #00ffff;">lambda</span> (<span style="color: #00ffff;">function</span> <span style="color: #98fb98;">&rest</span> args)
|
|
(+ (apply function args) 10)))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This needs to be executed after setting the font because the separators</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">need to get regenerated</span>
|
|
(advice-add 'imalison:set-font-size <span style="color: #b0c4de;">:after</span> 'spaceline-compile)
|
|
|
|
(spaceline-helm-mode)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">'spaceline-gh-notifier and 'imalison:muni disabled for now</span>
|
|
(spaceline-spacemacs-theme)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-pagebreaklines" class="outline-3">
|
|
<h3 id="pagebreaklines"><span class="section-number-3">18.5</span> page-break-lines</h3>
|
|
<div class="outline-text-3" id="text-18-5">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">page-break-lines</span>
|
|
<span style="color: #b0c4de;">:defer</span> 1
|
|
<span style="color: #b0c4de;">:diminish</span> (page-break-lines-mode)
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(add-to-list 'page-break-lines-modes 'prog-mode)
|
|
(global-page-break-lines-mode +1)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-helmthemes1" class="outline-3">
|
|
<h3 id="helmthemes1"><span class="section-number-3">18.6</span> helm-themes</h3>
|
|
<div class="outline-text-3" id="text-18-6">
|
|
<p>
|
|
helm-themes provides an easy way to switch between emacs-themes.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">helm-themes</span>
|
|
<span style="color: #b0c4de;">:after</span> helm)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-windownumber" class="outline-3">
|
|
<h3 id="windownumber"><span class="section-number-3">18.7</span> window-number</h3>
|
|
<div class="outline-text-3" id="text-18-7">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">window-number</span>
|
|
<span style="color: #b0c4de;">:defer</span> t)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-whitespacesetup" class="outline-3">
|
|
<h3 id="whitespacesetup"><span class="section-number-3">18.8</span> Whitespace Setup</h3>
|
|
<div class="outline-text-3" id="text-18-8">
|
|
<p>
|
|
Make whitespace-mode use just basic coloring:
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> whitespace-style
|
|
'(spaces tabs newline space-mark tab-mark newline-mark))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Set the character used to represent spaces to ·, and the character used for tabs to be ▷.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">setq</span> whitespace-display-mappings
|
|
'((space-mark 32 [183] [46])
|
|
(tab-mark 9 [9655 9] [92 9])))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-colorizecompliationbuffers" class="outline-3">
|
|
<h3 id="colorizecompliationbuffers"><span class="section-number-3">18.9</span> Colorize Compliation Buffers</h3>
|
|
<div class="outline-text-3" id="text-18-9">
|
|
<p>
|
|
This automatically applies ansi-color interpretation of terminal escape
|
|
sequences to compilation buffers.
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:colorize-compilation-buffer</span> ()
|
|
(<span style="color: #00ffff;">let</span> ((was-read-only buffer-read-only))
|
|
(<span style="color: #00ffff;">unwind-protect</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">when</span> was-read-only
|
|
(read-only-mode -1))
|
|
(ansi-color-apply-on-region (point-min) (point-max)))
|
|
(<span style="color: #00ffff;">when</span> was-read-only
|
|
(read-only-mode +1)))))
|
|
|
|
(add-hook 'compilation-filter-hook 'imalison:colorize-compilation-buffer)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-automaticthemechanger" class="outline-3">
|
|
<h3 id="automaticthemechanger"><span class="section-number-3">18.10</span> Automatic Theme Changer</h3>
|
|
<div class="outline-text-3" id="text-18-10">
|
|
<p>
|
|
Disabled for now
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">use-package</span> <span style="color: #7fffd4;">theme-changer</span>
|
|
<span style="color: #b0c4de;">:disabled</span> t
|
|
<span style="color: #b0c4de;">:config</span>
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">destructuring-bind</span> (latitude longitude)
|
|
(imalison:get-lat-long)
|
|
(<span style="color: #00ffff;">setq</span> calendar-latitude latitude)
|
|
(<span style="color: #00ffff;">setq</span> calendar-longitude longitude))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-fixansitermcolors" class="outline-3">
|
|
<h3 id="fixansitermcolors"><span class="section-number-3">18.11</span> Fix <code>ansi-term</code> Colors</h3>
|
|
<div class="outline-text-3" id="text-18-11">
|
|
<p>
|
|
For some reason, loading certain themes can cause colors in
|
|
<code>ansi-term-color-vector</code> to be undefined. The following code handles restoring
|
|
the original <code>ansi-term-color-vector</code> state. The code is exectued in a
|
|
load-theme hook (See the heading below).
|
|
</p>
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">term</span>)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:ansi-term-color-vector</span> ansi-term-color-vector)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:ansi-term-color-vector-broken?</span> ()
|
|
(<span style="color: #00ffff;">--some</span> (<span style="color: #00ffff;">or</span> (eq <span style="color: #eedd82;">it</span> 'unspecified) (not (symbolp <span style="color: #eedd82;">it</span>)))
|
|
(append ansi-term-color-vector nil)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:restore-ansi-term-color-vector</span> (<span style="color: #98fb98;">&optional</span> force)
|
|
(<span style="color: #00ffff;">when</span> (<span style="color: #00ffff;">or</span> force (imalison:ansi-term-color-vector-broken?))
|
|
(<span style="color: #00ffff;">setq</span> ansi-term-color-vector imalison:ansi-term-color-vector)))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-afterloadthemehook" class="outline-3">
|
|
<h3 id="afterloadthemehook"><span class="section-number-3">18.12</span> After <code>load-theme</code> hook</h3>
|
|
<div class="outline-text-3" id="text-18-12">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:light-theme</span> 'solarized-light)
|
|
(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:dark-theme</span> 'material)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:after-load-theme</span> (<span style="color: #98fb98;">&rest</span> _args)
|
|
(<span style="color: #00ffff;">when</span> (fboundp 'powerline-reset)
|
|
(powerline-reset))
|
|
(set-face-background 'fringe (face-background 'default))
|
|
(imalison:restore-ansi-term-color-vector))
|
|
|
|
(advice-add 'load-theme <span style="color: #b0c4de;">:after</span> #'imalison:after-load-theme)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-frameinitialization" class="outline-3">
|
|
<h3 id="frameinitialization"><span class="section-number-3">18.13</span> Frame Initialization</h3>
|
|
<div class="outline-text-3" id="text-18-13">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">imalison:linum-format</span>)
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:format-linum</span> (line-text)
|
|
(propertize (format imalison:linum-format line-text) 'face 'linum))
|
|
|
|
(make-variable-buffer-local 'imalison:linum-format)
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:linum-before-numbering-hook</span> ()
|
|
(<span style="color: #00ffff;">setq</span> imalison:linum-format
|
|
(concat <span style="color: #ffa07a;">"%"</span> (number-to-string
|
|
(max (length
|
|
(number-to-string
|
|
(count-lines (point-min) (point-max)))) 3)) <span style="color: #ffa07a;">"d"</span>)))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:remove-fringe-and-hl-line-mode</span> (<span style="color: #98fb98;">&rest</span> _stuff)
|
|
(<span style="color: #00ffff;">interactive</span>)
|
|
(<span style="color: #00ffff;">if</span> (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
|
|
(<span style="color: #00ffff;">if</span> (fboundp 'tool-bar-mode) (tool-bar-mode -1))
|
|
(<span style="color: #00ffff;">if</span> (fboundp 'menu-bar-mode) (menu-bar-mode -1))
|
|
(<span style="color: #00ffff;">defvar-setq</span> linum-format 'imalison:format-linum)
|
|
(add-hook 'linum-before-numbering-hook 'imalison:linum-before-numbering-hook)
|
|
(<span style="color: #00ffff;">setq</span> left-margin-width 0)
|
|
(<span style="color: #00ffff;">defvar-setq</span> hl-line-mode nil))
|
|
|
|
(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">imalison:appearance</span> (<span style="color: #98fb98;">&optional</span> frame)
|
|
(<span style="color: #00ffff;">interactive</span> (list nil))
|
|
(<span style="color: #00ffff;">if</span> (display-graphic-p)
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(<span style="color: #00ffff;">condition-case</span> error
|
|
(set-face-attribute 'default nil <span style="color: #b0c4de;">:font</span> <span style="color: #ffa07a;">"source code pro"</span>)
|
|
('error (message <span style="color: #ffa07a;">"Error: %s, when setting font"</span> error)))
|
|
(set-face-attribute 'default nil <span style="color: #b0c4de;">:weight</span> 'semi-bold)
|
|
(set-face-attribute
|
|
'default nil <span style="color: #b0c4de;">:height</span> imalison:default-font-size-pt))
|
|
(<span style="color: #00ffff;">progn</span>
|
|
(load-theme 'source-code-pro t)
|
|
(message <span style="color: #ffa07a;">"not setting font"</span>)))
|
|
(<span style="color: #00ffff;">setq</span> powerline-default-separator (<span style="color: #00ffff;">if</span> (display-graphic-p) 'wave 'utf-8))
|
|
(load-theme imalison:dark-theme t)
|
|
(spaceline-compile)
|
|
(imalison:remove-fringe-and-hl-line-mode))
|
|
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">This is needed because you can't set the font or theme at daemon start-up.</span>
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">(when (display-graphic-p) (imalison:appearance))</span>
|
|
(add-hook 'after-init-hook 'imalison:appearance)
|
|
(add-hook 'after-make-frame-functions 'imalison:appearance)
|
|
<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">TODO/XXX: why do we immediately remove this hook?</span>
|
|
(remove-hook 'after-make-frame-functions 'imalison:appearance)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-postinitcustom" class="outline-2">
|
|
<h2 id="postinitcustom"><span class="section-number-2">19</span> Post Init Custom</h2>
|
|
<div class="outline-text-2" id="text-19">
|
|
<div class="org-src-container">
|
|
<pre class="src src-emacs-lisp">(<span style="color: #00ffff;">when</span> (file-exists-p custom-after-file) (load custom-after-file))
|
|
(<span style="color: #00ffff;">when</span> (file-exists-p machine-custom) (load machine-custom))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="postamble" class="status">
|
|
<p class="author">Author: Ivan Malison</p>
|
|
<p class="date">Created: 2016-11-08 Tue 11:35</p>
|
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
|
</div>
|
|
</body>
|
|
</html>
|