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

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