mirror of https://github.com/Chizi123/.emacs.d.git

Chizi123
2019-04-17 8a38cc793fb7a6b913d21504774c1b3eac720b94
commit | author | age
990949 1 #+TITLE: My Emacs configuration
8a38cc 2 #  LocalWords:  poppler mingw emacs eq nt gnuplot setenv mapconcat el cond minibuffer pdf color Smartparens smartparens yas aindent whitespace eldoc ielm ibuffer hippie pscp pos Spaceline spaceline powerline spacemacs seperator dir Yasnippet yasnippet flycheck magit fullscreen CEDET askifnotset semanticdb EDE ede gdb srefactor analyzer eval cdb autosetup ghostscript math unicode reftex bibtex TeXcount texcount str latin rkt PlantUML plantuml autoload alist matlab verilog ds vh src fontify natively fortran dvipng plist xcolor
C 3
990949 4 * Windows dependencies
C 5 Dependencies needed for Aspell, poppler PDF-tools, compilers and ghost-script provided by mingw64
6 #+BEGIN_SRC emacs-lisp
7   (when (eq system-type 'windows-nt)
8     (add-to-list 'exec-path "C:/msys64/usr/bin")
9     (add-to-list 'exec-path "C:/msys64/mingw64/bin")
10     (add-to-list 'exec-path "c:/Program Files/gnuplot")
11     (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
12 #+END_SRC
13
14 * Aesthetic changes
0fcc09 15 ** Emacs theme
C 16 Zenburn theme is the default
990949 17 #+BEGIN_SRC emacs-lisp
0fcc09 18   (setq emacs-theme 'zenburn)
C 19
20   (cond ((eq emacs-theme 'zenburn)
21          (use-package zenburn-theme
22            :ensure t
23            :config
24            (load-theme 'zenburn t)))
25         ((eq emacs-theme 'doom-one)
26          (use-package doom-themes
27            :ensure t
28            :config
29            (setq doom-themes-enable-bolt t
30                  doom-themes-enable-italic t)
31            (load-theme 'doom-one t)
32            (doom-themes-visual-bell-config)
33            (doom-themes-org-config))))
990949 34 #+END_SRC
8a38cc 35
990949 36 ** Default font
C 37 #+BEGIN_SRC emacs-lisp
38   (set-frame-font "DejaVu Sans Mono" nil t)
39 #+END_SRC
8a38cc 40
990949 41 ** Remove menu bar, toolbar, but keep scroll bar
C 42 #+BEGIN_SRC emacs-lisp
43   (menu-bar-mode 0)
44   (tool-bar-mode 0)
45   (scroll-bar-mode 1)
46 #+END_SRC
47
48 * Writing requirements
49 ** Spellchecking
50 #+BEGIN_SRC emacs-lisp
51   (require 'ispell)
52   (setq-default ispell-program-name "aspell")
53   (setq-default ispell-local-dictionary "en_AU")
54   (add-hook 'latex-mode-hook 'flyspell-mode)
55   (add-hook 'latex-mode-hook 'flyspell-buffer)
56   (add-hook 'org-mode-hook 'flyspell-mode)
57   (add-hook 'org-mode-hook 'flyspell-buffer)
58 #+END_SRC
59
60 ** Switch-window
61 Helps to change windows easily when many are open at once
62 #+BEGIN_SRC emacs-lisp
63 (use-package switch-window
64   :ensure t
65   :config
66     (setq switch-window-input-style 'minibuffer)
67     (setq switch-window-increase 4)
68     (setq switch-window-threshold 2)
69     (setq switch-window-shortcut-style 'qwerty)
70     (setq switch-window-qwerty-shortcuts
71         '("a" "s" "d" "f" "j" "k" "l" "i" "o"))
72   :bind
73     ([remap other-window] . switch-window))
74 #+END_SRC
8a38cc 75
990949 76 ** Go to new window when opened
C 77 #+BEGIN_SRC emacs-lisp
78   (defun split-and-follow-horizontally ()
79     (interactive)
80     (split-window-below)
81     (balance-windows)
82     (other-window 1))
83   (global-set-key (kbd "C-x 2") 'split-and-follow-horizontally)
84
85   (defun split-and-follow-vertically ()
86     (interactive)
87     (split-window-right)
88     (balance-windows)
89     (other-window 1))
90   (global-set-key (kbd "C-x 3") 'split-and-follow-vertically)
91 #+END_SRC
8a38cc 92
990949 93 ** PDF-tools
C 94 #+BEGIN_SRC emacs-lisp
95 (use-package pdf-tools
96   :ensure t
97   :config
98   (pdf-tools-install))
99 #+END_SRC
8a38cc 100
990949 101 * Helm and Projectile
C 102 ** Helm core
103 #+BEGIN_SRC emacs-lisp
104   (use-package helm-config
105     :ensure helm
106     :bind (("M-x" . helm-M-x)
107            ("C-x C-f" . helm-find-files)
108            ("M-y" . helm-show-kill-ring)
109            ("C-x b" . helm-mini)
110            ("C-c h o" . helm-occur))
111     :config
112     (setq helm-M-x-fuzzy-match t)
113     (setq helm-buffers-fuzzy-matching t
114           helm-recentf-fuzzy-match    t)
115     (setq helm-split-window-in-side-p           t ; open helm buffer inside current window, not occupy whole other window
116           helm-move-to-line-cycle-in-source     t ; move to end or beginning of source when reaching top or bottom of source.
117           helm-ff-search-library-in-sexp        t ; search for library in `require' and `declare-function' sexp.
118           helm-scroll-amount                    8 ; scroll 8 lines other window using M-<next>/M-<prior>
119           helm-ff-file-name-history-use-recentf t
120           helm-echo-input-in-header-line t)
121     (defun spacemacs//helm-hide-minibuffer-maybe ()
122       "Hide minibuffer in Helm session if we use the header line as input field."
123       (when (with-helm-buffer helm-echo-input-in-header-line)
124         (let ((ov (make-overlay (point-min) (point-max) nil nil t)))
125           (overlay-put ov 'window (selected-window))
126           (overlay-put ov 'face
127                        (let ((bg-color (face-background 'default nil)))
128                          `(:background ,bg-color :foreground ,bg-color)))
129           (setq-local cursor-type nil))))
130     (add-hook 'helm-minibuffer-set-up-hook
131               'spacemacs//helm-hide-minibuffer-maybe)
132     (helm-mode 1))
133 #+END_SRC
8a38cc 134
990949 135 ** Projectile
C 136 *** Enable it
137  #+BEGIN_SRC emacs-lisp
138    (use-package projectile
139      :ensure t
140      :bind ("C-c p" . projectile-command-map)
141      :diminish projectile-mode
142      :config
143      (projectile-global-mode)
144      (setq projectile-completion-system 'helm)
145      (when (eq system-type 'windows-nt)
146        (setq projectile-indexing-method 'alien)))
147  #+END_SRC
8a38cc 148
990949 149 *** Let it compile things
C 150  #+BEGIN_SRC emacs-lisp
151    (global-set-key (kbd "<f5>") 'projectile-compile-project)
152  #+END_SRC
8a38cc 153
990949 154 *** Enable communication with helm
C 155 #+BEGIN_SRC emacs-lisp
156 (use-package helm-projectile
157   :ensure t
158   :config
159   (helm-projectile-on))
160 #+END_SRC
8a38cc 161
990949 162 * Small tweaks
C 163 ** Remove startup screen
164 #+BEGIN_SRC emacs-lisp
165 (setq inhibit-startup-message t)
166 #+END_SRC
8a38cc 167
990949 168 ** Disable bell
C 169 Bloody bell dings every time you hit a key too much
170 #+BEGIN_SRC emacs-lisp
171 (setq ring-bell-function 'ignore)
172 #+END_SRC
8a38cc 173
990949 174 ** Pretty symbols
C 175 Why not? They make it look nice
176 #+BEGIN_SRC emacs-lisp
177   (when window-system
178     (use-package pretty-mode
179       :ensure t
180       :diminish t
181       :config
182       (global-pretty-mode)))
183 #+END_SRC
8a38cc 184
990949 185 ** find file other window
C 186 Lets it accept more than one file. Works recursively.
187 #+BEGIN_SRC emacs-lisp
188 (defadvice find-file-other-window (around find-files activate)
189   (if (listp filename)
190       (loop for f in filename do (find-file-other-window f wildcards))
191     ad-do-it))
192 #+END_SRC
8a38cc 193
990949 194 ** Which key
C 195 Helps to explain keybindings if you get lost
196 #+BEGIN_SRC emacs-lisp
197   (use-package which-key
198     :ensure t
199     :diminish which-key-mode
200     :config
201     (which-key-mode))
202 #+END_SRC
8a38cc 203
990949 204 ** Go to this file
C 205 #+BEGIN_SRC emacs-lisp
206 (defun config-visit ()
207   (interactive)
208   (find-file "~/.emacs.d/config.org"))
209 (global-set-key (kbd "C-c e d") 'config-visit)
210 #+END_SRC
8a38cc 211
990949 212 ** Go to init.el
C 213 #+BEGIN_SRC emacs-lisp
214   (defun init-visit ()
215     (interactive)
216     (find-file "~/.emacs.d/init.el"))
217   (global-set-key (kbd "C-c e i") 'init-visit)
218 #+END_SRC
8a38cc 219
990949 220 ** Reload configuration
C 221 #+BEGIN_SRC emacs-lisp
222 (defun config-reload ()
223   "Reloads ~/.emacs.d/config.org at run time"
224   (interactive)
225   (org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
226 (global-set-key (kbd "C-c e r") 'config-reload)
227 #+END_SRC
8a38cc 228
990949 229 ** Smartparens
C 230 Matches brackets automatically
231 #+BEGIN_SRC emacs-lisp
232 (use-package smartparens
233   :ensure t
234   :diminish smartparens-mode
235   :config
236   (progn
237     (require 'smartparens-config)
238     (smartparens-global-mode 1)))
239 #+END_SRC
8a38cc 240
990949 241 ** Rainbow
C 242 Its a little gimmicky but its still cool
243 #+BEGIN_SRC emacs-lisp
244   (use-package rainbow-mode
245     :ensure t
246     :diminish rainbow-mode
247     :init
248     (add-hook 'prog-mode-hook 'rainbow-mode))
249 #+END_SRC
8a38cc 250
990949 251 ** Rainbow delimiters
C 252 A bit more useful than above.
253 Colours the brackets so that they stand out more.
254 #+BEGIN_SRC emacs-lisp
255   (use-package rainbow-delimiters
256     :ensure t
257     :init
258       (add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
259 #+END_SRC
8a38cc 260
990949 261 ** clean-aindent-mode
C 262 Removes unnecessary white space
263 #+BEGIN_SRC emacs-lisp
264 (use-package clean-aindent-mode
265   :ensure t
266   :hook prog-mode)
267 #+END_SRC
268 Shows trailing white space
269 #+BEGIN_SRC emacs-lisp
270 (add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
271 #+END_SRC
8a38cc 272
990949 273 ** whitespace mode
C 274 Reveals whitespace characters
275 #+BEGIN_SRC emacs-lisp
276 (global-set-key (kbd "C-c w") 'whitespace-mode)
277 (add-hook 'diff-mode-hook (lambda ()
278                             (setq-local whitespace-style
279                                         '(face
280                                           tabs
281                                           tab-mark
282                                           spaces
283                                           space-mark
284                                           trailing
285                                           indentation::space
286                                           indentation::tab
287                                           newline
288                                           newline-mark))
289                             (whitespace-mode 1)))
290
291 #+END_SRC
8a38cc 292
990949 293 ** eldoc
C 294 #+BEGIN_SRC emacs-lisp
295   (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
296   (add-hook 'lisp-interaction-mode-hook 'eldoc-mode)
297   (add-hook 'ielm-mode-hook 'eldoc-mode)
298 #+END_SRC
8a38cc 299
990949 300 ** key-freq
C 301 collects interesting statistics
302 #+BEGIN_SRC emacs-lisp
303 (use-package keyfreq
304   :ensure t
305   :config
306   (keyfreq-mode 1)
307   (keyfreq-autosave-mode 1))
308 #+END_SRC
8a38cc 309
990949 310 ** undo-tree
C 311 A more advanced undo mechanism
312 #+BEGIN_SRC emacs-lisp
313 (use-package undo-tree
314   :ensure t
315   :diminish undo-tree-mode
316   :config
317   (global-undo-tree-mode))
318 #+END_SRC
8a38cc 319
990949 320 ** volatile highlights
C 321 Colour the material just copied
322 #+BEGIN_SRC emacs-lisp
323 (use-package volatile-highlights
324   :ensure t
325   :diminish volatile-highlights-mode
326   :config
327   (volatile-highlights-mode t))
328 #+END_SRC
8a38cc 329
990949 330 ** ibuffer
C 331 #+BEGIN_SRC emacs-lisp
332 (global-set-key (kbd "C-x C-b") 'ibuffer)
333 (setq ibuffer-use-other-window t)
334 #+END_SRC
8a38cc 335
990949 336 ** hippie expand
C 337 #+BEGIN_SRC emacs-lisp
338 (global-set-key (kbd "M-/") 'hippie-expand) ;; replace dabbrev-expand
339 (setq
340  hippie-expand-try-functions-list
341  '(try-expand-dabbrev ;; Try to expand word "dynamically", searching the current buffer.
342    try-expand-dabbrev-all-buffers ;; Try to expand word "dynamically", searching all other buffers.
343    try-expand-dabbrev-from-kill ;; Try to expand word "dynamically", searching the kill ring.
344    try-complete-file-name-partially ;; Try to complete text as a file name, as many characters as unique.
345    try-complete-file-name ;; Try to complete text as a file name.
346    try-expand-all-abbrevs ;; Try to expand word before point according to all abbrev tables.
347    try-expand-list ;; Try to complete the current line to an entire line in the buffer.
348    try-expand-line ;; Try to complete the current line to an entire line in the buffer.
349    try-complete-lisp-symbol-partially ;; Try to complete as an Emacs Lisp symbol, as many characters as unique.
350    try-complete-lisp-symbol) ;; Try to complete word as an Emacs Lisp symbol.
351  )
352 #+END_SRC
8a38cc 353
990949 354 ** Highlight line
C 355 #+BEGIN_SRC emacs-lisp
356 (global-hl-line-mode)
357 #+END_SRC
8a38cc 358
990949 359 ** Line numbers
C 360 #+BEGIN_SRC emacs-lisp
361 (add-hook 'prog-mode-hook 'linum-mode)
362 #+END_SRC
363
364 ** Garbage collection
365 starts garbage collection every 100MB
366 #+BEGIN_SRC emacs-lisp
367 (setq gc-cons-threshold 100000000)
368 #+END_SRC
369
370 ** Kill ring
371 Changes the kill ring size to 5000.
372 #+BEGIN_SRC emacs-lisp
373   (setq global-mark-ring-max 5000
374     mark-ring-max 5000
375     mode-require-final-newline t
376     kill-ring-max 5000
377     kill-whole-line t)
378 #+END_SRC
8a38cc 379
990949 380 ** Coding style
C 381 #+BEGIN_SRC emacs-lisp
382 (setq c-default-style "linux")
383 #+END_SRC
384
385 ** Coding system
386 #+BEGIN_SRC emacs-lisp
387 (set-terminal-coding-system 'utf-8)
388 (set-keyboard-coding-system 'utf-8)
389 (set-language-environment "UTF-8")
390 (prefer-coding-system 'utf-8)
391 (setq-default indent-tabs-mode t)
392 (delete-selection-mode)
393 (global-set-key (kbd "RET") 'newline-and-indent)
394 #+END_SRC
8a38cc 395
990949 396 ** Move to beginning of line ignoring whitespace
C 397 Move point back to indentation of beginning of line.
398
399 Move point to the first non-whitespace character on this line.
400 If point is already there, move to the beginning of the line.
401 Effectively toggle between the first non-whitespace character and
402 the beginning of the line.
403
404 If ARG is not nil or 1, move forward ARG - 1 lines first. If
405 point reaches the beginning or end of the buffer, stop there.
406 #+BEGIN_SRC emacs-lisp
407 (defun prelude-move-beginning-of-line (arg)
408   (interactive "^p")
409   (setq arg (or arg 1))
410
411   ;; Move lines first
412   (when (/= arg 1)
413     (let ((line-move-visual nil))
414       (forward-line (1- arg))))
415
416   (let ((orig-point (point)))
417     (back-to-indentation)
418     (when (= orig-point (point))
419       (move-beginning-of-line 1))))
420
421 (global-set-key (kbd "C-a") 'prelude-move-beginning-of-line)
422 #+END_SRC
8a38cc 423
990949 424 ** Indent region or buffer
C 425 #+BEGIN_SRC emacs-lisp
426 (defun indent-region-or-buffer ()
427   "Indent a region if selected, otherwise the whole buffer."
428   (interactive)
429   (unless (member major-mode prelude-indent-sensitive-modes)
430     (save-excursion
431       (if (region-active-p)
432           (progn
433             (indent-region (region-beginning) (region-end))
434             (message "Indented selected region."))
435         (progn
436           (indent-buffer)
437           (message "Indented buffer.")))
438       (whitespace-cleanup))))
439
440 (global-set-key (kbd "C-c i") 'indent-region-or-buffer)
441 #+END_SRC
8a38cc 442
990949 443 ** Tramp
C 444 #+BEGIN_SRC emacs-lisp
445   (when (eq system-type 'windows-nt)
446     (setq tramp-default-method "pscp"))
447   (setq password-cache-expiry nil)
448 #+END_SRC
449
450 * Mode line tweaks
451 Diminish is used but is included in init.el such that it can be used throughout this document
452 ** Spaceline
453 A little easier to read than the default emacs mode line
454 #+BEGIN_SRC emacs-lisp
455   (use-package spaceline
456     :ensure t
457     :config
458     (require 'spaceline-config)
459     (setq spaceline-buffer-encoding-abbrev-p t)
460     (setq spaceline-line-column-p t)
461     (setq spaceline-line-p t)
462     (setq powerline-default-separator (quote arrow))
463     (spaceline-spacemacs-theme))
464 #+END_SRC
8a38cc 465
990949 466 ** No separator
C 467 #+BEGIN_SRC emacs-lisp
468 (setq powerline-default-seperator nil)
469 #+END_SRC
8a38cc 470
990949 471 * Programming tweaks
C 472 ** Yasnippet
473 #+BEGIN_SRC emacs-lisp
474     (use-package yasnippet
475       :ensure t
476       :diminish yas-minor-mode
477       :config
478       (use-package yasnippet-snippets
479     :ensure t)
480       (yas-reload-all)
481       (yas-global-mode 1))
482 #+END_SRC
8a38cc 483
990949 484 ** flycheck
C 485 #+BEGIN_SRC emacs-lisp
8a38cc 486   (use-package flycheck
C 487     :ensure t
488     :diminish flycheck-mode
489     :config
490     (global-flycheck-mode))
990949 491 #+END_SRC
C 492 *** flycheck-pos-tip
493 #+BEGIN_SRC emacs-lisp
494 (use-package flycheck-pos-tip
495   :ensure t
496   :after flycheck
497   :config
498   (flycheck-pos-tip-mode))
499 #+END_SRC
8a38cc 500
990949 501 ** Company
8a38cc 502 Company is auto-complete for Emacs
990949 503 #+BEGIN_SRC emacs-lisp
C 504   (use-package company
505     :ensure t
506     :diminish company-mode
507     :config
508     (global-company-mode)
509     (setq company-idle-delay 0)
510     (setq company-minimum-prefix-length 3))
511 #+END_SRC
8a38cc 512
990949 513 ** Magit
C 514 #+BEGIN_SRC emacs-lisp
515   (use-package magit
516     :ensure t
517     :commands magit-get-top-dir
518     :bind ("C-x g" . magit-status)
519     :init
520     (progn
521       ;; make magit status go full-screen but remember previous window
522       ;; settings
523       ;; from: http://whattheemacsd.com/setup-magit.el-01.html
524       (defadvice magit-status (around magit-fullscreen activate)
525         (window-configuration-to-register :magit-fullscreen)
526         ad-do-it
527         (delete-other-windows))
528
529       ;; Close popup when committing - this stops the commit window
530       ;; hanging around
531       ;; From: http://git.io/rPBE0Q
532       (defadvice git-commit-commit (after delete-window activate)
533         (delete-window))
534
535       (defadvice git-commit-abort (after delete-window activate)
536         (delete-window))
537
538       :config
539       (progn
540         ;; restore previously hidden windows
541         (defadvice magit-quit-window (around magit-restore-screen activate)
542           (let ((current-mode major-mode))
543             ad-do-it
544             ;; we only want to jump to register when the last seen buffer
545             ;; was a magit-status buffer.
546             (when (eq 'magit-status-mode current-mode)
547               (jump-to-register :magit-fullscreen)))))
548
549       ;; magit settings
550       (setq
551        ;; don't put "origin-" in front of new branch names by default
552        magit-default-tracking-name-function 'magit-default-tracking-name-branch-only
553        ;; open magit status in same window as current buffer
554        magit-status-buffer-switch-function 'switch-to-buffer
555        ;; highlight word/letter changes in hunk diffs
556        magit-diff-refine-hunk t
557        ;; ask me if I want to include a revision when rewriting
558        magit-rewrite-inclusive 'ask
559        ;; ask me to save buffers
560        magit-save-some-buffers t
561        ;; pop the process buffer if we're taking a while to complete
562        magit-process-popup-time 10
563        ;; ask me if I want a tracking upstream
564        magit-set-upstream-on-push 'askifnotset
565        )))
566 #+END_SRC
8a38cc 567
990949 568 ** CEDET
C 569 *** semantic
570 #+BEGIN_SRC emacs-lisp
571   (use-package semantic
572     :config
573     (global-semanticdb-minor-mode 1)
574     (global-semantic-idle-scheduler-mode 1)
575     (global-semantic-idle-summary-mode 1)
576     (semantic-mode 1))
577 #+END_SRC
8a38cc 578
990949 579 *** EDE
C 580 #+BEGIN_SRC emacs-lisp
581 (use-package ede
582   :config
583   (global-ede-mode t))
584 #+END_SRC
8a38cc 585
990949 586 *** gdb-many-windows
C 587 #+BEGIN_SRC emacs-lisp
588 (setq
589  ;; use gdb-many-windows by default
590  gdb-many-windows t
591
592  ;; Non-nil means display source file containing the main routine at startup
593  gdb-show-main t)
594 #+END_SRC
8a38cc 595
990949 596 *** Semantic refactor
C 597 #+BEGIN_SRC emacs-lisp
598 (use-package srefactor
599   :ensure t
600   :bind (("M-RET o" . 'srefactor-lisp-one-line)
601      ("M-RET m" . 'srefactor-lisp-format-sexp)
602      ("M-RET d" . 'srefactor-lisp-format-defun)
603      ("M-RET b" . 'srefactor-lisp-format-buffer)
604      :map c-mode-base-map
605           ("M-RET" . 'srefactor-refactor-at-point)
606           :map c++-mode-map
607           ("M-RET" . 'srefactor-refactor-at-point)))
608 #+END_SRC
8a38cc 609
990949 610 ** Language specific configs
C 611 *** C/C++
612 **** yasnippet
613 #+BEGIN_SRC emacs-lisp
614 (add-hook 'c++-mode-hook 'yas-minor-mode)
615 (add-hook 'c-mode-hook 'yas-minor-mode)
616 #+END_SRC
8a38cc 617
990949 618 **** flycheck clang
C 619 #+BEGIN_SRC emacs-lisp
620 (use-package flycheck-clang-analyzer
621   :ensure t
622   :config
623   (with-eval-after-load 'flycheck
624     (require 'flycheck-clang-analyzer)
625      (flycheck-clang-analyzer-setup)))
626 #+END_SRC
8a38cc 627
990949 628 **** company
C 629 #+BEGIN_SRC emacs-lisp
630   (use-package company-c-headers
631       :ensure t
632       :after company
633       :config
634       (add-hook 'c++-mode-hook 'company-mode)
635       (add-hook 'c-mode-hook 'company-mode))
636
637   (use-package company-irony
638     :ensure t
639     :config
640     (add-to-list 'company-backends '(company-c-headers
641                                      company-dabbrev-code
642                                      company-irony)))
643
644   (use-package irony
645     :ensure t
646     :init
647     (setq w32-pipe-read-delay 0)
648     (setq irony-server-w32-pipe-buffer-size (* 64 1024))
649     (add-hook 'c++-mode-hook 'irony-mode)
650     (add-hook 'c-mode-hook 'irony-mode)
651     (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
652     (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
653 #+END_SRC
8a38cc 654
990949 655 *** emacs-lisp
C 656 **** eldoc
657 #+BEGIN_SRC emacs-lisp
658 (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
659 #+END_SRC
8a38cc 660
990949 661 **** yasnippet
C 662 #+BEGIN_SRC emacs-lisp
663 (add-hook 'emacs-lisp-mode-hook 'yas-minor-mode)
664 #+END_SRC
8a38cc 665
990949 666 **** company
C 667 #+BEGIN_SRC emacs-lisp
668 (add-hook 'emacs-lisp-mode-hook 'company-mode)
669
670 (use-package slime
671   :ensure t
672   :config
673   (setq inferior-lisp-program "/usr/bin/sbcl")
674   (setq slime-contribs '(slime-fancy)))
675
676 (use-package slime-company
677   :ensure t
678   :init
679     (require 'company)
680     (slime-setup '(slime-fancy slime-company)))
681 #+END_SRC
8a38cc 682
990949 683 *** x86
C 684 **** x86-lookup
685 #+BEGIN_SRC emacs-lisp
686 (use-package x86-lookup
687   :ensure t
688   :init
689   (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
690   :bind ("C-h x" . x86-lookup))
691 #+END_SRC
8a38cc 692
990949 693 *** Latex
C 694 **** AucTex
695 #+BEGIN_SRC emacs-lisp
696 (use-package tex
697   :ensure auctex
698   :config
699   (setq TeX-auto-save t)
700   (setq TeX-parse-self t)
701   (setq doc-view-ghostscript-program "c:/msys64/mingw64/bin/gswin32c.exe")
702   (setq preview-gs-command "c:/msys64/mingw64/bin/gs.exe"))
703 #+END_SRC
8a38cc 704
990949 705 **** Company
C 706 #+BEGIN_SRC emacs-lisp
707   (use-package company-math
708     :ensure t
709     :after company
710     :config
711     (add-to-list 'company-backends 'company-math-symbols-unicode))
712
713   (use-package company-reftex
714     :ensure t
715     :after company
716     :config
717     (add-to-list 'company-backends 'company-reftex))
718
719   (use-package company-auctex
720     :ensure t
721     :after company
722     :config
723     (company-auctex-init))
724
725   (use-package company-bibtex
726     :ensure t
727     :after company
728     (add-to-list 'company-backends 'company-bibtex))
729 #+END_SRC
8a38cc 730
990949 731 **** Preview pane
C 732 #+BEGIN_SRC emacs-lisp
733 (use-package latex-preview-pane
734   :ensure t
735   :config
736   (latex-preview-pane-enable))
737 #+END_SRC
8a38cc 738
990949 739 **** TeXcount
C 740      Word counts in latex
741      #+BEGIN_SRC emacs-lisp
742        (when (eq system-type 'windows-nt)
743          (add-to-list 'exec-path "c:/Users/joelg/TeXcount_3_1_1")
744          (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
745
746        (defun texcount ()
747          (interactive)
748          (let*
749              ( (this-file (buffer-file-name))
750                (enc-str (symbol-name buffer-file-coding-system))
751                (enc-opt
752                 (cond
753                  ((string-match "utf-8" enc-str) "-utf8")
754                  ((string-match "latin" enc-str) "-latin1")
755                  ("-encoding=guess")
756                  ) )
757                (word-count
758                 (with-output-to-string
759                   (with-current-buffer standard-output
760                     (call-process "texcount" nil t nil "-0" enc-opt this-file)
761                     ) ) ) )
762            (message word-count)
763            ) )
764        (add-hook 'LaTeX-mode-hook (lambda () (define-key LaTeX-mode-map (kbd "C-c c") 'texcount)))
765        (add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map (kbd "C-c c") 'texcount)))
766      #+END_SRC
767
768 *** PlantUML
769 #+BEGIN_SRC emacs-lisp
770 (use-package plantuml-mode
771   :ensure t
772   :init
773   (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar"))
774 #+END_SRC
775
776 *** Racket
777 **** Major mode
778 #+BEGIN_SRC emacs-lisp
779   (when (eq system-type 'windows-nt)
780     (add-to-list 'exec-path "c:/Program Files/Racket")
781     (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
782
783   (use-package racket-mode
784       :ensure t
785       :config
786       (autoload 'racket-mode "Racket" "Racket Editing Mode" t)
787       (add-to-list
788        'auto-mode-alist
8a38cc 789        '("\\.rkt$" . racket-mode))
990949 790       (setq matlab-indent-function t))
C 791 #+END_SRC
792
793 *** Verilog
794 Add updated version and integrate it with Emacs.
795 #+BEGIN_SRC emacs-lisp
796   (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode-20190324/verilog-mode.el")
797   (require 'verilog-mode)
798
799   (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
800   (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode))
801 #+END_SRC
8a38cc 802
990949 803 * Org mode
C 804 ** Up to date org
805 #+BEGIN_SRC emacs-lisp
806     (use-package org
807       :ensure t
808       :pin org)
809 #+END_SRC
8a38cc 810
990949 811 ** Small tweaks
C 812 #+BEGIN_SRC emacs-lisp
813 (setq org-src-fontify-natively t)
814 (setq org-src-tab-acts-natively t)
815 (setq org-confirm-babel-evaluate nil)
816 (setq org-export-with-smart-quotes t)
817 (setq org-src-window-setup 'current-window)
818 (add-hook 'org-mode-hook 'org-indent-mode)
819 (diminish 'org-indent-mode)
820 (diminish 'visual-line-mode)
821 #+END_SRC
8a38cc 822
990949 823 ** Line wrapping
C 824 #+BEGIN_SRC emacs-lisp
825   (add-hook 'org-mode-hook
826           '(lambda ()
827          (visual-line-mode 1)))
828 #+END_SRC
8a38cc 829
990949 830 ** org-bullets
C 831 #+BEGIN_SRC emacs-lisp
832 (use-package org-bullets
833   :ensure t
834   :config
835     (add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
836 #+END_SRC
8a38cc 837
990949 838 ** Org Babel
C 839 *** Languages
840 Add C to org babel supported languages
841 #+BEGIN_SRC emacs-lisp
842   (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t)
843                                                            (C . t)
844                                                            (python . t)
845                                                            (latex . t)
846                                                            (scheme . t)
847                                                            (gnuplot . t)
848                                                            (matlab . t)
849                                                            (plantuml . t)
850                                                            (fortran . t)
851                                                            (java . t)))
852 #+END_SRC
8a38cc 853
990949 854 ** Latex preview fragments match colour
C 855 Make the previews match theme colour of Emacs.
856 #+BEGIN_SRC emacs-lisp
857   (let ((dvipng--plist (alist-get 'dvipng org-preview-latex-process-alist)))
858     (plist-put dvipng--plist :use-xcolor t)
859     (plist-put dvipng--plist :image-converter '("dvipng -D %D -T tight -o %O %f")))
860 #+END_SRC
861
8a38cc 862