From 99094967352217035d1598cfd81a8dac32caa873 Mon Sep 17 00:00:00 2001
From: Chizi123 <joelgrun@gmail.com>
Date: Sun, 31 Mar 2019 11:52:40 +0000
Subject: [PATCH] a few changes

---
 config.org | 1573 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 794 insertions(+), 779 deletions(-)

diff --git a/config.org b/config.org
index d84c06c..7d0e42c 100644
--- a/config.org
+++ b/config.org
@@ -1,779 +1,794 @@
-#+TITLE: My Emacs configuration
-* Windows dependencies
-Dependencies needed for Aspell, poppler PDF-tools, compilers and ghost-script provided by mingw64
-#+BEGIN_SRC emacs-lisp
-  (when (eq system-type 'windows-nt)
-    (add-to-list 'exec-path "C:/msys64/usr/bin")
-    (add-to-list 'exec-path "C:/msys64/mingw64/bin")
-    (add-to-list 'exec-path "c:/Program Files/gnuplot")
-    (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
-#+END_SRC
-
-* Aesthetic changes
-** Zenburn theme
-#+BEGIN_SRC emacs-lisp
-  (use-package zenburn-theme
-    :ensure t
-    :config
-    (load-theme 'zenburn t))
-#+END_SRC
-** Default font
-#+BEGIN_SRC emacs-lisp
-(set-default-font "DejaVu Sans Mono-10")
-#+END_SRC
-* Writing requirements
-** Spellchecking
-#+BEGIN_SRC emacs-lisp
-  (require 'ispell)
-  (setq-default ispell-program-name "aspell")
-  (add-hook 'latex-mode-hook 'flyspell-mode)
-  (add-hook 'latex-mode-hook 'flyspell-buffer)
-  (add-hook 'org-mode-hook 'flyspell-mode)
-  (add-hook 'org-mode-hook 'flyspell-buffer)
-#+END_SRC
-
-** Switch-window
-Helps to change windows easily when many are open at once
-#+BEGIN_SRC emacs-lisp
-(use-package switch-window
-  :ensure t
-  :config
-    (setq switch-window-input-style 'minibuffer)
-    (setq switch-window-increase 4)
-    (setq switch-window-threshold 2)
-    (setq switch-window-shortcut-style 'qwerty)
-    (setq switch-window-qwerty-shortcuts
-        '("a" "s" "d" "f" "j" "k" "l" "i" "o"))
-  :bind
-    ([remap other-window] . switch-window))
-#+END_SRC
-** Go to new window when opened
-#+BEGIN_SRC emacs-lisp
-  (defun split-and-follow-horizontally ()
-    (interactive)
-    (split-window-below)
-    (balance-windows)
-    (other-window 1))
-  (global-set-key (kbd "C-x 2") 'split-and-follow-horizontally)
-
-  (defun split-and-follow-vertically ()
-    (interactive)
-    (split-window-right)
-    (balance-windows)
-    (other-window 1))
-  (global-set-key (kbd "C-x 3") 'split-and-follow-vertically)
-#+END_SRC
-** PDF-tools
-#+BEGIN_SRC emacs-lisp
-(use-package pdf-tools
-  :ensure t
-  :config
-  (pdf-tools-install))
-
-#+END_SRC
-* Helm and Projectile
-** Helm core
-#+BEGIN_SRC emacs-lisp
-(use-package helm-config
-  :ensure helm
-  :bind (("M-x" . helm-M-x)
-	 ("C-x C-f" . helm-find-files)
-	 ("M-y" . helm-show-kill-ring)
-	 ("C-x b" . helm-mini)
-	 ("C-c h o" . helm-occur))
-  :config
-  (setq helm-M-x-fuzzy-match t)
-  (setq helm-buffers-fuzzy-matching t
-	helm-recentf-fuzzy-match    t)
-  (setq helm-split-window-in-side-p           t ; open helm buffer inside current window, not occupy whole other window
-	helm-move-to-line-cycle-in-source     t ; move to end or beginning of source when reaching top or bottom of source.
-	helm-ff-search-library-in-sexp        t ; search for library in `require' and `declare-function' sexp.
-	helm-scroll-amount                    8 ; scroll 8 lines other window using M-<next>/M-<prior>
-	helm-ff-file-name-history-use-recentf t
-	helm-echo-input-in-header-line t)
-  (defun spacemacs//helm-hide-minibuffer-maybe ()
-    "Hide minibuffer in Helm session if we use the header line as input field."
-    (when (with-helm-buffer helm-echo-input-in-header-line)
-      (let ((ov (make-overlay (point-min) (point-max) nil nil t)))
-	(overlay-put ov 'window (selected-window))
-	(overlay-put ov 'face
-                     (let ((bg-color (face-background 'default nil)))
-                       `(:background ,bg-color :foreground ,bg-color)))
-	(setq-local cursor-type nil))))
-  (add-hook 'helm-minibuffer-set-up-hook
-            'spacemacs//helm-hide-minibuffer-maybe)
-  (helm-mode 1))
-#+END_SRC
-** Projectile
-*** Enable it
- #+BEGIN_SRC emacs-lisp
-   (use-package projectile
-     :ensure t
-     :bind ("C-c p" . projectile-command-map)
-     :diminish projectile-mode
-     :config
-     (projectile-global-mode)
-     (setq projectile-completion-system 'helm)
-     (when (eq system-type 'windows-nt)
-       (setq projectile-indexing-method 'alien)))
- #+END_SRC
-*** Let it compile things
- #+BEGIN_SRC emacs-lisp
-   (global-set-key (kbd "<f5>") 'projectile-compile-project)
- #+END_SRC
-*** Enable communication with helm
-#+BEGIN_SRC emacs-lisp
-(use-package helm-projectile
-  :ensure t
-  :config
-  (helm-projectile-on))
-#+END_SRC
-* Small tweaks
-** Remove startup screen
-#+BEGIN_SRC emacs-lisp
-(setq inhibit-startup-message t)
-#+END_SRC
-** Disable bell
-Bloody bell dings every time you hit a key too much
-#+BEGIN_SRC emacs-lisp
-(setq ring-bell-function 'ignore)
-#+END_SRC
-** Pretty symbols
-Why not? They make it look nice
-#+BEGIN_SRC emacs-lisp
-  (when window-system
-    (use-package pretty-mode
-      :ensure t
-      :diminish t
-      :config
-      (global-pretty-mode)))
-#+END_SRC
-** find file other window
-Lets it accept more than one file. Works recursively.
-#+BEGIN_SRC emacs-lisp
-(defadvice find-file-other-window (around find-files activate)
-  (if (listp filename)
-      (loop for f in filename do (find-file-other-window f wildcards))
-    ad-do-it))
-#+END_SRC
-** Which key
-Helps to explain keybindings if you get lost
-#+BEGIN_SRC emacs-lisp
-  (use-package which-key
-    :ensure t
-    :diminish which-key-mode
-    :config
-    (which-key-mode))
-#+END_SRC
-** Go to this file
-#+BEGIN_SRC emacs-lisp
-(defun config-visit ()
-  (interactive)
-  (find-file "~/.emacs.d/config.org"))
-(global-set-key (kbd "C-c e d") 'config-visit)
-#+END_SRC
-** Go to init.el
-#+BEGIN_SRC emacs-lisp
-  (defun init-visit ()
-    (interactive)
-    (find-file "~/.emacs.d/init.el"))
-  (global-set-key (kbd "C-c e i") 'init-visit)
-#+END_SRC
-** Reload configuration
-#+BEGIN_SRC emacs-lisp
-(defun config-reload ()
-  "Reloads ~/.emacs.d/config.org at run time"
-  (interactive)
-  (org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
-(global-set-key (kbd "C-c e r") 'config-reload)
-#+END_SRC
-** Smartparens
-Matches brackets automatically
-#+BEGIN_SRC emacs-lisp
-(use-package smartparens
-  :ensure t
-  :diminish smartparens-mode
-  :config
-  (progn
-    (require 'smartparens-config)
-    (smartparens-global-mode 1)))
-#+END_SRC
-** Rainbow
-Its a little gimmicky but its still cool
-#+BEGIN_SRC emacs-lisp
-  (use-package rainbow-mode
-    :ensure t
-    :diminish rainbow-mode
-    :init
-    (add-hook 'prog-mode-hook 'rainbow-mode))
-#+END_SRC
-** Rainbow delimiters
-A bit more useful than above.
-Colours the brackets so that they stand out more.
-#+BEGIN_SRC emacs-lisp
-  (use-package rainbow-delimiters
-    :ensure t
-    :init
-      (add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
-#+END_SRC
-** clean-aindent-mode
-Removes unnecessary white space
-#+BEGIN_SRC emacs-lisp
-(use-package clean-aindent-mode
-  :ensure t
-  :hook prog-mode)
-#+END_SRC
-Shows trailing white space
-#+BEGIN_SRC emacs-lisp
-(add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
-#+END_SRC
-** whitespace mode
-Reveals whitespace characters
-#+BEGIN_SRC emacs-lisp
-(global-set-key (kbd "C-c w") 'whitespace-mode)
-(add-hook 'diff-mode-hook (lambda ()
-                            (setq-local whitespace-style
-                                        '(face
-                                          tabs
-                                          tab-mark
-                                          spaces
-                                          space-mark
-                                          trailing
-                                          indentation::space
-                                          indentation::tab
-                                          newline
-                                          newline-mark))
-                            (whitespace-mode 1)))
-
-#+END_SRC
-** eldoc
-#+BEGIN_SRC emacs-lisp
-  (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
-  (add-hook 'lisp-interaction-mode-hook 'eldoc-mode)
-  (add-hook 'ielm-mode-hook 'eldoc-mode)
-#+END_SRC
-** key-freq
-collects interesting statistics
-#+BEGIN_SRC emacs-lisp
-(use-package keyfreq
-  :ensure t
-  :config
-  (keyfreq-mode 1)
-  (keyfreq-autosave-mode 1))
-#+END_SRC
-** undo-tree
-A more advanced undo mechanism
-#+BEGIN_SRC emacs-lisp
-(use-package undo-tree
-  :ensure t
-  :diminish undo-tree-mode
-  :config
-  (global-undo-tree-mode))
-#+END_SRC
-** volatile highlights
-Colour the material just copied
-#+BEGIN_SRC emacs-lisp
-(use-package volatile-highlights
-  :ensure t
-  :diminish volatile-highlights-mode
-  :config
-  (volatile-highlights-mode t))
-#+END_SRC
-** Workgroups
-Open the pages when you quit
-#+BEGIN_SRC emacs-lisp
-  ;; (use-package workgroups2
-  ;;   :ensure t
-  ;;   :diminish workgroups-mode
-  ;;   :config
-  ;;   (workgroups-mode 1))
-#+END_SRC
-** ibuffer
-#+BEGIN_SRC emacs-lisp
-(global-set-key (kbd "C-x C-b") 'ibuffer)
-(setq ibuffer-use-other-window t)
-#+END_SRC
-** hippie expand
-#+BEGIN_SRC emacs-lisp
-(global-set-key (kbd "M-/") 'hippie-expand) ;; replace dabbrev-expand
-(setq
- hippie-expand-try-functions-list
- '(try-expand-dabbrev ;; Try to expand word "dynamically", searching the current buffer.
-   try-expand-dabbrev-all-buffers ;; Try to expand word "dynamically", searching all other buffers.
-   try-expand-dabbrev-from-kill ;; Try to expand word "dynamically", searching the kill ring.
-   try-complete-file-name-partially ;; Try to complete text as a file name, as many characters as unique.
-   try-complete-file-name ;; Try to complete text as a file name.
-   try-expand-all-abbrevs ;; Try to expand word before point according to all abbrev tables.
-   try-expand-list ;; Try to complete the current line to an entire line in the buffer.
-   try-expand-line ;; Try to complete the current line to an entire line in the buffer.
-   try-complete-lisp-symbol-partially ;; Try to complete as an Emacs Lisp symbol, as many characters as unique.
-   try-complete-lisp-symbol) ;; Try to complete word as an Emacs Lisp symbol.
- )
-#+END_SRC
-** Highlight line
-#+BEGIN_SRC emacs-lisp
-(global-hl-line-mode)
-#+END_SRC
-** Line numbers
-#+BEGIN_SRC emacs-lisp
-(add-hook 'prog-mode-hook 'linum-mode)
-#+END_SRC
-
-** Garbage collection
-starts garbage collection every 100MB
-#+BEGIN_SRC emacs-lisp
-(setq gc-cons-threshold 100000000)
-#+END_SRC
-
-** Kill ring
-Changes the kill ring size to 5000.
-#+BEGIN_SRC emacs-lisp
-  (setq global-mark-ring-max 5000
-	mark-ring-max 5000
-	mode-require-final-newline t
-	kill-ring-max 5000
-	kill-whole-line t)
-#+END_SRC
-** Coding style
-#+BEGIN_SRC emacs-lisp
-(setq c-default-style "linux")
-#+END_SRC
-
-** Coding system
-#+BEGIN_SRC emacs-lisp
-(set-terminal-coding-system 'utf-8)
-(set-keyboard-coding-system 'utf-8)
-(set-language-environment "UTF-8")
-(prefer-coding-system 'utf-8)
-(setq-default indent-tabs-mode t)
-(delete-selection-mode)
-(global-set-key (kbd "RET") 'newline-and-indent)
-#+END_SRC
-** Move to beginning of line ignoring whitespace
-Move point back to indentation of beginning of line.
-
-Move point to the first non-whitespace character on this line.
-If point is already there, move to the beginning of the line.
-Effectively toggle between the first non-whitespace character and
-the beginning of the line.
-
-If ARG is not nil or 1, move forward ARG - 1 lines first. If
-point reaches the beginning or end of the buffer, stop there.
-#+BEGIN_SRC emacs-lisp
-(defun prelude-move-beginning-of-line (arg)
-  (interactive "^p")
-  (setq arg (or arg 1))
-
-  ;; Move lines first
-  (when (/= arg 1)
-    (let ((line-move-visual nil))
-      (forward-line (1- arg))))
-
-  (let ((orig-point (point)))
-    (back-to-indentation)
-    (when (= orig-point (point))
-      (move-beginning-of-line 1))))
-
-(global-set-key (kbd "C-a") 'prelude-move-beginning-of-line)
-#+END_SRC
-** Indent region or buffer
-#+BEGIN_SRC emacs-lisp
-(defun indent-region-or-buffer ()
-  "Indent a region if selected, otherwise the whole buffer."
-  (interactive)
-  (unless (member major-mode prelude-indent-sensitive-modes)
-    (save-excursion
-      (if (region-active-p)
-          (progn
-            (indent-region (region-beginning) (region-end))
-            (message "Indented selected region."))
-        (progn
-          (indent-buffer)
-          (message "Indented buffer.")))
-      (whitespace-cleanup))))
-
-(global-set-key (kbd "C-c i") 'indent-region-or-buffer)
-#+END_SRC
-** Tramp
-#+BEGIN_SRC emacs-lisp
-  (when (eq system-type 'windows-nt)
-    (setq tramp-default-method "pscp"))
-  (setq password-cache-expiry nil)
-#+END_SRC
-
-* Mode line tweaks
-Diminish is used but is included in init.el such that it can be used throughout this document
-** Spaceline
-A little easier to read than the default emacs mode line
-#+BEGIN_SRC emacs-lisp
-  (use-package spaceline
-    :ensure t
-    :config
-    (require 'spaceline-config)
-    (setq spaceline-buffer-encoding-abbrev-p t)
-    (setq spaceline-line-column-p t)
-    (setq spaceline-line-p t)
-    (setq powerline-default-separator (quote arrow))
-    (spaceline-spacemacs-theme))
-#+END_SRC
-** No separator
-#+BEGIN_SRC emacs-lisp
-(setq powerline-default-seperator nil)
-#+END_SRC
-* Programming tweaks
-** Yasnippet
-#+BEGIN_SRC emacs-lisp
-    (use-package yasnippet
-      :ensure t
-      :diminish yas-minor-mode
-      :config
-      (use-package yasnippet-snippets
-	:ensure t)
-      (yas-reload-all)
-      (yas-global-mode 1))
-#+END_SRC
-** flycheck
-#+BEGIN_SRC emacs-lisp
-(use-package flycheck
-  :ensure t)
-#+END_SRC
-*** flycheck-pos-tip
-#+BEGIN_SRC emacs-lisp
-(use-package flycheck-pos-tip
-  :ensure t
-  :after flycheck
-  :config
-  (flycheck-pos-tip-mode))
-#+END_SRC
-** Company
-Company is auto-complete for emacs
-#+BEGIN_SRC emacs-lisp
-  (use-package company
-    :ensure t
-    :diminish company-mode
-    :config
-    (global-company-mode)
-    (setq company-idle-delay 0)
-    (setq company-minimum-prefix-length 3))
-#+END_SRC
-** Magit
-#+BEGIN_SRC emacs-lisp
-  (use-package magit
-    :ensure t
-    :commands magit-get-top-dir
-    :bind ("C-x g" . magit-status)
-    :init
-    (progn
-      ;; make magit status go full-screen but remember previous window
-      ;; settings
-      ;; from: http://whattheemacsd.com/setup-magit.el-01.html
-      (defadvice magit-status (around magit-fullscreen activate)
-        (window-configuration-to-register :magit-fullscreen)
-        ad-do-it
-        (delete-other-windows))
-
-      ;; Close popup when committing - this stops the commit window
-      ;; hanging around
-      ;; From: http://git.io/rPBE0Q
-      (defadvice git-commit-commit (after delete-window activate)
-        (delete-window))
-
-      (defadvice git-commit-abort (after delete-window activate)
-        (delete-window))
-
-      :config
-      (progn
-        ;; restore previously hidden windows
-        (defadvice magit-quit-window (around magit-restore-screen activate)
-          (let ((current-mode major-mode))
-            ad-do-it
-            ;; we only want to jump to register when the last seen buffer
-            ;; was a magit-status buffer.
-            (when (eq 'magit-status-mode current-mode)
-              (jump-to-register :magit-fullscreen)))))
-
-      ;; magit settings
-      (setq
-       ;; don't put "origin-" in front of new branch names by default
-       magit-default-tracking-name-function 'magit-default-tracking-name-branch-only
-       ;; open magit status in same window as current buffer
-       magit-status-buffer-switch-function 'switch-to-buffer
-       ;; highlight word/letter changes in hunk diffs
-       magit-diff-refine-hunk t
-       ;; ask me if I want to include a revision when rewriting
-       magit-rewrite-inclusive 'ask
-       ;; ask me to save buffers
-       magit-save-some-buffers t
-       ;; pop the process buffer if we're taking a while to complete
-       magit-process-popup-time 10
-       ;; ask me if I want a tracking upstream
-       magit-set-upstream-on-push 'askifnotset
-       )))
-#+END_SRC
-** CEDET
-*** semantic
-#+BEGIN_SRC emacs-lisp
-(use-package semantic
-  :config
-  (global-semanticdb-minor-mode 1)
-  (global-semantic-idle-scheduler-mode 1)
-  (global-semantic-idle-summary-mode 1)
-  (semantic-mode 1))
-#+END_SRC
-*** EDE
-#+BEGIN_SRC emacs-lisp
-(use-package ede
-  :config
-  (global-ede-mode t))
-#+END_SRC
-*** gdb-many-windows
-#+BEGIN_SRC emacs-lisp
-(setq
- ;; use gdb-many-windows by default
- gdb-many-windows t
-
- ;; Non-nil means display source file containing the main routine at startup
- gdb-show-main t)
-#+END_SRC
-*** Semantic refactor
-#+BEGIN_SRC emacs-lisp
-(use-package srefactor
-  :ensure t
-  :bind (("M-RET o" . 'srefactor-lisp-one-line)
-	 ("M-RET m" . 'srefactor-lisp-format-sexp)
-	 ("M-RET d" . 'srefactor-lisp-format-defun)
-	 ("M-RET b" . 'srefactor-lisp-format-buffer)
-	 :map c-mode-base-map
-	      ("M-RET" . 'srefactor-refactor-at-point)
-	      :map c++-mode-map
-	      ("M-RET" . 'srefactor-refactor-at-point)))
-#+END_SRC
-** Language specific configs
-*** C/C++
-**** yasnippet
-#+BEGIN_SRC emacs-lisp
-(add-hook 'c++-mode-hook 'yas-minor-mode)
-(add-hook 'c-mode-hook 'yas-minor-mode)
-#+END_SRC
-**** flycheck clang
-#+BEGIN_SRC emacs-lisp
-(use-package flycheck-clang-analyzer
-  :ensure t
-  :config
-  (with-eval-after-load 'flycheck
-    (require 'flycheck-clang-analyzer)
-     (flycheck-clang-analyzer-setup)))
-#+END_SRC
-**** company
-#+BEGIN_SRC emacs-lisp
-    (use-package company-c-headers
-        :ensure tk
-        :after company
-        :config
-        (add-hook 'c++-mode-hook 'company-mode)
-        (add-hook 'c-mode-hook 'company-mode))
-
-    (use-package company-irony
-      :ensure t
-      :config
-      (add-to-list 'company-backends '(company-c-headers
-                                       company-dabbrev-code
-                                       company-irony)))
-
-    (use-package irony
-      :ensure t
-      :config
-      (setq w32-pipe-read-delay 0)
-      (add-hook 'c++-mode-hook 'irony-mode)
-      (add-hook 'c-mode-hook 'irony-mode)
-      (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
-#+END_SRC
-*** emacs-lisp
-**** eldoc
-#+BEGIN_SRC emacs-lisp
-(add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
-#+END_SRC
-**** yasnippet
-#+BEGIN_SRC emacs-lisp
-(add-hook 'emacs-lisp-mode-hook 'yas-minor-mode)
-#+END_SRC
-**** company
-#+BEGIN_SRC emacs-lisp
-(add-hook 'emacs-lisp-mode-hook 'company-mode)
-
-(use-package slime
-  :ensure t
-  :config
-  (setq inferior-lisp-program "/usr/bin/sbcl")
-  (setq slime-contribs '(slime-fancy)))
-
-(use-package slime-company
-  :ensure t
-  :init
-    (require 'company)
-    (slime-setup '(slime-fancy slime-company)))
-#+END_SRC
-*** x86
-**** x86-lookup
-#+BEGIN_SRC emacs-lisp
-(use-package x86-lookup
-  :ensure t
-  :init
-  (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
-  :bind ("C-h x" . x86-lookup))
-#+END_SRC
-*** Latex
-**** AucTex
-#+BEGIN_SRC emacs-lisp
-(use-package tex
-  :ensure auctex
-  :config
-  (setq TeX-auto-save t)
-  (setq TeX-parse-self t)
-  (setq doc-view-ghostscript-program "c:/msys64/mingw64/bin/gswin32c.exe")
-  (setq preview-gs-command "c:/msys64/mingw64/bin/gs.exe"))
-#+END_SRC
-**** Company
-#+BEGIN_SRC emacs-lisp
-  (use-package company-math
-    :ensure t
-    :after company
-    :config
-    (add-to-list 'company-backends 'company-math-symbols-unicode))
-
-  (use-package company-reftex
-    :ensure t
-    :after company
-    :config
-    (add-to-list 'company-backends 'company-reftex))
-
-  (use-package company-auctex
-    :ensure t
-    :after company
-    :config
-    (company-auctex-init))
-
-  (use-package company-bibtex
-    :ensure t
-    :after company
-    (add-to-list 'company-backends 'company-bibtex))
-#+END_SRC
-**** Preview pane
-#+BEGIN_SRC emacs-lisp
-(use-package latex-preview-pane
-  :ensure t
-  :config
-  (latex-preview-pane-enable))
-#+END_SRC
-**** TeXcount
-     Word counts in latex
-     #+BEGIN_SRC emacs-lisp
-       (when (eq system-type 'windows-nt)
-         (add-to-list 'exec-path "c:/Users/joelg/TeXcount_3_1_1")
-         (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
-
-       (defun texcount ()
-         (interactive)
-         (let*
-             ( (this-file (buffer-file-name))
-               (enc-str (symbol-name buffer-file-coding-system))
-               (enc-opt
-                (cond
-                 ((string-match "utf-8" enc-str) "-utf8")
-                 ((string-match "latin" enc-str) "-latin1")
-                 ("-encoding=guess")
-                 ) )
-               (word-count
-                (with-output-to-string
-                  (with-current-buffer standard-output
-                    (call-process "texcount" nil t nil "-0" enc-opt this-file)
-                    ) ) ) )
-           (message word-count)
-           ) )
-       (add-hook 'LaTeX-mode-hook (lambda () (define-key LaTeX-mode-map (kbd "C-c c") 'texcount)))
-       (add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map (kbd "C-c c") 'texcount)))
-     #+END_SRC
-
-*** PlantUML
-#+BEGIN_SRC emacs-lisp
-(use-package plantuml-mode
-  :ensure t
-  :init
-  (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar"))
-#+END_SRC
-
-*** Matlab
-**** Matlab mode
-#+BEGIN_SRC emacs-lisp
-  (use-package matlab-mode
-    :ensure t
-    :config
-    (autoload 'matlab-mode "matlab" "Matlab Editing Mode" t)
-    (add-to-list
-     'auto-mode-alist
-     '("\\.m$" . matlab-mode))
-    (setq matlab-indent-function t))
-#+END_SRC
-*** Racket
-**** Major mode
-#+BEGIN_SRC emacs-lisp
-  (when (eq system-type 'windows-nt)
-    (add-to-list 'exec-path "c:/Program Files/Racket")
-    (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
-
-  (use-package racket-mode
-      :ensure t
-      :config
-      (autoload 'racket-mode "Racket" "Racket Editing Mode" t)
-      (add-to-list
-       'auto-mode-alist
-       '("\\.rkt$" . matlab-mode))
-      (setq matlab-indent-function t))
-#+END_SRC
-
-* Org mode
-** Up to date org
-#+BEGIN_SRC emacs-lisp
-    (use-package org
-      :ensure t
-      :pin org)
-#+END_SRC
-** Small tweaks
-#+BEGIN_SRC emacs-lisp
-(setq org-src-fontify-natively t)
-(setq org-src-tab-acts-natively t)
-(setq org-confirm-babel-evaluate nil)
-(setq org-export-with-smart-quotes t)
-(setq org-src-window-setup 'current-window)
-(add-hook 'org-mode-hook 'org-indent-mode)
-(diminish 'org-indent-mode)
-(diminish 'visual-line-mode)
-#+END_SRC
-** Line wrapping
-#+BEGIN_SRC emacs-lisp
-  (add-hook 'org-mode-hook
-	      '(lambda ()
-		 (visual-line-mode 1)))
-#+END_SRC
-** org-bullets
-#+BEGIN_SRC emacs-lisp
-(use-package org-bullets
-  :ensure t
-  :config
-    (add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
-#+END_SRC
-** Org Babel
-*** Languages
-Add C to org babel supported languages
-#+BEGIN_SRC emacs-lisp
-  (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t)
-                                                           (C . t)
-                                                           (python . t)
-                                                           (latex . t)
-                                                           (scheme . t)
-                                                           (gnuplot . t)
-                                                           (matlab . t)
-                                                           (plantuml . t)
-                                                           (fortran . t)
-                                                           (java . t)))
-#+END_SRC
+#+TITLE: My Emacs configuration
+* Windows dependencies
+Dependencies needed for Aspell, poppler PDF-tools, compilers and ghost-script provided by mingw64
+#+BEGIN_SRC emacs-lisp
+  (when (eq system-type 'windows-nt)
+    (add-to-list 'exec-path "C:/msys64/usr/bin")
+    (add-to-list 'exec-path "C:/msys64/mingw64/bin")
+    (add-to-list 'exec-path "c:/Program Files/gnuplot")
+    (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
+#+END_SRC
+
+* Aesthetic changes
+** Zenburn theme
+#+BEGIN_SRC emacs-lisp
+  (use-package zenburn-theme
+    :ensure t
+    :config
+    (load-theme 'zenburn t))
+#+END_SRC
+** Default font
+#+BEGIN_SRC emacs-lisp
+  (set-frame-font "DejaVu Sans Mono" nil t)
+#+END_SRC
+** Remove menu bar, toolbar, but keep scroll bar
+#+BEGIN_SRC emacs-lisp
+  (menu-bar-mode 0)
+  (tool-bar-mode 0)
+  (scroll-bar-mode 1)
+#+END_SRC
+
+* Writing requirements
+** Spellchecking
+#+BEGIN_SRC emacs-lisp
+  (require 'ispell)
+  (setq-default ispell-program-name "aspell")
+  (setq-default ispell-local-dictionary "en_AU")
+  (add-hook 'latex-mode-hook 'flyspell-mode)
+  (add-hook 'latex-mode-hook 'flyspell-buffer)
+  (add-hook 'org-mode-hook 'flyspell-mode)
+  (add-hook 'org-mode-hook 'flyspell-buffer)
+#+END_SRC
+
+** Switch-window
+Helps to change windows easily when many are open at once
+#+BEGIN_SRC emacs-lisp
+(use-package switch-window
+  :ensure t
+  :config
+    (setq switch-window-input-style 'minibuffer)
+    (setq switch-window-increase 4)
+    (setq switch-window-threshold 2)
+    (setq switch-window-shortcut-style 'qwerty)
+    (setq switch-window-qwerty-shortcuts
+        '("a" "s" "d" "f" "j" "k" "l" "i" "o"))
+  :bind
+    ([remap other-window] . switch-window))
+#+END_SRC
+** Go to new window when opened
+#+BEGIN_SRC emacs-lisp
+  (defun split-and-follow-horizontally ()
+    (interactive)
+    (split-window-below)
+    (balance-windows)
+    (other-window 1))
+  (global-set-key (kbd "C-x 2") 'split-and-follow-horizontally)
+
+  (defun split-and-follow-vertically ()
+    (interactive)
+    (split-window-right)
+    (balance-windows)
+    (other-window 1))
+  (global-set-key (kbd "C-x 3") 'split-and-follow-vertically)
+#+END_SRC
+** PDF-tools
+#+BEGIN_SRC emacs-lisp
+(use-package pdf-tools
+  :ensure t
+  :config
+  (pdf-tools-install))
+
+#+END_SRC
+* Helm and Projectile
+** Helm core
+#+BEGIN_SRC emacs-lisp
+  (use-package helm-config
+    :ensure helm
+    :bind (("M-x" . helm-M-x)
+           ("C-x C-f" . helm-find-files)
+           ("M-y" . helm-show-kill-ring)
+           ("C-x b" . helm-mini)
+           ("C-c h o" . helm-occur))
+    :config
+    (setq helm-M-x-fuzzy-match t)
+    (setq helm-buffers-fuzzy-matching t
+          helm-recentf-fuzzy-match    t)
+    (setq helm-split-window-in-side-p           t ; open helm buffer inside current window, not occupy whole other window
+          helm-move-to-line-cycle-in-source     t ; move to end or beginning of source when reaching top or bottom of source.
+          helm-ff-search-library-in-sexp        t ; search for library in `require' and `declare-function' sexp.
+          helm-scroll-amount                    8 ; scroll 8 lines other window using M-<next>/M-<prior>
+          helm-ff-file-name-history-use-recentf t
+          helm-echo-input-in-header-line t)
+    (defun spacemacs//helm-hide-minibuffer-maybe ()
+      "Hide minibuffer in Helm session if we use the header line as input field."
+      (when (with-helm-buffer helm-echo-input-in-header-line)
+        (let ((ov (make-overlay (point-min) (point-max) nil nil t)))
+          (overlay-put ov 'window (selected-window))
+          (overlay-put ov 'face
+                       (let ((bg-color (face-background 'default nil)))
+                         `(:background ,bg-color :foreground ,bg-color)))
+          (setq-local cursor-type nil))))
+    (add-hook 'helm-minibuffer-set-up-hook
+              'spacemacs//helm-hide-minibuffer-maybe)
+    (helm-mode 1))
+#+END_SRC
+** Projectile
+*** Enable it
+ #+BEGIN_SRC emacs-lisp
+   (use-package projectile
+     :ensure t
+     :bind ("C-c p" . projectile-command-map)
+     :diminish projectile-mode
+     :config
+     (projectile-global-mode)
+     (setq projectile-completion-system 'helm)
+     (when (eq system-type 'windows-nt)
+       (setq projectile-indexing-method 'alien)))
+ #+END_SRC
+*** Let it compile things
+ #+BEGIN_SRC emacs-lisp
+   (global-set-key (kbd "<f5>") 'projectile-compile-project)
+ #+END_SRC
+*** Enable communication with helm
+#+BEGIN_SRC emacs-lisp
+(use-package helm-projectile
+  :ensure t
+  :config
+  (helm-projectile-on))
+#+END_SRC
+* Small tweaks
+** Remove startup screen
+#+BEGIN_SRC emacs-lisp
+(setq inhibit-startup-message t)
+#+END_SRC
+** Disable bell
+Bloody bell dings every time you hit a key too much
+#+BEGIN_SRC emacs-lisp
+(setq ring-bell-function 'ignore)
+#+END_SRC
+** Pretty symbols
+Why not? They make it look nice
+#+BEGIN_SRC emacs-lisp
+  (when window-system
+    (use-package pretty-mode
+      :ensure t
+      :diminish t
+      :config
+      (global-pretty-mode)))
+#+END_SRC
+** find file other window
+Lets it accept more than one file. Works recursively.
+#+BEGIN_SRC emacs-lisp
+(defadvice find-file-other-window (around find-files activate)
+  (if (listp filename)
+      (loop for f in filename do (find-file-other-window f wildcards))
+    ad-do-it))
+#+END_SRC
+** Which key
+Helps to explain keybindings if you get lost
+#+BEGIN_SRC emacs-lisp
+  (use-package which-key
+    :ensure t
+    :diminish which-key-mode
+    :config
+    (which-key-mode))
+#+END_SRC
+** Go to this file
+#+BEGIN_SRC emacs-lisp
+(defun config-visit ()
+  (interactive)
+  (find-file "~/.emacs.d/config.org"))
+(global-set-key (kbd "C-c e d") 'config-visit)
+#+END_SRC
+** Go to init.el
+#+BEGIN_SRC emacs-lisp
+  (defun init-visit ()
+    (interactive)
+    (find-file "~/.emacs.d/init.el"))
+  (global-set-key (kbd "C-c e i") 'init-visit)
+#+END_SRC
+** Reload configuration
+#+BEGIN_SRC emacs-lisp
+(defun config-reload ()
+  "Reloads ~/.emacs.d/config.org at run time"
+  (interactive)
+  (org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
+(global-set-key (kbd "C-c e r") 'config-reload)
+#+END_SRC
+** Smartparens
+Matches brackets automatically
+#+BEGIN_SRC emacs-lisp
+(use-package smartparens
+  :ensure t
+  :diminish smartparens-mode
+  :config
+  (progn
+    (require 'smartparens-config)
+    (smartparens-global-mode 1)))
+#+END_SRC
+** Rainbow
+Its a little gimmicky but its still cool
+#+BEGIN_SRC emacs-lisp
+  (use-package rainbow-mode
+    :ensure t
+    :diminish rainbow-mode
+    :init
+    (add-hook 'prog-mode-hook 'rainbow-mode))
+#+END_SRC
+** Rainbow delimiters
+A bit more useful than above.
+Colours the brackets so that they stand out more.
+#+BEGIN_SRC emacs-lisp
+  (use-package rainbow-delimiters
+    :ensure t
+    :init
+      (add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
+#+END_SRC
+** clean-aindent-mode
+Removes unnecessary white space
+#+BEGIN_SRC emacs-lisp
+(use-package clean-aindent-mode
+  :ensure t
+  :hook prog-mode)
+#+END_SRC
+Shows trailing white space
+#+BEGIN_SRC emacs-lisp
+(add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
+#+END_SRC
+** whitespace mode
+Reveals whitespace characters
+#+BEGIN_SRC emacs-lisp
+(global-set-key (kbd "C-c w") 'whitespace-mode)
+(add-hook 'diff-mode-hook (lambda ()
+                            (setq-local whitespace-style
+                                        '(face
+                                          tabs
+                                          tab-mark
+                                          spaces
+                                          space-mark
+                                          trailing
+                                          indentation::space
+                                          indentation::tab
+                                          newline
+                                          newline-mark))
+                            (whitespace-mode 1)))
+
+#+END_SRC
+** eldoc
+#+BEGIN_SRC emacs-lisp
+  (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
+  (add-hook 'lisp-interaction-mode-hook 'eldoc-mode)
+  (add-hook 'ielm-mode-hook 'eldoc-mode)
+#+END_SRC
+** key-freq
+collects interesting statistics
+#+BEGIN_SRC emacs-lisp
+(use-package keyfreq
+  :ensure t
+  :config
+  (keyfreq-mode 1)
+  (keyfreq-autosave-mode 1))
+#+END_SRC
+** undo-tree
+A more advanced undo mechanism
+#+BEGIN_SRC emacs-lisp
+(use-package undo-tree
+  :ensure t
+  :diminish undo-tree-mode
+  :config
+  (global-undo-tree-mode))
+#+END_SRC
+** volatile highlights
+Colour the material just copied
+#+BEGIN_SRC emacs-lisp
+(use-package volatile-highlights
+  :ensure t
+  :diminish volatile-highlights-mode
+  :config
+  (volatile-highlights-mode t))
+#+END_SRC
+** Workgroups
+Open the pages when you quit
+#+BEGIN_SRC emacs-lisp
+  ;; (use-package workgroups2
+  ;;   :ensure t
+  ;;   :diminish workgroups-mode
+  ;;   :config
+  ;;   (workgroups-mode 1))
+#+END_SRC
+** ibuffer
+#+BEGIN_SRC emacs-lisp
+(global-set-key (kbd "C-x C-b") 'ibuffer)
+(setq ibuffer-use-other-window t)
+#+END_SRC
+** hippie expand
+#+BEGIN_SRC emacs-lisp
+(global-set-key (kbd "M-/") 'hippie-expand) ;; replace dabbrev-expand
+(setq
+ hippie-expand-try-functions-list
+ '(try-expand-dabbrev ;; Try to expand word "dynamically", searching the current buffer.
+   try-expand-dabbrev-all-buffers ;; Try to expand word "dynamically", searching all other buffers.
+   try-expand-dabbrev-from-kill ;; Try to expand word "dynamically", searching the kill ring.
+   try-complete-file-name-partially ;; Try to complete text as a file name, as many characters as unique.
+   try-complete-file-name ;; Try to complete text as a file name.
+   try-expand-all-abbrevs ;; Try to expand word before point according to all abbrev tables.
+   try-expand-list ;; Try to complete the current line to an entire line in the buffer.
+   try-expand-line ;; Try to complete the current line to an entire line in the buffer.
+   try-complete-lisp-symbol-partially ;; Try to complete as an Emacs Lisp symbol, as many characters as unique.
+   try-complete-lisp-symbol) ;; Try to complete word as an Emacs Lisp symbol.
+ )
+#+END_SRC
+** Highlight line
+#+BEGIN_SRC emacs-lisp
+(global-hl-line-mode)
+#+END_SRC
+** Line numbers
+#+BEGIN_SRC emacs-lisp
+(add-hook 'prog-mode-hook 'linum-mode)
+#+END_SRC
+
+** Garbage collection
+starts garbage collection every 100MB
+#+BEGIN_SRC emacs-lisp
+(setq gc-cons-threshold 100000000)
+#+END_SRC
+
+** Kill ring
+Changes the kill ring size to 5000.
+#+BEGIN_SRC emacs-lisp
+  (setq global-mark-ring-max 5000
+	mark-ring-max 5000
+	mode-require-final-newline t
+	kill-ring-max 5000
+	kill-whole-line t)
+#+END_SRC
+** Coding style
+#+BEGIN_SRC emacs-lisp
+(setq c-default-style "linux")
+#+END_SRC
+
+** Coding system
+#+BEGIN_SRC emacs-lisp
+(set-terminal-coding-system 'utf-8)
+(set-keyboard-coding-system 'utf-8)
+(set-language-environment "UTF-8")
+(prefer-coding-system 'utf-8)
+(setq-default indent-tabs-mode t)
+(delete-selection-mode)
+(global-set-key (kbd "RET") 'newline-and-indent)
+#+END_SRC
+** Move to beginning of line ignoring whitespace
+Move point back to indentation of beginning of line.
+
+Move point to the first non-whitespace character on this line.
+If point is already there, move to the beginning of the line.
+Effectively toggle between the first non-whitespace character and
+the beginning of the line.
+
+If ARG is not nil or 1, move forward ARG - 1 lines first. If
+point reaches the beginning or end of the buffer, stop there.
+#+BEGIN_SRC emacs-lisp
+(defun prelude-move-beginning-of-line (arg)
+  (interactive "^p")
+  (setq arg (or arg 1))
+
+  ;; Move lines first
+  (when (/= arg 1)
+    (let ((line-move-visual nil))
+      (forward-line (1- arg))))
+
+  (let ((orig-point (point)))
+    (back-to-indentation)
+    (when (= orig-point (point))
+      (move-beginning-of-line 1))))
+
+(global-set-key (kbd "C-a") 'prelude-move-beginning-of-line)
+#+END_SRC
+** Indent region or buffer
+#+BEGIN_SRC emacs-lisp
+(defun indent-region-or-buffer ()
+  "Indent a region if selected, otherwise the whole buffer."
+  (interactive)
+  (unless (member major-mode prelude-indent-sensitive-modes)
+    (save-excursion
+      (if (region-active-p)
+          (progn
+            (indent-region (region-beginning) (region-end))
+            (message "Indented selected region."))
+        (progn
+          (indent-buffer)
+          (message "Indented buffer.")))
+      (whitespace-cleanup))))
+
+(global-set-key (kbd "C-c i") 'indent-region-or-buffer)
+#+END_SRC
+** Tramp
+#+BEGIN_SRC emacs-lisp
+  (when (eq system-type 'windows-nt)
+    (setq tramp-default-method "pscp"))
+  (setq password-cache-expiry nil)
+#+END_SRC
+
+* Mode line tweaks
+Diminish is used but is included in init.el such that it can be used throughout this document
+** Spaceline
+A little easier to read than the default emacs mode line
+#+BEGIN_SRC emacs-lisp
+  (use-package spaceline
+    :ensure t
+    :config
+    (require 'spaceline-config)
+    (setq spaceline-buffer-encoding-abbrev-p t)
+    (setq spaceline-line-column-p t)
+    (setq spaceline-line-p t)
+    (setq powerline-default-separator (quote arrow))
+    (spaceline-spacemacs-theme))
+#+END_SRC
+** No separator
+#+BEGIN_SRC emacs-lisp
+(setq powerline-default-seperator nil)
+#+END_SRC
+* Programming tweaks
+** Yasnippet
+#+BEGIN_SRC emacs-lisp
+    (use-package yasnippet
+      :ensure t
+      :diminish yas-minor-mode
+      :config
+      (use-package yasnippet-snippets
+	:ensure t)
+      (yas-reload-all)
+      (yas-global-mode 1))
+#+END_SRC
+** flycheck
+#+BEGIN_SRC emacs-lisp
+(use-package flycheck
+  :ensure t)
+#+END_SRC
+*** flycheck-pos-tip
+#+BEGIN_SRC emacs-lisp
+(use-package flycheck-pos-tip
+  :ensure t
+  :after flycheck
+  :config
+  (flycheck-pos-tip-mode))
+#+END_SRC
+** Company
+Company is auto-complete for emacs
+#+BEGIN_SRC emacs-lisp
+  (use-package company
+    :ensure t
+    :diminish company-mode
+    :config
+    (global-company-mode)
+    (setq company-idle-delay 0)
+    (setq company-minimum-prefix-length 3))
+#+END_SRC
+** Magit
+#+BEGIN_SRC emacs-lisp
+  (use-package magit
+    :ensure t
+    :commands magit-get-top-dir
+    :bind ("C-x g" . magit-status)
+    :init
+    (progn
+      ;; make magit status go full-screen but remember previous window
+      ;; settings
+      ;; from: http://whattheemacsd.com/setup-magit.el-01.html
+      (defadvice magit-status (around magit-fullscreen activate)
+        (window-configuration-to-register :magit-fullscreen)
+        ad-do-it
+        (delete-other-windows))
+
+      ;; Close popup when committing - this stops the commit window
+      ;; hanging around
+      ;; From: http://git.io/rPBE0Q
+      (defadvice git-commit-commit (after delete-window activate)
+        (delete-window))
+
+      (defadvice git-commit-abort (after delete-window activate)
+        (delete-window))
+
+      :config
+      (progn
+        ;; restore previously hidden windows
+        (defadvice magit-quit-window (around magit-restore-screen activate)
+          (let ((current-mode major-mode))
+            ad-do-it
+            ;; we only want to jump to register when the last seen buffer
+            ;; was a magit-status buffer.
+            (when (eq 'magit-status-mode current-mode)
+              (jump-to-register :magit-fullscreen)))))
+
+      ;; magit settings
+      (setq
+       ;; don't put "origin-" in front of new branch names by default
+       magit-default-tracking-name-function 'magit-default-tracking-name-branch-only
+       ;; open magit status in same window as current buffer
+       magit-status-buffer-switch-function 'switch-to-buffer
+       ;; highlight word/letter changes in hunk diffs
+       magit-diff-refine-hunk t
+       ;; ask me if I want to include a revision when rewriting
+       magit-rewrite-inclusive 'ask
+       ;; ask me to save buffers
+       magit-save-some-buffers t
+       ;; pop the process buffer if we're taking a while to complete
+       magit-process-popup-time 10
+       ;; ask me if I want a tracking upstream
+       magit-set-upstream-on-push 'askifnotset
+       )))
+#+END_SRC
+** CEDET
+*** semantic
+#+BEGIN_SRC emacs-lisp
+  (use-package semantic
+    :config
+    (global-semanticdb-minor-mode 1)
+    (global-semantic-idle-scheduler-mode 1)
+    (global-semantic-idle-summary-mode 1)
+    (semantic-mode 1))
+#+END_SRC
+*** EDE
+#+BEGIN_SRC emacs-lisp
+(use-package ede
+  :config
+  (global-ede-mode t))
+#+END_SRC
+*** gdb-many-windows
+#+BEGIN_SRC emacs-lisp
+(setq
+ ;; use gdb-many-windows by default
+ gdb-many-windows t
+
+ ;; Non-nil means display source file containing the main routine at startup
+ gdb-show-main t)
+#+END_SRC
+*** Semantic refactor
+#+BEGIN_SRC emacs-lisp
+(use-package srefactor
+  :ensure t
+  :bind (("M-RET o" . 'srefactor-lisp-one-line)
+	 ("M-RET m" . 'srefactor-lisp-format-sexp)
+	 ("M-RET d" . 'srefactor-lisp-format-defun)
+	 ("M-RET b" . 'srefactor-lisp-format-buffer)
+	 :map c-mode-base-map
+	      ("M-RET" . 'srefactor-refactor-at-point)
+	      :map c++-mode-map
+	      ("M-RET" . 'srefactor-refactor-at-point)))
+#+END_SRC
+** Language specific configs
+*** C/C++
+**** yasnippet
+#+BEGIN_SRC emacs-lisp
+(add-hook 'c++-mode-hook 'yas-minor-mode)
+(add-hook 'c-mode-hook 'yas-minor-mode)
+#+END_SRC
+**** flycheck clang
+#+BEGIN_SRC emacs-lisp
+(use-package flycheck-clang-analyzer
+  :ensure t
+  :config
+  (with-eval-after-load 'flycheck
+    (require 'flycheck-clang-analyzer)
+     (flycheck-clang-analyzer-setup)))
+#+END_SRC
+**** company
+#+BEGIN_SRC emacs-lisp
+  (use-package company-c-headers
+      :ensure t
+      :after company
+      :config
+      (add-hook 'c++-mode-hook 'company-mode)
+      (add-hook 'c-mode-hook 'company-mode))
+
+  (use-package company-irony
+    :ensure t
+    :config
+    (add-to-list 'company-backends '(company-c-headers
+                                     company-dabbrev-code
+                                     company-irony)))
+
+  (use-package irony
+    :ensure t
+    :init
+    (setq w32-pipe-read-delay 0)
+    (setq irony-server-w32-pipe-buffer-size (* 64 1024))
+    (add-hook 'c++-mode-hook 'irony-mode)
+    (add-hook 'c-mode-hook 'irony-mode)
+    (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
+    (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
+#+END_SRC
+*** emacs-lisp
+**** eldoc
+#+BEGIN_SRC emacs-lisp
+(add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
+#+END_SRC
+**** yasnippet
+#+BEGIN_SRC emacs-lisp
+(add-hook 'emacs-lisp-mode-hook 'yas-minor-mode)
+#+END_SRC
+**** company
+#+BEGIN_SRC emacs-lisp
+(add-hook 'emacs-lisp-mode-hook 'company-mode)
+
+(use-package slime
+  :ensure t
+  :config
+  (setq inferior-lisp-program "/usr/bin/sbcl")
+  (setq slime-contribs '(slime-fancy)))
+
+(use-package slime-company
+  :ensure t
+  :init
+    (require 'company)
+    (slime-setup '(slime-fancy slime-company)))
+#+END_SRC
+*** x86
+**** x86-lookup
+#+BEGIN_SRC emacs-lisp
+(use-package x86-lookup
+  :ensure t
+  :init
+  (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
+  :bind ("C-h x" . x86-lookup))
+#+END_SRC
+*** Latex
+**** AucTex
+#+BEGIN_SRC emacs-lisp
+(use-package tex
+  :ensure auctex
+  :config
+  (setq TeX-auto-save t)
+  (setq TeX-parse-self t)
+  (setq doc-view-ghostscript-program "c:/msys64/mingw64/bin/gswin32c.exe")
+  (setq preview-gs-command "c:/msys64/mingw64/bin/gs.exe"))
+#+END_SRC
+**** Company
+#+BEGIN_SRC emacs-lisp
+  (use-package company-math
+    :ensure t
+    :after company
+    :config
+    (add-to-list 'company-backends 'company-math-symbols-unicode))
+
+  (use-package company-reftex
+    :ensure t
+    :after company
+    :config
+    (add-to-list 'company-backends 'company-reftex))
+
+  (use-package company-auctex
+    :ensure t
+    :after company
+    :config
+    (company-auctex-init))
+
+  (use-package company-bibtex
+    :ensure t
+    :after company
+    (add-to-list 'company-backends 'company-bibtex))
+#+END_SRC
+**** Preview pane
+#+BEGIN_SRC emacs-lisp
+(use-package latex-preview-pane
+  :ensure t
+  :config
+  (latex-preview-pane-enable))
+#+END_SRC
+**** TeXcount
+     Word counts in latex
+     #+BEGIN_SRC emacs-lisp
+       (when (eq system-type 'windows-nt)
+         (add-to-list 'exec-path "c:/Users/joelg/TeXcount_3_1_1")
+         (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
+
+       (defun texcount ()
+         (interactive)
+         (let*
+             ( (this-file (buffer-file-name))
+               (enc-str (symbol-name buffer-file-coding-system))
+               (enc-opt
+                (cond
+                 ((string-match "utf-8" enc-str) "-utf8")
+                 ((string-match "latin" enc-str) "-latin1")
+                 ("-encoding=guess")
+                 ) )
+               (word-count
+                (with-output-to-string
+                  (with-current-buffer standard-output
+                    (call-process "texcount" nil t nil "-0" enc-opt this-file)
+                    ) ) ) )
+           (message word-count)
+           ) )
+       (add-hook 'LaTeX-mode-hook (lambda () (define-key LaTeX-mode-map (kbd "C-c c") 'texcount)))
+       (add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map (kbd "C-c c") 'texcount)))
+     #+END_SRC
+
+*** PlantUML
+#+BEGIN_SRC emacs-lisp
+(use-package plantuml-mode
+  :ensure t
+  :init
+  (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar"))
+#+END_SRC
+
+*** Racket
+**** Major mode
+#+BEGIN_SRC emacs-lisp
+  (when (eq system-type 'windows-nt)
+    (add-to-list 'exec-path "c:/Program Files/Racket")
+    (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
+
+  (use-package racket-mode
+      :ensure t
+      :config
+      (autoload 'racket-mode "Racket" "Racket Editing Mode" t)
+      (add-to-list
+       'auto-mode-alist
+       '("\\.rkt$" . matlab-mode))
+      (setq matlab-indent-function t))
+#+END_SRC
+
+*** Verilog
+Add updated version and integrate it with Emacs.
+#+BEGIN_SRC emacs-lisp
+  (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode-20190324/verilog-mode.el")
+  (require 'verilog-mode)
+
+  (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
+  (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode))
+#+END_SRC
+* Org mode
+** Up to date org
+#+BEGIN_SRC emacs-lisp
+    (use-package org
+      :ensure t
+      :pin org)
+#+END_SRC
+** Small tweaks
+#+BEGIN_SRC emacs-lisp
+(setq org-src-fontify-natively t)
+(setq org-src-tab-acts-natively t)
+(setq org-confirm-babel-evaluate nil)
+(setq org-export-with-smart-quotes t)
+(setq org-src-window-setup 'current-window)
+(add-hook 'org-mode-hook 'org-indent-mode)
+(diminish 'org-indent-mode)
+(diminish 'visual-line-mode)
+#+END_SRC
+** Line wrapping
+#+BEGIN_SRC emacs-lisp
+  (add-hook 'org-mode-hook
+	      '(lambda ()
+		 (visual-line-mode 1)))
+#+END_SRC
+** org-bullets
+#+BEGIN_SRC emacs-lisp
+(use-package org-bullets
+  :ensure t
+  :config
+    (add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
+#+END_SRC
+** Org Babel
+*** Languages
+Add C to org babel supported languages
+#+BEGIN_SRC emacs-lisp
+  (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t)
+                                                           (C . t)
+                                                           (python . t)
+                                                           (latex . t)
+                                                           (scheme . t)
+                                                           (gnuplot . t)
+                                                           (matlab . t)
+                                                           (plantuml . t)
+                                                           (fortran . t)
+                                                           (java . t)))
+#+END_SRC
+** Latex preview fragments match colour
+Make the previews match theme colour of Emacs.
+#+BEGIN_SRC emacs-lisp
+  (let ((dvipng--plist (alist-get 'dvipng org-preview-latex-process-alist)))
+    (plist-put dvipng--plist :use-xcolor t)
+    (plist-put dvipng--plist :image-converter '("dvipng -D %D -T tight -o %O %f")))
+#+END_SRC
+

--
Gitblit v1.9.3