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

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