emacs.d

bloated emacs configuration
git clone git://git.ckyln.com/~cem/emacs.d.git
Log | Files | Refs | README

commit cdde8623ad5018a23d07044aade12b2d718b7718
parent 8f8729aed7aa767c879012b4f056b2956eab6409
Author: Cem Keylan <cem@ckyln.com>
Date:   Tue, 31 Mar 2020 17:42:22 +0300

add treemacs keybindings

Diffstat:
Ainit.html | 1344+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Minit.org | 23+++++++++++++++++++++++
2 files changed, 1367 insertions(+), 0 deletions(-)

diff --git a/init.html b/init.html @@ -0,0 +1,1344 @@ +<?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> +<!-- 2020-03-31 Tue 11:51 --> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1" /> +<title>Emacs Configuration</title> +<meta name="generator" content="Org mode" /> +<meta name="author" content="Cem Keylan" /> +<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-hledger:before { content: 'hledger'; } + 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; } + .equation-container { + display: table; + text-align: center; + width: 100%; + } + .equation { + vertical-align: middle; + } + .equation-label { + display: table-cell; + text-align: right; + vertical-align: middle; + } + .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> +<script type="text/javascript"> +// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&amp;dn=gpl-3.0.txt GPL-v3-or-Later +<!--/*--><![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; + } + /*]]>*///--> +// @license-end +</script> +</head> +<body> +<div id="content"> +<h1 class="title">Emacs Configuration</h1> + +<div id="outline-container-org38d8b49" class="outline-2"> +<h2 id="org38d8b49"><span class="section-number-2">1</span> Table of Contents&#xa0;&#xa0;&#xa0;<span class="tag"><span class="TOC_2_org">TOC_2_org</span></span></h2> +<div class="outline-text-2" id="text-1"> +<ul class="org-ul"> +<li><a href="#org889143b">Intro</a> +<ul class="org-ul"> +<li><a href="#org696588f">Installation Instructions</a></li> +<li><a href="#org15006ae">Ignoring init.el changes on Git</a></li> +<li><a href="#org486ff6b">Meta</a></li> +<li><a href="#orgaff74f8">Attribution</a></li> +</ul></li> +<li><a href="#org02a2e33">Startup Settings</a> +<ul class="org-ul"> +<li><a href="#org21b2321">Declutter</a></li> +<li><a href="#orgbe93c8a">Package management</a></li> +<li><a href="#org08efa3a">Custom-file</a></li> +<li><a href="#org8659361">Private file</a></li> +<li><a href="#org65284c7">Diary file</a></li> +<li><a href="#org502f09d">Starting the server</a></li> +</ul></li> +<li><a href="#orge5ec7a9">Packages</a> +<ul class="org-ul"> +<li><a href="#org457d858">Evil-mode</a></li> +<li><a href="#org0b2e795">Org-mode</a></li> +<li><a href="#org687533d">Magit</a></li> +<li><a href="#org5437d0b">Flycheck</a></li> +<li><a href="#org057d90a">Company Mode</a></li> +<li><a href="#org6756440">Mingus</a></li> +<li><a href="#orga5f1dd8">Projectile</a></li> +<li><a href="#orge4c555c">Treemacs</a></li> +<li><a href="#org561be12">emacs-dashboard</a></li> +<li><a href="#org50ad2ba">Extras</a></li> +</ul></li> +<li><a href="#orgc7078e4">Themes and Icons</a></li> +<li><a href="#orgefe4cf9">Filetype Configurations</a> +<ul class="org-ul"> +<li><a href="#orgff35f48">Default Formatting</a></li> +<li><a href="#org1a94d90">Markdown</a></li> +<li><a href="#orgcda54d0">Shell</a></li> +<li><a href="#orgdc9f2a6">Python</a></li> +</ul></li> +<li><a href="#org43f2b13">Other Settings</a> +<ul class="org-ul"> +<li><a href="#orgbadee03">Dired &#x2013; ls dired</a></li> +<li><a href="#orgc955759">Coding System for Terminal</a></li> +<li><a href="#org566f39f">Backup Options</a></li> +<li><a href="#orgf7aff98">Set Browser</a></li> +</ul></li> +<li><a href="#orgf6bda23">Notes</a> +<ul class="org-ul"> +<li><a href="#org65479c3">Reverting to package.el</a></li> +</ul></li> +</ul> +</div> +</div> + +<div id="outline-container-org889143b" class="outline-2"> +<h2 id="org889143b"><span class="section-number-2">2</span> Intro</h2> +<div class="outline-text-2" id="text-2"> +<p> +This is my emacs configuration file, I used to have a big +directory of lisp code but it became harder to maintain +and keep track of. That's why I have created this org-mode +init file. +</p> + +<p> +Please note that this init.org does not attempt to be +simplistic and might include lots of things that you +might not want on your own setup. +</p> +</div> + +<div id="outline-container-org696588f" class="outline-3"> +<h3 id="org696588f"><span class="section-number-3">2.1</span> Installation Instructions</h3> +<div class="outline-text-3" id="text-2-1"> +<p> +If you want to use my emacs configuration, it is pretty simple +to get started. Simply clone the repository and start emacs! +</p> + +<div class="org-src-container"> +<pre class="src src-sh"><span style="color: #9ca0a4;"># </span><span style="color: #9ca0a4;">Move your old configuration (if you have one)</span> +mv $<span style="color: #6a1868;">HOME</span>/.emacs.d $<span style="color: #6a1868;">HOME</span>/.emacs.d.bak + +<span style="color: #9ca0a4;"># </span><span style="color: #9ca0a4;">Clone the repository</span> +git clone git://git.ckyln.com/emacs.d $<span style="color: #6a1868;">HOME</span>/.emacs.d + +<span style="color: #9ca0a4;"># </span><span style="color: #9ca0a4;">Start emacs</span> +emacs +</pre> +</div> + +<p> +This will probably take a while, especially because it is +setting up for the first time. You might need to restart +emacs after the initial configuration is done. +</p> +</div> +</div> + +<div id="outline-container-org15006ae" class="outline-3"> +<h3 id="org15006ae"><span class="section-number-3">2.2</span> Ignoring init.el changes on Git</h3> +<div class="outline-text-3" id="text-2-2"> +<p> +It can be annoying to see whenever you change your init.org +and see git wanting to update init.el as well. You can avoid +this by doing +</p> + +<div class="org-src-container"> +<pre class="src src-sh">git update-index --assume-unchanged init.el +</pre> +</div> +</div> +</div> + +<div id="outline-container-org486ff6b" class="outline-3"> +<h3 id="org486ff6b"><span class="section-number-3">2.3</span> Meta</h3> +<div class="outline-text-3" id="text-2-3"> +<p> +To load init.el properly we run a function such as this. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">defun</span> <span style="color: #a626a4;">tangle-init</span> () + <span style="color: #84888b; font-style: italic;">"If the current buffer is 'init.org' the code-blocks are</span> +<span style="color: #84888b; font-style: italic;">tangled, and the tangled file is compiled."</span> + (<span style="color: #e45649;">when</span> (equal (buffer-file-name) + (expand-file-name (concat user-emacs-directory <span style="color: #50a14f;">"init.org"</span>))) + <span style="color: #9ca0a4;">;; </span><span style="color: #9ca0a4;">Avoid running hooks when tangling.</span> + (<span style="color: #e45649;">let</span> ((prog-mode-hook nil)) + (org-babel-tangle) + (byte-compile-file (concat user-emacs-directory <span style="color: #50a14f;">"init.el"</span>))))) + +(add-hook 'after-save-hook 'tangle-init) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgaff74f8" class="outline-3"> +<h3 id="orgaff74f8"><span class="section-number-3">2.4</span> Attribution</h3> +<div class="outline-text-3" id="text-2-4"> +<p> +I am still relatively new to the emacs environment myself. These are +the people that I have stolen from. +</p> +<dl class="org-dl"> +<dt>Bernt Hansen</dt><dd>I have got lots of org-mode tweaks from Bernt's +<a href="http://doc.norang.ca/org-mode.html">Guide to Org Mode</a>.</dd> +<dt>Adam Schaefers</dt><dd>While I don't have much code from Adam's Emacs +configuration, I was inspired by his passion towards Emacs to make +the switch from Vim.</dd> +<dt>Gregory J. Stein</dt><dd>I have learned quite a bit from Greg's blog posts +on Emacs. Check out his own <a href="https://github.com/gjstein/emacs.d">Emacs configuration</a>!</dd> +<dt>Lars Tveito</dt><dd>I was totally inspired from Lars to create an init.org +file to manage my Emacs configuration. <a href="https://github.com/larstvei/dot-emacs">Emacs configuration</a></dd> +</dl> +</div> +</div> +</div> + +<div id="outline-container-org02a2e33" class="outline-2"> +<h2 id="org02a2e33"><span class="section-number-2">3</span> Startup Settings</h2> +<div class="outline-text-2" id="text-3"> +<p> +The most important stuff are (for me) is <code>use-package</code> and +disabling the clutter as soon as possible. By clutter, I mean +bars and menus. Also let's disable the splash screen. +</p> +</div> + +<div id="outline-container-org21b2321" class="outline-3"> +<h3 id="org21b2321"><span class="section-number-3">3.1</span> Declutter</h3> +<div class="outline-text-3" id="text-3-1"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(menu-bar-mode 0) +(<span style="color: #e45649;">setq</span> inhibit-splash-screen t) +</pre> +</div> + +<p> +If you are using emacs-nox, tool-bar-mode (probably) and +scroll-bar-mode will not be defined. This checks if they are +defined, and, if they are, will set them to 0. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">when</span> (fboundp 'tool-bar-mode) (tool-bar-mode 0)) +(<span style="color: #e45649;">when</span> (fboundp 'scroll-bar-mode) (scroll-bar-mode 0)) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgbe93c8a" class="outline-3"> +<h3 id="orgbe93c8a"><span class="section-number-3">3.2</span> Package management</h3> +<div class="outline-text-3" id="text-3-2"> +<p> +I have switched to straight.el for package management. +It is overall faster than package.el, and I don't want +to use every package that I have tried out. The following +is the one time bootstrapping script that straight.el uses +to install itself. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">bootstrap-version</span>) +(<span style="color: #e45649;">let</span> ((bootstrap-file + (expand-file-name <span style="color: #50a14f;">"straight/repos/straight.el/bootstrap.el"</span> user-emacs-directory)) + (bootstrap-version 5)) + (<span style="color: #e45649;">unless</span> (file-exists-p bootstrap-file) + (<span style="color: #e45649;">with-current-buffer</span> + (url-retrieve-synchronously + <span style="color: #50a14f;">"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"</span> + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) +</pre> +</div> +</div> + +<div id="outline-container-org04c0368" class="outline-4"> +<h4 id="org04c0368"><span class="section-number-4">3.2.1</span> use-package</h4> +<div class="outline-text-4" id="text-3-2-1"> +<p> +We need use-package for maintaining other packages. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(straight-use-package 'use-package) +</pre> +</div> +</div> +</div> +</div> + +<div id="outline-container-org08efa3a" class="outline-3"> +<h3 id="org08efa3a"><span class="section-number-3">3.3</span> Custom-file</h3> +<div class="outline-text-3" id="text-3-3"> +<p> +I don't like custom variables on my init.el, I prefer having it on +my cache folder. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq</span> custom-file <span style="color: #50a14f;">"~/.cache/emacs-custom.el"</span>) +</pre> +</div> + +<p> +Let's load the custom-file if it is there +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">when</span> (file-exists-p custom-file) +(load custom-file)) +</pre> +</div> +</div> +</div> + +<div id="outline-container-org8659361" class="outline-3"> +<h3 id="org8659361"><span class="section-number-3">3.4</span> Private file</h3> +<div class="outline-text-3" id="text-3-4"> +<p> +Let's load a private file if it exists +</p> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(add-hook + 'after-init-hook + (<span style="color: #e45649;">lambda</span> () + (<span style="color: #e45649;">let</span> ((private-file (concat user-emacs-directory <span style="color: #50a14f;">"private.el"</span>))) + (<span style="color: #e45649;">when</span> (file-exists-p private-file) + (load-file private-file))))) +</pre> +</div> +</div> +</div> +<div id="outline-container-org65284c7" class="outline-3"> +<h3 id="org65284c7"><span class="section-number-3">3.5</span> Diary file</h3> +<div class="outline-text-3" id="text-3-5"> +<p> +I use my diary on a Sync directory, so I can share between +computers. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">diary-file</span>) +(<span style="color: #e45649;">setq</span> diary-file <span style="color: #50a14f;">"~/Org/agenda/diary"</span>) +</pre> +</div> +</div> +</div> +<div id="outline-container-org502f09d" class="outline-3"> +<h3 id="org502f09d"><span class="section-number-3">3.6</span> Starting the server</h3> +<div class="outline-text-3" id="text-3-6"> +<p> +I used to have an alias for running emacsclient, now I +use a tiny script for it. +</p> +<div class="org-src-container"> +<pre class="src src-sh" id="org651b966"><span style="color: #9ca0a4;">#</span><span style="color: #9ca0a4;">!/bin/</span><span style="color: #e45649;">sh</span> + +<span style="color: #6a1868;">EMACSCLIENT_EXTRA_OPTIONS</span>=<span style="color: #50a14f;">"${EMACSCLIENT_EXTRA_OPTIONS}"</span> +tty &gt;/dev/null 2&gt;&amp;1 &amp;&amp; <span style="color: #6a1868;">EMACSCLIENT_EXTRA_OPTIONS</span>=<span style="color: #50a14f;">"$EMACSCLIENT_EXTRA_OPTIONS -nw"</span> + +<span style="color: #e45649;">for</span> opt<span style="color: #e45649;"> in</span> <span style="color: #50a14f;">"$@"</span> ; <span style="color: #e45649;">do</span> + <span style="color: #6a1868;">EMACSCLIENT_EXTRA_OPTIONS</span>=<span style="color: #50a14f;">"$EMACSCLIENT_EXTRA_OPTIONS $opt"</span> +<span style="color: #e45649;">done</span> + +<span style="color: #9ca0a4;"># </span><span style="color: #9ca0a4;">We want word splitting</span> +<span style="color: #9ca0a4;"># </span><span style="color: #9ca0a4;">shellcheck disable=2086</span> +emacsclient --alternate-editor=<span style="color: #50a14f;">''</span> -c $<span style="color: #6a1868;">EMACSCLIENT_EXTRA_OPTIONS</span> +</pre> +</div> + +<p> +You can install the generated emc script by doing +</p> + +<div class="org-src-container"> +<pre class="src src-sh">install -Dm755 -t /usr/local/bin emc +</pre> +</div> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">require</span> '<span style="color: #b751b6;">server</span>) +(<span style="color: #e45649;">or</span> (server-running-p) + (server-start)) +</pre> +</div> +</div> +</div> +</div> + +<div id="outline-container-orge5ec7a9" class="outline-2"> +<h2 id="orge5ec7a9"><span class="section-number-2">4</span> Packages</h2> +<div class="outline-text-2" id="text-4"> +<p> +Now we can continue by loading our packages, those are listed according +to how important they are to me. +</p> +</div> + +<div id="outline-container-org457d858" class="outline-3"> +<h3 id="org457d858"><span class="section-number-3">4.1</span> Evil-mode</h3> +<div class="outline-text-3" id="text-4-1"> +<p> +I am an old vim user, and I do not want to miss out on the beauty of vim +while I am using Emacs. Let's begin with the evil-mode itself. +</p> + + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">evil</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:init</span> + (<span style="color: #e45649;">setq</span> + evil-want-keybinding nil + evil-want-C-i-jump nil + ) + <span style="color: #a626a4;">:config</span> + (evil-mode 1)) +</pre> +</div> + +<p> +We didn't ask for the keybindings yet, because we are going to get the +<code>evil-collection</code> package now. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">evil-collection</span> + <span style="color: #a626a4;">:requires</span> evil + <span style="color: #a626a4;">:after</span> evil + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> + (evil-collection-init)) +</pre> +</div> +</div> + +<div id="outline-container-orga262a42" class="outline-4"> +<h4 id="orga262a42"><span class="section-number-4">4.1.1</span> evil-surround</h4> +<div class="outline-text-4" id="text-4-1-1"> +<p> +I used to make use of vim-sandwich, but evil-surround will also +do the job well for me. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">evil-surround</span> + <span style="color: #a626a4;">:requires</span> evil + <span style="color: #a626a4;">:after</span> evil + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> + (global-evil-surround-mode 1)) +</pre> +</div> +</div> +</div> +</div> + +<div id="outline-container-org0b2e795" class="outline-3"> +<h3 id="org0b2e795"><span class="section-number-3">4.2</span> Org-mode</h3> +<div class="outline-text-3" id="text-4-2"> +<p> +Org mode is one of the biggest reasons I am using Emacs, and it is a must +for me. These are my configurations. Starting with the obvious here. I am +currently trying to tweak portions of it from Bernt's configuration. See +the <a href="#orgaff74f8">2.4</a> section. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">org</span> +<span style="color: #a626a4;">:straight</span> t +<span style="color: #a626a4;">:functions</span> org-babel-tangle +<span style="color: #a626a4;">:init</span> +'(<span style="color: #e45649;">require</span> '<span style="color: #b751b6;">ox-md</span> nil t) +'(<span style="color: #e45649;">require</span> '<span style="color: #b751b6;">ox-man</span> nil t) +'(org-export-backends + (<span style="color: #e45649;">quote</span> + (ascii beamer html latex man md groff)))) +</pre> +</div> +</div> + +<div id="outline-container-org3f8e1d0" class="outline-4"> +<h4 id="org3f8e1d0"><span class="section-number-4">4.2.1</span> evil-org</h4> +<div class="outline-text-4" id="text-4-2-1"> +<p> +I am quite serious on this vim stuff now. I want it everywhere. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">evil-org</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:requires</span> (evil org) + <span style="color: #a626a4;">:after</span> (evil org) + <span style="color: #a626a4;">:functions</span> evil-org-agenda-set-keys + <span style="color: #a626a4;">:config</span> + (add-hook 'org-mode-hook 'evil-org-mode) + (<span style="color: #e45649;">require</span> '<span style="color: #b751b6;">evil-org-agenda</span>) + (evil-org-agenda-set-keys)) +</pre> +</div> + +<p> +Now that we have initialized those packages, let's configure them some +further. +</p> +</div> +</div> + +<div id="outline-container-org2b5a53a" class="outline-4"> +<h4 id="org2b5a53a"><span class="section-number-4">4.2.2</span> Keybindings and default values</h4> +<div class="outline-text-4" id="text-4-2-2"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(global-set-key (kbd <span style="color: #50a14f;">"C-c l"</span>) 'org-store-link) +(global-set-key (kbd <span style="color: #50a14f;">"C-c a"</span>) 'org-agenda) +(global-set-key (kbd <span style="color: #50a14f;">"C-c c"</span>) 'org-capture) + +(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">org-directory</span>) +(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">org-agenda-include-diary</span>) +(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">org-default-notes-file</span>) + +(<span style="color: #e45649;">setq</span> + org-directory <span style="color: #50a14f;">"~/Org/"</span> + org-agenda-include-diary t + org-default-notes-file <span style="color: #50a14f;">"~/Org/refile.org"</span> +) + +(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">org-agenda-span</span>) +(<span style="color: #e45649;">setq</span> org-agenda-span 'day) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgfcf19b6" class="outline-4"> +<h4 id="orgfcf19b6"><span class="section-number-4">4.2.3</span> Orgmode TODO configuration</h4> +<div class="outline-text-4" id="text-4-2-3"> +<p> +Code below is written for adding more possible sequences depending on the +project I am working on. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq</span> org-todo-keywords + (<span style="color: #e45649;">quote</span> ((sequence <span style="color: #50a14f;">"TODO(t)"</span> <span style="color: #50a14f;">"NEXT(n)"</span> <span style="color: #50a14f;">"|"</span> <span style="color: #50a14f;">"DONE(d)"</span>) + (sequence <span style="color: #50a14f;">"WAITING(w@/!)"</span> <span style="color: #50a14f;">"HOLD(h@/!)"</span> <span style="color: #50a14f;">"|"</span> <span style="color: #50a14f;">"CANCELLED(c@/!)"</span> <span style="color: #50a14f;">"PHONE"</span> <span style="color: #50a14f;">"MEETING"</span>)))) + +(<span style="color: #e45649;">setq</span> org-todo-keyword-faces + (<span style="color: #e45649;">quote</span> ((<span style="color: #50a14f;">"TODO"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"orange red"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"NEXT"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"cyan"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"DONE"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"spring green"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"WAITING"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"orange"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"HOLD"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"hot pink"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"CANCELLED"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"spring green"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"MEETING"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"spring green"</span> <span style="color: #a626a4;">:weight</span> bold) + (<span style="color: #50a14f;">"PHONE"</span> <span style="color: #a626a4;">:foreground</span> <span style="color: #50a14f;">"spring green"</span> <span style="color: #a626a4;">:weight</span> bold)))) + +(<span style="color: #e45649;">setq</span> org-use-fast-todo-selection t) +</pre> +</div> +</div> +</div> +<div id="outline-container-org855104f" class="outline-4"> +<h4 id="org855104f"><span class="section-number-4">4.2.4</span> Org-capture and refiling</h4> +<div class="outline-text-4" id="text-4-2-4"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq</span> org-capture-templates + (<span style="color: #e45649;">quote</span> ((<span style="color: #50a14f;">"t"</span> <span style="color: #50a14f;">"todo"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* TODO %?\n%U\n%a\n"</span> <span style="color: #a626a4;">:clock-in</span> t <span style="color: #a626a4;">:clock-resume</span> t) + (<span style="color: #50a14f;">"r"</span> <span style="color: #50a14f;">"respond"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n"</span> <span style="color: #a626a4;">:clock-in</span> t <span style="color: #a626a4;">:clock-resume</span> t <span style="color: #a626a4;">:immediate-finish</span> t) + (<span style="color: #50a14f;">"n"</span> <span style="color: #50a14f;">"note"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* %? :NOTE:\n%U\n%a\n"</span> <span style="color: #a626a4;">:clock-in</span> t <span style="color: #a626a4;">:clock-resume</span> t) + (<span style="color: #50a14f;">"j"</span> <span style="color: #50a14f;">"Journal"</span> entry (file+datetree <span style="color: #50a14f;">"~/Org/diary.org"</span>) + <span style="color: #50a14f;">"* %?\n%U\n"</span> <span style="color: #a626a4;">:clock-in</span> t <span style="color: #a626a4;">:clock-resume</span> t) + (<span style="color: #50a14f;">"w"</span> <span style="color: #50a14f;">"org-protocol"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* TODO Review %c\n%U\n"</span> <span style="color: #a626a4;">:immediate-finish</span> t) + (<span style="color: #50a14f;">"m"</span> <span style="color: #50a14f;">"Meeting"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* MEETING with %? :MEETING:\n%U"</span> <span style="color: #a626a4;">:clock-in</span> t <span style="color: #a626a4;">:clock-resume</span> t) + (<span style="color: #50a14f;">"p"</span> <span style="color: #50a14f;">"Phone call"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* PHONE %? :PHONE:\n%U"</span> <span style="color: #a626a4;">:clock-in</span> t <span style="color: #a626a4;">:clock-resume</span> t) + (<span style="color: #50a14f;">"h"</span> <span style="color: #50a14f;">"Habit"</span> entry (file <span style="color: #50a14f;">"~/Org/refile.org"</span>) + <span style="color: #50a14f;">"* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"%&lt;&lt;%Y-%m-%d %a .+1d/3d&gt;&gt;\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n"</span>)))) +</pre> +</div> + +<p> +Let's set targets to <code>org-agenda-files</code>. +</p> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq</span> org-refile-targets (<span style="color: #e45649;">quote</span> ((nil <span style="color: #a626a4;">:maxlevel</span> . 9) + (org-agenda-files <span style="color: #a626a4;">:maxlevel</span> . 9)))) + +(<span style="color: #e45649;">setq</span> org-refile-use-outline-path t) +(<span style="color: #e45649;">setq</span> org-outline-path-complete-in-steps nil) +(<span style="color: #e45649;">setq</span> org-refile-allow-creating-parent-nodes (<span style="color: #e45649;">quote</span> confirm)) +</pre> +</div> +</div> +</div> +</div> +<div id="outline-container-org687533d" class="outline-3"> +<h3 id="org687533d"><span class="section-number-3">4.3</span> Magit</h3> +<div class="outline-text-3" id="text-4-3"> +<p> +I like magit, it is quite useful when you don't want to leave emacs and +you have to manually edit hunks for specific commits. I use evil-magit +along with it. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">magit</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> + (global-set-key (kbd <span style="color: #50a14f;">"C-x g"</span>) 'magit-status)) +</pre> +</div> +</div> + +<div id="outline-container-org1d6e761" class="outline-4"> +<h4 id="org1d6e761"><span class="section-number-4">4.3.1</span> evil-magit</h4> +<div class="outline-text-4" id="text-4-3-1"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">evil-magit</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:requires</span> (evil magit) + <span style="color: #a626a4;">:config</span> (evil-magit-init)) +</pre> +</div> +</div> +</div> +</div> + +<div id="outline-container-org5437d0b" class="outline-3"> +<h3 id="org5437d0b"><span class="section-number-3">4.4</span> Flycheck</h3> +<div class="outline-text-3" id="text-4-4"> +<p> +I use flycheck for async syntax and error checking. It can be really useful +and adds to the IDE-likeness of Emacs. I find things like these to be really +hacky and buggy on Vim. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">flycheck</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> + (<span style="color: #e45649;">setq-default</span> flycheck-disabled-checkers '(emacs-lisp-checkdoc)) + <span style="color: #a626a4;">:init</span> (global-flycheck-mode)) +</pre> +</div> +</div> +</div> + +<div id="outline-container-org057d90a" class="outline-3"> +<h3 id="org057d90a"><span class="section-number-3">4.5</span> Company Mode</h3> +<div class="outline-text-3" id="text-4-5"> +<p> +Company is a tool that I am still very unfamiliar with. I used to +have completion tools on Vim, but I don't understand company that +much yet. Pretty simple config. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">company</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> (global-company-mode 1) + (<span style="color: #e45649;">setq</span> company-idle-delay 0) + (<span style="color: #e45649;">setq</span> company-minimum-prefix-length 1)) +</pre> +</div> +</div> + +<div id="outline-container-org15c5739" class="outline-4"> +<h4 id="org15c5739"><span class="section-number-4">4.5.1</span> Company LSP</h4> +<div class="outline-text-4" id="text-4-5-1"> +<p> +I am using Company's own Language Server Protocol. It is good as +far as I can wrap my head-around. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">company-lsp</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:after</span> company + <span style="color: #a626a4;">:init</span> + (<span style="color: #e45649;">push</span> 'company-lsp company-backends)) +</pre> +</div> +</div> +</div> +</div> + +<div id="outline-container-org6756440" class="outline-3"> +<h3 id="org6756440"><span class="section-number-3">4.6</span> Mingus</h3> +<div class="outline-text-3" id="text-4-6"> +<p> +Mingus is an <a href="https://musicpd.org">MPD</a> client for the Emacs operating system. It has a rather +simple, straightforward interface. +</p> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">mingus</span> <span style="color: #a626a4;">:straight</span> t) +(global-set-key (kbd <span style="color: #50a14f;">"C-c m"</span>) 'mingus) +</pre> +</div> +</div> +</div> +<div id="outline-container-orga5f1dd8" class="outline-3"> +<h3 id="orga5f1dd8"><span class="section-number-3">4.7</span> Projectile</h3> +<div class="outline-text-3" id="text-4-7"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">projectile</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:init</span> (projectile-mode +1) + (define-key projectile-mode-map (kbd <span style="color: #50a14f;">"C-c p"</span>) 'projectile-command-map)) +</pre> +</div> +</div> +</div> +<div id="outline-container-orge4c555c" class="outline-3"> +<h3 id="orge4c555c"><span class="section-number-3">4.8</span> Treemacs</h3> +<div class="outline-text-3" id="text-4-8"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">treemacs</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:defines</span> treemacs-no-png-images + <span style="color: #a626a4;">:init</span> + (global-set-key (kbd <span style="color: #50a14f;">"C-c t"</span>) 'treemacs) + (<span style="color: #e45649;">setq</span> treemacs-no-png-images t)) + +(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">treemacs-evil</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:requires</span> treemacs + <span style="color: #a626a4;">:after</span> (treemacs evil)) + +(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">treemacs-magit</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:requires</span> treemacs + <span style="color: #a626a4;">:after</span> (treemacs magit)) + +(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">treemacs-projectile</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:requires</span> treemacs + <span style="color: #a626a4;">:after</span> (treemacs projectile)) +</pre> +</div> +</div> +</div> +<div id="outline-container-org561be12" class="outline-3"> +<h3 id="org561be12"><span class="section-number-3">4.9</span> emacs-dashboard</h3> +<div class="outline-text-3" id="text-4-9"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">dashboard</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:defines</span> show-week-agenda-p + <span style="color: #a626a4;">:init</span> + (<span style="color: #e45649;">setq</span> dashboard-center-content t) + (<span style="color: #e45649;">setq</span> show-week-agenda-p nil) + (<span style="color: #e45649;">setq</span> dashboard-set-footer nil) + (<span style="color: #e45649;">setq</span> initial-buffer-choice (<span style="color: #e45649;">lambda</span> () (get-buffer <span style="color: #50a14f;">"*dashboard*"</span>))) + (<span style="color: #e45649;">setq</span> dashboard-items '((recents . 5) + (bookmarks . 5) + (projects . 5) + (agenda . 10))) + <span style="color: #a626a4;">:config</span> (dashboard-setup-startup-hook)) +</pre> +</div> +</div> +</div> +<div id="outline-container-org50ad2ba" class="outline-3"> +<h3 id="org50ad2ba"><span class="section-number-3">4.10</span> Extras</h3> +<div class="outline-text-3" id="text-4-10"> +<p> +These don't really deserve their own sections, but I prefer to use them. +</p> +</div> + +<div id="outline-container-org25e14c7" class="outline-4"> +<h4 id="org25e14c7"><span class="section-number-4">4.10.1</span> sudo-edit</h4> +<div class="outline-text-4" id="text-4-10-1"> +<p> +This is a package for re-initiating a file as root. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">sudo-edit</span> <span style="color: #a626a4;">:straight</span> t) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgfb48e9a" class="outline-4"> +<h4 id="orgfb48e9a"><span class="section-number-4">4.10.2</span> linum-relative</h4> +<div class="outline-text-4" id="text-4-10-2"> +<p> +I just like seeing the current line number and the relatives of +the other lines. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">linum-relative</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:init</span> + (<span style="color: #e45649;">setq</span> linum-relative-current-symbol <span style="color: #50a14f;">""</span>) + (global-set-key (kbd <span style="color: #50a14f;">"C-C r"</span>) 'linum-relative-mode) + <span style="color: #a626a4;">:config</span> (linum-relative-mode 1)) +</pre> +</div> +</div> +</div> + +<div id="outline-container-org8c43ed1" class="outline-4"> +<h4 id="org8c43ed1"><span class="section-number-4">4.10.3</span> elfeed</h4> +<div class="outline-text-4" id="text-4-10-3"> +<p> +I have elfeed which I have connected to my Nextcloud account, it +is nice to have something synced. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">elfeed</span> <span style="color: #a626a4;">:straight</span> t) +</pre> +</div> +</div> +</div> + +<div id="outline-container-org55a548f" class="outline-4"> +<h4 id="org55a548f"><span class="section-number-4">4.10.4</span> markdown-mode</h4> +<div class="outline-text-4" id="text-4-10-4"> +<p> +I sometimes use this to test the HTML output of markdown documents +that I write. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">markdown-mode</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> (<span style="color: #e45649;">setq</span> markdown-command <span style="color: #50a14f;">"/usr/bin/markdown"</span>)) +</pre> +</div> +</div> +</div> + +<div id="outline-container-org8c9ac7e" class="outline-4"> +<h4 id="org8c9ac7e"><span class="section-number-4">4.10.5</span> htmlize</h4> +<div class="outline-text-4" id="text-4-10-5"> +<p> +I sometimes output html from org-mode as it comes handy. We use htmlize for +that. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">htmlize</span> <span style="color: #a626a4;">:straight</span> t) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgf4a9fcb" class="outline-4"> +<h4 id="orgf4a9fcb"><span class="section-number-4">4.10.6</span> toc-org</h4> +<div class="outline-text-4" id="text-4-10-6"> +<p> +I want to have a basic table-of-contents generation on my org-files +even without exporting the file itself. This is also useful for the +Github README. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">toc-org</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:config</span> + (add-hook 'org-mode-hook 'toc-org-mode)) +</pre> +</div> +</div> +</div> +</div> +</div> + +<div id="outline-container-orgc7078e4" class="outline-2"> +<h2 id="orgc7078e4"><span class="section-number-2">5</span> Themes and Icons</h2> +<div class="outline-text-2" id="text-5"> +<p> +I used to make use of my Xresources themes, but I sometimes sadly +need windows, and I actually do want some eye candy from time to +time. +</p> +</div> + +<div id="outline-container-orgcc31c1a" class="outline-4"> +<h4 id="orgcc31c1a"><span class="section-number-4">5.0.1</span> Doom themes</h4> +<div class="outline-text-4" id="text-5-0-1"> +<p> +I want to use the default doom-theme (perhaps I can switch to +Dracula someday as well). +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">doom-themes</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:functions</span> doom-themes-org-config doom-themes-treemacs-config + <span style="color: #a626a4;">:config</span> + (<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">doom-themes-treemacs-theme</span>) + (<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">doom-themes-enable-bold</span>) + (<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">doom-themes-enable-italic</span>) + (<span style="color: #e45649;">setq</span> doom-themes-enable-bold t + doom-themes-enable-italic t) + (load-theme 'doom-vibrant t) + (<span style="color: #e45649;">setq</span> doom-themes-treemacs-theme <span style="color: #50a14f;">"doom-colors"</span>) + (doom-themes-treemacs-config) + (doom-themes-org-config)) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgcfc71dd" class="outline-4"> +<h4 id="orgcfc71dd"><span class="section-number-4">5.0.2</span> All the icons</h4> +<div class="outline-text-4" id="text-5-0-2"> +<p> +All the icons is an icon-pack. I mean it probably isn't hard to +guess. Pretty straightforward. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">all-the-icons</span> + <span style="color: #a626a4;">:straight</span> t) +</pre> +</div> +</div> +</div> +</div> +<div id="outline-container-orgefe4cf9" class="outline-2"> +<h2 id="orgefe4cf9"><span class="section-number-2">6</span> Filetype Configurations</h2> +<div class="outline-text-2" id="text-6"> +<p> +I would like to have some different configurations for filetypes. Those +are for indents and spaces, mostly. +</p> +</div> + +<div id="outline-container-orgff35f48" class="outline-3"> +<h3 id="orgff35f48"><span class="section-number-3">6.1</span> Default Formatting</h3> +<div class="outline-text-3" id="text-6-1"> +<p> +Here is the default formatting for most files. I don't like tabs as indents +so I avoid them wherever I can. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq-default</span> indent-tabs-mode nil + tab-width 8 + fill-column 80) +</pre> +</div> +</div> +</div> + +<div id="outline-container-org1a94d90" class="outline-3"> +<h3 id="org1a94d90"><span class="section-number-3">6.2</span> Markdown</h3> +<div class="outline-text-3" id="text-6-2"> +<p> +For markdown, I want to have 4 spaces as an indentation. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">md-indent-tabs-mode</span>) +(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">md-tab-width</span>) +(<span style="color: #e45649;">setq</span> + md-indent-tabs-mode nil + md-tab-width 4 +) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgcda54d0" class="outline-3"> +<h3 id="orgcda54d0"><span class="section-number-3">6.3</span> Shell</h3> +<div class="outline-text-3" id="text-6-3"> +<p> +For shell, I want to have 4 spaces as an indentation. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">sh-indent-tabs-mode</span>) +(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">sh-tab-width</span>) +(<span style="color: #e45649;">setq</span> + sh-indent-tabs-mode nil + sh-tab-width 4 +) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgdc9f2a6" class="outline-3"> +<h3 id="orgdc9f2a6"><span class="section-number-3">6.4</span> Python</h3> +<div class="outline-text-3" id="text-6-4"> +<p> +I use the django framework quite frequently at work. So I want a few packages +for that as well. +</p> +</div> + +<div id="outline-container-org1e2944c" class="outline-4"> +<h4 id="org1e2944c"><span class="section-number-4">6.4.1</span> Company jedi</h4> +<div class="outline-text-4" id="text-6-4-1"> +<p> +Company jedi is for better completion while I am editing python files. Here +is the use-package +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">use-package</span> <span style="color: #b751b6;">company-jedi</span> + <span style="color: #a626a4;">:straight</span> t + <span style="color: #a626a4;">:after</span> company + <span style="color: #a626a4;">:config</span> + (add-to-list 'company-backends 'company-jedi)) +</pre> +</div> +</div> +</div> +</div> +</div> +<div id="outline-container-org43f2b13" class="outline-2"> +<h2 id="org43f2b13"><span class="section-number-2">7</span> Other Settings</h2> +<div class="outline-text-2" id="text-7"> +<p> +Those are small settings for emacs that I cannot categorize but have importance +for me. +</p> +</div> + +<div id="outline-container-orgbadee03" class="outline-3"> +<h3 id="orgbadee03"><span class="section-number-3">7.1</span> Dired &#x2013; ls dired</h3> +<div class="outline-text-3" id="text-7-1"> +<p> +I use suckless.org's <code>sbase</code> as my coreutils. The <code>ls</code> program that I use does +not have a <code>--dired</code> option. Let's disable it. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">defvar</span> <span style="color: #6a1868;">dired-use-ls-dired</span>) +(<span style="color: #e45649;">setq</span> dired-use-ls-dired nil) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgc955759" class="outline-3"> +<h3 id="orgc955759"><span class="section-number-3">7.2</span> Coding System for Terminal</h3> +<div class="outline-text-3" id="text-7-2"> +<p> +I want emacs to use utf-8 so my terminal isn't filled with '?' characters. +</p> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(set-terminal-coding-system 'utf-8) +</pre> +</div> +</div> +</div> +<div id="outline-container-org566f39f" class="outline-3"> +<h3 id="org566f39f"><span class="section-number-3">7.3</span> Backup Options</h3> +<div class="outline-text-3" id="text-7-3"> +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq</span> backup-directory-alist `((<span style="color: #50a14f;">"."</span> . <span style="color: #50a14f;">"~/.cache/emacs/saves"</span>))) +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgf7aff98" class="outline-3"> +<h3 id="orgf7aff98"><span class="section-number-3">7.4</span> Set Browser</h3> +<div class="outline-text-3" id="text-7-4"> +<p> +I am setting the default browser from the BROWSER environment variable +so that I don't have to keep track of it in case I ever change my browser. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">setq</span> + browse-url-generic-program (executable-find (getenv <span style="color: #50a14f;">"BROWSER"</span>)) + browse-url-browser-function 'browse-url-generic +) +</pre> +</div> +</div> +</div> +</div> +<div id="outline-container-orgf6bda23" class="outline-2"> +<h2 id="orgf6bda23"><span class="section-number-2">8</span> Notes</h2> +<div class="outline-text-2" id="text-8"> +</div> +<div id="outline-container-org65479c3" class="outline-3"> +<h3 id="org65479c3"><span class="section-number-3">8.1</span> Reverting to package.el</h3> +<div class="outline-text-3" id="text-8-1"> +<p> +You can always revert back to <code>package.el</code> by replacing the <a href="#orgbe93c8a">3.2</a> +section with the following configuration steps. This can be for many reasons. +For example I have reverted to package.el on my old laptop where I don't want +deal with compilation, and I don't want to keep git repositories of every package +that I use. However, I believe that I can deal with those problems as I learn more +about the internals of straight. +</p> +</div> + +<div id="outline-container-orgec421c5" class="outline-4"> +<h4 id="orgec421c5"><span class="section-number-4">8.1.1</span> Replacing the bootstrap command</h4> +<div class="outline-text-4" id="text-8-1-1"> +<p> +You need to replace the <code>straight.el</code> package manager bootstrapper. This is +the first code block in the section. Replace it with the following code block. +</p> + +<p> +Keep in mind that you shouldn't add <code>:tangle no</code>. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">require</span> '<span style="color: #b751b6;">package</span>) +(<span style="color: #e45649;">setq</span> package-archives '( + (<span style="color: #50a14f;">"elpa"</span> . <span style="color: #50a14f;">"https://elpa.gnu.org/packages/"</span>) + (<span style="color: #50a14f;">"melpa"</span> . <span style="color: #50a14f;">"https://melpa.org/packages/"</span>) +)) +(package-initialize) +</pre> +</div> + +<p> +This code block will initialize <code>package.el</code>. Now we need to replace use-package +as it works with package.el +</p> +</div> +</div> + +<div id="outline-container-org75ccd8e" class="outline-4"> +<h4 id="org75ccd8e"><span class="section-number-4">8.1.2</span> Making use-package work with package.el</h4> +<div class="outline-text-4" id="text-8-1-2"> +<p> +Now, replace the second code-block in the section with the following +commands. +</p> + +<div class="org-src-container"> +<pre class="src src-emacs-lisp">(<span style="color: #e45649;">unless</span> (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) +</pre> +</div> + +<p> +There is also the final step, which is the most important one. Replacing the use-package <code>:straight</code> +calls with <code>:ensure</code>. Keep in mind that doing so will also replace the line below as well. In your shell, +run the following command. +</p> + +<div class="org-src-container"> +<pre class="src src-sh">sed -i <span style="color: #50a14f;">'s/\:straight /\:ensure /g'</span> init.org +</pre> +</div> +</div> +</div> +</div> +</div> +</div> +<div id="postamble" class="status"> +<p class="author">Author: Cem Keylan</p> +<p class="date">Created: 2020-03-31 Tue 11:51</p> +<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p> +</div> +</body> +</html> diff --git a/init.org b/init.org @@ -494,6 +494,29 @@ simple, straightforward interface. :requires treemacs :after (treemacs projectile)) #+END_SRC + +**** Keybindings + +These tables are taken from the [[https://github.com/Alexander-Miller/treemacs][Treemacs Github page]] + + +| Key | Action | Description | +|-------------------+----------------------------------------+--------------------------------------------------------| +| C-c C-p a | treemacs-add-project-to-workspace | Select a new project to add to the treemacs workspace. | +| C-c C-p p | treemacs-projectile | Select a projectile project to add to the workspace. | +| C-c C-p d | treemacs-remove-project-from-workspace | Remove project at point from the workspace. | +| C-c C-p r | treemacs-rename-project | Rename project at point. | +| C-c C-p c c | treemacs-collapse-project | Collapse project at point. | +| C-c C-p c o/S-TAB | treemacs-collapse-all-projects | Collapse all projects. | +| C-c C-p c o | treemacs-collapse-all-projects | Collapse all projects except the project at point. | +| C-c C-w r | treemacs-rename-workspace | Rename a workspace. | +| C-c C-w a | treemacs-create-workspace | Create a new workspace. | +| C-c C-w d | treemacs-remove-workspace | Delete a workspace. | +| C-c C-w s | treemacs-switch-workspace | Switch the current workspace. | +| C-c C-w e | treemacs-edit-workspaces | Edit workspace layout via org-mode. | +| C-c C-w f | treemacs-set-fallback-workspace | Select the default fallback workspace. | + + ** emacs-dashboard #+BEGIN_SRC emacs-lisp (use-package dashboard