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

Chizi123
2019-01-06 d070a7b257cf0c42efe058bc520a585fb166f46d
Moved config from init.el to config.org
2 files modified
5 files added
1259 ■■■■ changed files
.gitignore 13 ●●●●● patch | view | raw | blame | history
config.org 674 ●●●●● patch | view | raw | blame | history
init.el 521 ●●●● patch | view | raw | blame | history
snippets/org-mode/elisp-expand 8 ●●●●● patch | view | raw | blame | history
snippets/org-mode/source-code-expand 8 ●●●●● patch | view | raw | blame | history
snippets/org-mode/source-code-expand~ 7 ●●●●● patch | view | raw | blame | history
tramp 28 ●●●●● patch | view | raw | blame | history
.gitignore
New file
@@ -0,0 +1,13 @@
*~
config.el
elpa/*
eshell/*
semanticdb/*
url/*
srecode-map.el
.last-package-update-day
ede-projects.el
network-security.data
projectile-bookmarks.eld
projectile.cache
recentf
config.org
New file
@@ -0,0 +1,674 @@
#+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/Racket")
    (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)
     :config
     (projectile-global-mode)
     (setq projectile-completion-system 'helm)
     (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
** 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
    :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
  :config
  (global-undo-tree-mode))
#+END_SRC
** volatile highlights
Colour the material just copied
#+BEGIN_SRC emacs-lisp
(use-package volatile-highlights
  :ensure t
  :config
  (volatile-highlights-mode t))
#+END_SRC
** Workgroups
Open the pages when you quit
#+BEGIN_SRC emacs-lisp
(use-package workgroups2
  :ensure t
  :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 "plink"))
  (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))
#+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
    :hook (prog-mode)
    :config
    (setq company-idle-delay 0)
    (setq company-minimum-prefix-length 3))
#+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
  (add-hook 'c-mode-common-hook
        (lambda ()
          (define-key c-mode-base-map  [(tab)] 'company-complete))))
    (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
      :config
      (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))
#+END_SRC
**** Preview pane
#+BEGIN_SRC emacs-lisp
(use-package latex-preview-pane
  :ensure t
  :config
  (latex-preview-pane-enable))
#+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
** 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
* 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)
#+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
init.el
@@ -1,51 +1,31 @@
(setq inhibit-startup-message t)
;; set paths for executable
;; use mingw64 for aspell, poppler (pdf-tools), gcc, ghostscript
(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/Racket")
(setenv "PATH" (mapconcat #'identity exec-path path-separator))
;; adding modules to load path
(add-to-list 'load-path "~/.emacs.d/custom/")
(add-to-list 'load-path "~/.emacs.d/elpa/")
;; (add-to-list 'load-path "~/.emacs.d/custom/")
;; (add-to-list 'load-path "~/.emacs.d/elpa/")
;; load your modules
(require 'setup-applications)
(require 'setup-communication)
(require 'setup-convenience)
(require 'setup-data)
(require 'setup-development)
(require 'setup-editing)
(require 'setup-environment)
(require 'setup-external)
(require 'setup-faces)
(require 'setup-files)
(require 'setup-help)
(require 'setup-programming)
(require 'setup-text)
(require 'setup-local)
;; set default font
(set-default-font "DejaVu Sans Mono-10")
;; setting up aspell
(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)
;; (require 'setup-applications)
;; (require 'setup-communication)
;; (require 'setup-convenience)
;; (require 'setup-data)
;; (require 'setup-development)
;; (require 'setup-editing)
;; (require 'setup-environment)
;; (require 'setup-external)
;; (require 'setup-faces)
;; (require 'setup-files)
;; (require 'setup-help)
;; (require 'setup-programming)
;; (require 'setup-text)
;; (require 'setup-local)
;; Repos
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
(setq package-archives '(("gnu"   . "http://elpa.gnu.org/packages/")
             ("melpa" . "https://melpa.org/packages/")
             ("org"   . "https://orgmode.org/elpa/")))
(package-initialize)
;; use-package
(package-initialize)
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))
@@ -61,286 +41,257 @@
  (setq auto-package-update-hide-results t)
  (auto-package-update-maybe))
;; zenburn theme
(use-package zenburn-theme
  :ensure t
  :config
  (load-theme 'zenburn t))
;; diminish
(use-package diminish
  :ensure t)
;; helm
(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))
;; redirect to org config file
(when (file-readable-p "~/.emacs.d/config.org")
  (org-babel-load-file "~/.emacs.d/config.org"))
;; CEDET
(use-package semantic
  :config
  (global-semanticdb-minor-mode 1)
  (global-semantic-idle-scheduler-mode 1)
  (global-semantic-idle-summary-mode 1)
  (semantic-mode 1))
;; (use-package semantic
;;   :config
;;   (global-semanticdb-minor-mode 1)
;;   (global-semantic-idle-scheduler-mode 1)
;;   (global-semantic-idle-summary-mode 1)
;;   (semantic-mode 1))
(use-package ede
  :config
  (global-ede-mode t))
;; (use-package ede
;;   :config
;;   (global-ede-mode t))
;; (setq
;;  ;; use gdb-many-windows by default
;;  gdb-many-windows t
(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)
 ;; Non-nil means display source file containing the main routine at startup
 gdb-show-main t)
;; ;; undo-tree
;; (use-package undo-tree
;;   :ensure t
;;   :config
;;   (global-undo-tree-mode))
;; undo-tree
(use-package undo-tree
  :ensure t
  :config
  (global-undo-tree-mode))
;; ;; volatile highlights
;; (use-package volatile-highlights
;;   :ensure t
;;   :config
;;   (volatile-highlights-mode t))
;; volatile highlights
(use-package volatile-highlights
  :ensure t
  :config
  (volatile-highlights-mode t))
;; ;; yasnippet
;; (use-package yasnippet
;;   :ensure t
;;   :config
;;   (yas-global-mode 1))
;; yasnippet
(use-package yasnippet
  :ensure t
  :config
  (yas-global-mode 1))
;; ;; ggtags
;; (use-package ggtags
;;   :ensure t
;;   :config
;;   (add-hook 'c-mode-common-hook
;;             (lambda
;;           (when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
;;         (ggtags-mode 1)))))
;; ggtags
(use-package ggtags
  :ensure t
  :config
  (add-hook 'c-mode-common-hook
            (lambda
          (when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
        (ggtags-mode 1)))))
;; ;; workgroups2
;; (use-package workgroups2
;;   :ensure t
;;   :config
;;   (workgroups-mode 1))
;; workgroups2
(use-package workgroups2
  :ensure t
  :config
  (workgroups-mode 1))
;; ;; smartparens
;; (use-package smartparens
;;   :ensure t
;;   :diminish smartparens-mode
;;   :config
;;   (progn
;;     (require 'smartparens-config)
;;     (smartparens-global-mode 1)))
;; smartparens
(use-package smartparens
  :ensure t
  :diminish smartparens-mode
  :config
  (progn
    (require 'smartparens-config)
    (smartparens-global-mode 1)))
;; ;; clean-aindent-mode
;; (use-package clean-aindent-mode
;;   :ensure t
;;   :hook prog-mode)
;; clean-aindent-mode
(use-package clean-aindent-mode
  :ensure t
  :hook prog-mode)
;; ;; company config
;; (use-package company
;;   :ensure t
;;   :init (global-company-mode)
;;   :config
;;   (add-hook 'c-mode-common-hook
;;         (lambda ()
;;           (define-key c-mode-base-map  [(tab)] 'company-complete))))
;; company config
(use-package company
  :ensure t
  :init (global-company-mode)
  :config
  (add-hook 'c-mode-common-hook
        (lambda ()
          (define-key c-mode-base-map  [(tab)] 'company-complete))))
;; (use-package company-c-headers
;;   :ensure t
;;   :after company
;;   :config
;;   (add-to-list 'company-backends 'company-c-headers))
(use-package company-c-headers
  :ensure t
  :after company
  :config
  (add-to-list 'company-backends 'company-c-headers))
;; (use-package company-math
;;   :ensure t
;;   :after company
;;   :config
;;   (add-to-list 'company-backends 'company-math-symbols-unicode))
(use-package company-math
  :ensure t
  :after company
  :config
  (add-to-list 'company-backends 'company-math-symbols-unicode))
;; ;; projectile config
;; (use-package projectile
;;   :ensure t
;;   :bind (("C-c p" . projectile-command-map))
;;   :config
;;   (projectile-global-mode)
;;   (setq projectile-completion-system 'helm)
;;   (setq projectile-indexing-method 'alien))
;; projectile config
(use-package projectile
  :ensure t
  :bind (("C-c p" . projectile-command-map))
  :config
  (projectile-global-mode)
  (setq projectile-completion-system 'helm)
  (setq projectile-indexing-method 'alien))
;; ;; magit config
;; (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))
(use-package helm-projectile
  :ensure t
  :config
  (helm-projectile-on))
;;     ;; Close popup when commiting - this stops the commit window
;;     ;; hanging around
;;     ;; From: http://git.io/rPBE0Q
;;     (defadvice git-commit-commit (after delete-window activate)
;;       (delete-window))
;; magit config
(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))
;;     (defadvice git-commit-abort (after delete-window activate)
;;       (delete-window))
    ;; Close popup when commiting - this stops the commit window
    ;; hanging around
    ;; From: http://git.io/rPBE0Q
    (defadvice git-commit-commit (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)))))
    (defadvice git-commit-abort (after delete-window activate)
      (delete-window))
;;   ;; 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
;;    )))
  :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)))))
;; ;; flycheck
;; (use-package flycheck
;;   :ensure t
;;   :init (global-flycheck-mode))
  ;; 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
   )))
;; (use-package flycheck-pos-tip
;;   :ensure t
;;   :after flycheck
;;   :config
;;   (flycheck-pos-tip-mode))
;; flycheck
(use-package flycheck
  :ensure t
  :init (global-flycheck-mode))
;; (use-package flycheck-clang-analyzer
;;   :ensure t
;;   :after flycheck
;;   :config
;;   (flycheck-clang-analyzer-setup))
(use-package flycheck-pos-tip
  :ensure t
  :after flycheck
  :config
  (flycheck-pos-tip-mode))
;; ;; nyan mode
;; (use-package nyan-mode
;;   :if window-system
;;   :ensure t
;;   :config
;;   (nyan-mode))
(use-package flycheck-clang-analyzer
  :ensure t
  :after flycheck
  :config
  (flycheck-clang-analyzer-setup))
;; ;; semantic refactor
;; (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)))
;; nyan mode
(use-package nyan-mode
  :if window-system
  :ensure t
  :config
  (nyan-mode))
;; ;; which-key
;; (use-package which-key
;;   :ensure t
;;   :config
;;   (which-key-mode)
;;   (which-key-setup-side-window-bottom))
;; semantic refactor
(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)))
;; ;; x86 lookup
;; (use-package x86-lookup
;;   :ensure t
;;   :init
;;   (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
;;   :bind ("C-h x" . x86-lookup))
;; which-key
(use-package which-key
  :ensure t
  :config
  (which-key-mode)
  (which-key-setup-side-window-bottom))
;; ;; org-bullets
;; (use-package org-bullets
;;   :ensure t
;;   :config
;;   (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
;; x86 lookup
(use-package x86-lookup
  :ensure t
  :init
  (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
  :bind ("C-h x" . x86-lookup))
;; ;; pdf-tools
;; (use-package pdf-tools
;;   :ensure t
;;   :config
;;   (pdf-tools-install))
;; org-bullets
(use-package org-bullets
  :ensure t
  :config
  (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
;; ;; org
;; (use-package org
;;   :ensure t
;;   :config
;;   (setq org-src-tab-acts-natively t))
;; pdf-tools
(use-package pdf-tools
  :ensure t
  :config
  (pdf-tools-install))
;; ;; tex/AUCTex
;; (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"))
;; org
(use-package org
  :ensure t
  :config
  (setq org-src-tab-acts-natively t))
;; ;; latex-preview-pane
;; (use-package latex-preview-pane
;;   :ensure t
;;   :config
;;   (latex-preview-pane-enable))
;; tex/AUCTex
(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"))
;; ;; plantuml
;; (use-package plantuml-mode
;;   :ensure t
;;   :init
;;   (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar"))
;; latex-preview-pane
(use-package latex-preview-pane
  :ensure t
  :config
  (latex-preview-pane-enable))
;; plantuml
(use-package plantuml-mode
  :ensure t
  :init
  (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar"))
;; (use-package keyfreq
;;   :ensure t
;;   :config
;;   (keyfreq-mode 1)
;;   (keyfreq-autosave-mode 1))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
@@ -350,7 +301,7 @@
 '(ede-project-directories (quote ("c:/Users/joelg/.emacs.d")))
 '(package-selected-packages
   (quote
    (zenburn-theme yasnippet x86-lookup workgroups2 which-key volatile-highlights use-package undo-tree srefactor smartparens racket-mode popwin plantuml-mode pdf-tools org-bullets org nyan-mode magit latex-preview-pane helm-projectile ggtags flycheck-pos-tip flycheck-clang-analyzer company-math company-c-headers clean-aindent-mode auto-package-update auctex))))
    (diminish keyfreq zenburn-theme yasnippet x86-lookup workgroups2 which-key volatile-highlights use-package undo-tree srefactor smartparens racket-mode popwin plantuml-mode pdf-tools org-bullets org nyan-mode magit latex-preview-pane helm-projectile ggtags flycheck-pos-tip flycheck-clang-analyzer company-math company-c-headers clean-aindent-mode auto-package-update auctex))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
snippets/org-mode/elisp-expand
New file
@@ -0,0 +1,8 @@
# -*- mode: snippet -*-
# name: Org emacs-lisp code expand
# key: <el
# group: code snippets
# --
#+BEGIN_SRC emacs-lisp
$0
#+END_SRC
snippets/org-mode/source-code-expand
New file
@@ -0,0 +1,8 @@
# -*- mode: snippet -*-
# name: Source code expand
# key: <s
# group: code snippets
# --
#+BEGIN_SRC $0
#+END_SRC
snippets/org-mode/source-code-expand~
New file
@@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: Org source code expand
# key: <s
# group: code snippets
#+BEGIN_SRC $0
#+END_SRC
# --
tramp
@@ -1,4 +1,4 @@
;; -*- emacs-lisp -*- <18/11/18 19:54:13 c:/Users/joelg/.emacs.d/tramp>
;; -*- emacs-lisp -*- <19/01/05 16:28:26 c:/Users/joelg/.emacs.d/tramp>
;; Tramp connection history.  Don't change this file.
;; You can delete it, forcing Tramp to reapply the checks.
@@ -24,4 +24,28 @@
  ("uid-integer" 1000)
  ("tmpdir" "/plink:joel@192.168.1.113:/tmp")
  ("touch-t" t)
  ("touch" "\\touch")))
  ("touch" "\\touch"))
 ((tramp-file-name "pscp" nil nil "joel" nil nil nil)
  nil)
 ((tramp-file-name "pscp" "joel" nil "192.168.1.113" nil nil nil)
  ("uname" "Linux 4.18.0-11-generic")
  ("locale" "LC_ALL=en_US.utf8")
  ("test" "test")
  ("remote-path"
   ("/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin"))
  ("remote-shell" "/bin/sh")
  ("~" "/home/joel")
  ("file-exists" "test -e")
  ("stat" "env QUOTING_STYLE=locale \\stat")
  ("id" "/usr/bin/id")
  ("gid-integer" 1000)
  ("gid-string" "joel")
  ("perl-file-spec" t)
  ("perl-cwd-realpath" t)
  ("perl" "\\perl")
  ("tmpdir" "/pscp:joel@192.168.1.113:/tmp")
  ("uid-integer" 1000)
  ("readlink" "\\readlink")
  ("case-insensitive" nil)
  ("ls" "/bin/ls --color=never")
  ("ls-quoting-style" t)))