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

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