615 lines
16 KiB
HTML
615 lines
16 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>Emacs configure</title>
|
|
<!-- 2018-01-13 Sa 16:37 -->
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="generator" content="Org-mode">
|
|
<meta name="author" content="Tuan-Dat Tran">
|
|
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
|
<style type="text/css">
|
|
/* org mode styles on top of twbs */
|
|
|
|
html {
|
|
position: relative;
|
|
min-height: 100%;
|
|
}
|
|
|
|
body {
|
|
font-size: 18px;
|
|
margin-bottom: 105px;
|
|
}
|
|
|
|
footer {
|
|
position: absolute;
|
|
bottom: 0;
|
|
width: 100%;
|
|
height: 101px;
|
|
background-color: #f5f5f5;
|
|
}
|
|
|
|
footer > div {
|
|
padding: 10px;
|
|
}
|
|
|
|
footer p {
|
|
margin: 0 0 5px;
|
|
text-align: center;
|
|
font-size: 16px;
|
|
}
|
|
|
|
#table-of-contents {
|
|
margin-top: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
blockquote p {
|
|
font-size: 18px;
|
|
}
|
|
|
|
pre {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.footpara {
|
|
display: inline-block;
|
|
}
|
|
|
|
figcaption {
|
|
font-size: 16px;
|
|
color: #666;
|
|
font-style: italic;
|
|
padding-bottom: 15px;
|
|
}
|
|
|
|
/* from twbs docs */
|
|
|
|
.bs-docs-sidebar.affix {
|
|
position: static;
|
|
}
|
|
@media (min-width: 768px) {
|
|
.bs-docs-sidebar {
|
|
padding-left: 20px;
|
|
}
|
|
}
|
|
|
|
/* All levels of nav */
|
|
.bs-docs-sidebar .nav > li > a {
|
|
display: block;
|
|
padding: 4px 20px;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: #999;
|
|
}
|
|
.bs-docs-sidebar .nav > li > a:hover,
|
|
.bs-docs-sidebar .nav > li > a:focus {
|
|
padding-left: 19px;
|
|
color: #A1283B;
|
|
text-decoration: none;
|
|
background-color: transparent;
|
|
border-left: 1px solid #A1283B;
|
|
}
|
|
.bs-docs-sidebar .nav > .active > a,
|
|
.bs-docs-sidebar .nav > .active:hover > a,
|
|
.bs-docs-sidebar .nav > .active:focus > a {
|
|
padding-left: 18px;
|
|
font-weight: bold;
|
|
color: #A1283B;
|
|
background-color: transparent;
|
|
border-left: 2px solid #A1283B;
|
|
}
|
|
|
|
/* Nav: second level (shown on .active) */
|
|
.bs-docs-sidebar .nav .nav {
|
|
display: none; /* Hide by default, but at >768px, show it */
|
|
padding-bottom: 10px;
|
|
}
|
|
.bs-docs-sidebar .nav .nav > li > a {
|
|
padding-top: 1px;
|
|
padding-bottom: 1px;
|
|
padding-left: 30px;
|
|
font-size: 12px;
|
|
font-weight: normal;
|
|
}
|
|
.bs-docs-sidebar .nav .nav > li > a:hover,
|
|
.bs-docs-sidebar .nav .nav > li > a:focus {
|
|
padding-left: 29px;
|
|
}
|
|
.bs-docs-sidebar .nav .nav > .active > a,
|
|
.bs-docs-sidebar .nav .nav > .active:hover > a,
|
|
.bs-docs-sidebar .nav .nav > .active:focus > a {
|
|
padding-left: 28px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Nav: third level (shown on .active) */
|
|
.bs-docs-sidebar .nav .nav .nav {
|
|
padding-bottom: 10px;
|
|
}
|
|
.bs-docs-sidebar .nav .nav .nav > li > a {
|
|
padding-top: 1px;
|
|
padding-bottom: 1px;
|
|
padding-left: 40px;
|
|
font-size: 12px;
|
|
font-weight: normal;
|
|
}
|
|
.bs-docs-sidebar .nav .nav .nav > li > a:hover,
|
|
.bs-docs-sidebar .nav .nav .nav > li > a:focus {
|
|
padding-left: 39px;
|
|
}
|
|
.bs-docs-sidebar .nav .nav .nav > .active > a,
|
|
.bs-docs-sidebar .nav .nav .nav > .active:hover > a,
|
|
.bs-docs-sidebar .nav .nav .nav > .active:focus > a {
|
|
padding-left: 38px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Show and affix the side nav when space allows it */
|
|
@media (min-width: 992px) {
|
|
.bs-docs-sidebar .nav > .active > ul {
|
|
display: block;
|
|
}
|
|
/* Widen the fixed sidebar */
|
|
.bs-docs-sidebar.affix,
|
|
.bs-docs-sidebar.affix-bottom {
|
|
width: 213px;
|
|
}
|
|
.bs-docs-sidebar.affix {
|
|
position: fixed; /* Undo the static from mobile first approach */
|
|
top: 20px;
|
|
}
|
|
.bs-docs-sidebar.affix-bottom {
|
|
position: absolute; /* Undo the static from mobile first approach */
|
|
}
|
|
.bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
|
|
margin-top: 0;
|
|
margin-bottom: 0
|
|
}
|
|
}
|
|
@media (min-width: 1200px) {
|
|
/* Widen the fixed sidebar again */
|
|
.bs-docs-sidebar.affix-bottom,
|
|
.bs-docs-sidebar.affix {
|
|
width: 263px;
|
|
}
|
|
}
|
|
</style>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
'use strict';
|
|
|
|
$('.bs-docs-sidebar li').first().addClass('active');
|
|
|
|
$(document.body).scrollspy({target: '.bs-docs-sidebar'});
|
|
|
|
$('.bs-docs-sidebar').affix();
|
|
});
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="content" class="container">
|
|
<div class="row"><div class="col-md-9"><h1 class="title">Emacs configure</h1>
|
|
|
|
<div id="outline-container-sec-1" class="outline-2">
|
|
<h2 id="sec-1"><span class="section-number-2">1</span> Packages</h2>
|
|
<div class="outline-text-2" id="text-1">
|
|
</div><div id="outline-container-sec-1-1" class="outline-3">
|
|
<h3 id="sec-1-1"><span class="section-number-3">1.1</span> Installed packages:</h3>
|
|
<div class="outline-text-3" id="text-1-1">
|
|
<ul class="org-ul">
|
|
<li>aggressive-indent
|
|
</li>
|
|
<li>anaconda-mode
|
|
</li>
|
|
<li>auctex
|
|
</li>
|
|
<li>dash
|
|
</li>
|
|
<li>eclim
|
|
</li>
|
|
<li>epl
|
|
</li>
|
|
<li>f
|
|
</li>
|
|
<li>flycheck
|
|
</li>
|
|
<li>forest-blue-theme
|
|
</li>
|
|
<li>google-this
|
|
</li>
|
|
<li>highlight-indentation
|
|
</li>
|
|
<li>ivy
|
|
</li>
|
|
<li>ox-twbs
|
|
</li>
|
|
<li>pkg-info
|
|
</li>
|
|
<li>popup
|
|
</li>
|
|
<li>pythonic
|
|
</li>
|
|
<li>rainbow-delimiters
|
|
</li>
|
|
<li>rainbow-mode
|
|
</li>
|
|
<li>s
|
|
</li>
|
|
<li>smartparens
|
|
</li>
|
|
<li>yasnippet
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-1-2" class="outline-3">
|
|
<h3 id="sec-1-2"><span class="section-number-3">1.2</span> Package Archives</h3>
|
|
<div class="outline-text-3" id="text-1-2">
|
|
<p>
|
|
Adding the melpa package repository to Emacs.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(require 'package)
|
|
(add-to-list 'package-archives
|
|
'("melpa" . "http://melpa.org/packages/"))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-2" class="outline-2">
|
|
<h2 id="sec-2"><span class="section-number-2">2</span> Themes</h2>
|
|
<div class="outline-text-2" id="text-2">
|
|
<p>
|
|
Using the <a href="https://github.com/cpaulik/emacs-material-theme">Material</a>-Theme.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(load-theme 'material t)
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Changes the Emacs background to the terminals defaults. (Generally)
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(add-hook 'window-setup-hook
|
|
'(lambda ()
|
|
(set-face-background 'default "unspecified-bg")))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-3" class="outline-2">
|
|
<h2 id="sec-3"><span class="section-number-2">3</span> Functions</h2>
|
|
<div class="outline-text-2" id="text-3">
|
|
</div><div id="outline-container-sec-3-1" class="outline-3">
|
|
<h3 id="sec-3-1"><span class="section-number-3">3.1</span> Cut/Copy and Paste by Boruch Baum</h3>
|
|
<div class="outline-text-3" id="text-3-1">
|
|
</div><div id="outline-container-sec-3-1-1" class="outline-4">
|
|
<h4 id="sec-3-1-1"><span class="section-number-4">3.1.1</span> Copy</h4>
|
|
<div class="outline-text-4" id="text-3-1-1">
|
|
<p>
|
|
Copy the marked area to the clipboard.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(defun copy-to-xclipboard(arg)
|
|
(interactive "P")
|
|
(cond
|
|
((not (use-region-p))
|
|
(message "Nothing to yank to X-clipboard"))
|
|
((and (not (display-graphic-p))
|
|
(/= 0 (shell-command-on-region
|
|
(region-beginning) (region-end) "xsel -i -b")))
|
|
(error "Is program `xsel' installed?"))
|
|
(t
|
|
(when (display-graphic-p)
|
|
(call-interactively 'clipboard-kill-ring-save))
|
|
(message "Yanked region to X-clipboard")
|
|
(deactivate-mark))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-3-1-2" class="outline-4">
|
|
<h4 id="sec-3-1-2"><span class="section-number-4">3.1.2</span> Cut</h4>
|
|
<div class="outline-text-4" id="text-3-1-2">
|
|
<p>
|
|
Cut the marked area to the clipboard.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(defun cut-to-xclipboard(arg)
|
|
(interactive "P")
|
|
(cond
|
|
((not (use-region-p))
|
|
(message "Nothing to yank to X-clipboard"))
|
|
((and (not (display-graphic-p))
|
|
(/= 0 (shell-command-on-region
|
|
(region-beginning) (region-end) "xsel -i -b")))
|
|
(error "Is program `xsel' installed?"))
|
|
(t
|
|
(when (display-graphic-p)
|
|
(call-interactively 'clipboard-kill-ring-save))
|
|
(message "Yanked region to X-clipboard")
|
|
(kill-region (region-beginning) (region-end))
|
|
(deactivate-mark))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-3-1-3" class="outline-4">
|
|
<h4 id="sec-3-1-3"><span class="section-number-4">3.1.3</span> Paste</h4>
|
|
<div class="outline-text-4" id="text-3-1-3">
|
|
<p>
|
|
Paste from the clipboard.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(defun paste-from-xclipboard()
|
|
"Uses shell command `xsel -o' to paste from x-clipboard. With
|
|
one prefix arg, pastes from X-PRIMARY, and with two prefix args,
|
|
pastes from X-SECONDARY."
|
|
(interactive)
|
|
(if (display-graphic-p)
|
|
(clipboard-yank)
|
|
(let*
|
|
((opt (prefix-numeric-value current-prefix-arg))
|
|
(opt (cond
|
|
((= 1 opt) "b")
|
|
((= 4 opt) "p")
|
|
((= 16 opt) "s"))))
|
|
(insert (shell-command-to-string (concat "xsel -o -" opt))))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-3-2" class="outline-3">
|
|
<h3 id="sec-3-2"><span class="section-number-3">3.2</span> Personal functions</h3>
|
|
<div class="outline-text-3" id="text-3-2">
|
|
<p>
|
|
Go back to indentation, if you are at the indentation, go to beginning of the line instead.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(defun back-to-indentation-or-beginning ()
|
|
"Go back to indentation, if at indentation go to beginning of line"
|
|
(interactive)
|
|
(if (= (point) (progn (back-to-indentation) (point)))
|
|
(beginning-of-line)))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Sets the background of Emacs in terminal-mode to the terminals. Doesn't change it in window
|
|
mode tho.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(defun transparent-terminal ()
|
|
(unless (display-graphic-p (selected-frame))
|
|
(set-face-background 'default "unspecified-bg" (selected-frame))))
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-4" class="outline-2">
|
|
<h2 id="sec-4"><span class="section-number-2">4</span> Mode customisation</h2>
|
|
<div class="outline-text-2" id="text-4">
|
|
</div><div id="outline-container-sec-4-1" class="outline-3">
|
|
<h3 id="sec-4-1"><span class="section-number-3">4.1</span> Window Modes</h3>
|
|
<div class="outline-text-3" id="text-4-1">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(menu-bar-mode -1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-4-2" class="outline-3">
|
|
<h3 id="sec-4-2"><span class="section-number-3">4.2</span> Python</h3>
|
|
<div class="outline-text-3" id="text-4-2">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(add-hook 'python-mode-hook 'anaconda-mode)
|
|
(add-hook 'python-mode-hook 'anaconda-eldoc-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-4-3" class="outline-3">
|
|
<h3 id="sec-4-3"><span class="section-number-3">4.3</span> LaTeX</h3>
|
|
<div class="outline-text-3" id="text-4-3">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(require 'tex)
|
|
(setq TeX-auto-save t)
|
|
(setq TeX-parse-self t)
|
|
(setq-default TeX-master nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-4-4" class="outline-3">
|
|
<h3 id="sec-4-4"><span class="section-number-3">4.4</span> Org</h3>
|
|
<div class="outline-text-3" id="text-4-4">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(require 'ox-twbs)
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Use Evince as default pdf viewer.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(add-hook 'org-mode-hook
|
|
'(lambda ()
|
|
(delete '("\\.pdf\\'" . default) org-file-apps)
|
|
(add-to-list 'org-file-apps '("\\.pdf\\'" . "evince %s"))))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Activate Syntax Highlighting in Org-mode.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(add-hook 'org-mode-hook
|
|
'(lambda ()
|
|
(setq org-src-fontify-natively t)))
|
|
</pre>
|
|
</div>
|
|
|
|
<p>
|
|
Add rainbow-delimiters in org-mode
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(add-hook 'org-mode-hook 'rainbow-delimiters-mode)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-4-5" class="outline-3">
|
|
<h3 id="sec-4-5"><span class="section-number-3">4.5</span> Ivy</h3>
|
|
<div class="outline-text-3" id="text-4-5">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(ivy-mode 1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-4-6" class="outline-3">
|
|
<h3 id="sec-4-6"><span class="section-number-3">4.6</span> Parenthesis</h3>
|
|
<div class="outline-text-3" id="text-4-6">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(require 'paren)
|
|
(setq show-paren-style 'parenthesis)
|
|
(show-paren-mode +1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-4-7" class="outline-3">
|
|
<h3 id="sec-4-7"><span class="section-number-3">4.7</span> Highlight line</h3>
|
|
<div class="outline-text-3" id="text-4-7">
|
|
<p>
|
|
Globaly highlight the current line in a slightly darker shade of grey.
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(global-hl-line-mode 1)
|
|
(set-face-background 'hl-line "#333333")
|
|
(set-face-foreground 'highlight nil)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="outline-container-sec-4-8" class="outline-3">
|
|
<h3 id="sec-4-8"><span class="section-number-3">4.8</span> Yasnippet</h3>
|
|
<div class="outline-text-3" id="text-4-8">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(require 'yasnippet)
|
|
(setq yas-snippet-dirs
|
|
'("~/.emacs.d/snippets/"))
|
|
(yas-global-mode 1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-4-9" class="outline-3">
|
|
<h3 id="sec-4-9"><span class="section-number-3">4.9</span> Personal mode</h3>
|
|
<div class="outline-text-3" id="text-4-9">
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-emacs-lisp">(defvar my-keys-minor-mode-map
|
|
(let ((map (make-sparse-keymap)))
|
|
(define-key map (kbd "C-a") 'back-to-indentation-or-beginning)
|
|
(define-key map (kbd "C-c M-w") 'copy-to-xclipboard)
|
|
(define-key map (kbd "C-c C-w") 'cut-to-xclipboard)
|
|
(define-key map (kbd "C-c M-y") 'paste-from-xclipboard)
|
|
map)
|
|
"my-keys-minor-mode keymap.")
|
|
|
|
(define-minor-mode my-keys-minor-mode
|
|
"A minor mode so that my key settings override annoying major modes."
|
|
:init-value t
|
|
:lighter " my-keys")
|
|
|
|
(my-keys-minor-mode 1)
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div><div class="col-md-3"><nav id="table-of-contents">
|
|
<div id="text-table-of-contents" class="bs-docs-sidebar">
|
|
<ul class="nav">
|
|
<li><a href="#sec-1">1. Packages</a>
|
|
<ul class="nav">
|
|
<li><a href="#sec-1-1">1.1. Installed packages:</a></li>
|
|
<li><a href="#sec-1-2">1.2. Package Archives</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#sec-2">2. Themes</a></li>
|
|
<li><a href="#sec-3">3. Functions</a>
|
|
<ul class="nav">
|
|
<li><a href="#sec-3-1">3.1. Cut/Copy and Paste by Boruch Baum</a>
|
|
<ul class="nav">
|
|
<li><a href="#sec-3-1-1">3.1.1. Copy</a></li>
|
|
<li><a href="#sec-3-1-2">3.1.2. Cut</a></li>
|
|
<li><a href="#sec-3-1-3">3.1.3. Paste</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#sec-3-2">3.2. Personal functions</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#sec-4">4. Mode customisation</a>
|
|
<ul class="nav">
|
|
<li><a href="#sec-4-1">4.1. Window Modes</a></li>
|
|
<li><a href="#sec-4-2">4.2. Python</a></li>
|
|
<li><a href="#sec-4-3">4.3. LaTeX</a></li>
|
|
<li><a href="#sec-4-4">4.4. Org</a></li>
|
|
<li><a href="#sec-4-5">4.5. Ivy</a></li>
|
|
<li><a href="#sec-4-6">4.6. Parenthesis</a></li>
|
|
<li><a href="#sec-4-7">4.7. Highlight line</a></li>
|
|
<li><a href="#sec-4-8">4.8. Yasnippet</a></li>
|
|
<li><a href="#sec-4-9">4.9. Personal mode</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
</div></div></div>
|
|
<footer id="postamble" class="">
|
|
<div><p class="date">Date: <span class="timestamp-wrapper"><span class="timestamp"><2018-01-11 Do></span></span></p>
|
|
<p class="author">Author: Tuan-Dat Tran</p>
|
|
<p class="date">Created: 2018-01-13 Sa 16:37</p>
|
|
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.3.1 (<a href="http://orgmode.org">Org-mode</a> 8.2.10)</p>
|
|
</div>
|
|
</footer>
|
|
</body>
|
|
</html>
|