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.10.0