2012-06-15 16:54:02 +02:00
|
|
|
;; Emacs config
|
2016-10-14 14:03:30 +02:00
|
|
|
|
2012-06-15 16:54:02 +02:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2014-03-08 11:48:35 +01:00
|
|
|
;; Global variables.
|
2012-06-15 16:54:02 +02:00
|
|
|
|
2016-06-09 11:27:24 +02:00
|
|
|
(defvar mickey-minor-mode-map (make-keymap)
|
|
|
|
"Keymap for mickey-minor-mode. See its docstring for more
|
2013-06-11 17:07:01 +02:00
|
|
|
details.")
|
2013-06-07 20:17:26 +02:00
|
|
|
|
2016-06-09 11:27:24 +02:00
|
|
|
(define-minor-mode mickey-minor-mode
|
|
|
|
"The mode's keymap allows for overriding all global and major mode keys.
|
|
|
|
To view where the bindings are set in your config files, lookup
|
|
|
|
`mickey-minor-mode-map' over it. Example:
|
2013-06-11 17:07:01 +02:00
|
|
|
|
2016-06-09 11:27:24 +02:00
|
|
|
(define-key mickey-minor-mode-map (kbd \"C-i\") 'some-function)"
|
2017-05-21 23:49:20 +02:00
|
|
|
t " myckey" 'mickey-minor-mode-map)
|
2016-06-09 11:27:24 +02:00
|
|
|
(add-hook 'minibuffer-setup-hook (lambda () (mickey-minor-mode 0)))
|
2013-06-07 20:17:26 +02:00
|
|
|
|
2013-07-03 14:04:51 +02:00
|
|
|
(defvar emacs-cache-folder "~/.cache/emacs/"
|
|
|
|
"Cache folder is everything we do not want to track along with
|
|
|
|
the configuration files.")
|
2013-06-16 14:27:14 +02:00
|
|
|
(if (not (file-directory-p emacs-cache-folder))
|
2013-06-12 22:56:30 +02:00
|
|
|
(make-directory emacs-cache-folder t))
|
|
|
|
|
2014-02-12 17:37:43 +01:00
|
|
|
;; Load config easily.
|
2014-11-25 08:44:22 +01:00
|
|
|
(add-to-list 'load-path "~/.emacs.d/lisp")
|
2014-02-12 17:37:43 +01:00
|
|
|
|
2013-06-12 23:40:20 +02:00
|
|
|
;; Local plugin folder for quick install. All files in this folder will be
|
2014-03-08 11:48:35 +01:00
|
|
|
;; accessible to Emacs config. This is done to separate the versioned config
|
|
|
|
;; files from the external packages. For instance you can put package.el in
|
|
|
|
;; there for Emacs <24.
|
|
|
|
(add-to-list 'load-path "~/.emacs.d/local")
|
2012-10-12 13:47:10 +02:00
|
|
|
|
2014-02-12 18:31:00 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;; Load main config
|
|
|
|
|
2014-03-08 11:48:35 +01:00
|
|
|
(require 'functions nil t)
|
|
|
|
(require 'main nil t)
|
2016-12-12 13:53:53 +01:00
|
|
|
(require 'visual nil t)
|
2014-02-12 17:48:29 +01:00
|
|
|
|
2014-02-12 18:31:00 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2016-06-08 23:31:42 +02:00
|
|
|
;; Vanilla
|
2014-02-21 15:23:25 +01:00
|
|
|
|
2014-02-23 10:50:56 +01:00
|
|
|
;; Major modes
|
2014-03-20 13:53:57 +01:00
|
|
|
(add-hook 'c++-mode-hook (lambda () (require 'mode-cc)))
|
|
|
|
(add-hook 'c-mode-hook (lambda () (require 'mode-cc)))
|
2014-10-31 16:51:00 +01:00
|
|
|
(add-hook 'sgml-mode-hook (lambda () (require 'mode-sgml)))
|
2016-10-14 14:34:45 +02:00
|
|
|
(add-hook 'js-mode-hook (lambda () (defvaralias 'js-indent-level 'tab-width)))
|
2014-03-20 13:53:57 +01:00
|
|
|
(add-hook 'latex-mode-hook (lambda () (require 'mode-latex)))
|
|
|
|
(add-hook 'makefile-mode-hook (lambda () (require 'mode-makefile)))
|
2014-10-08 11:18:26 +02:00
|
|
|
(add-hook 'nroff-mode-hook (lambda () (require 'mode-nroff)))
|
2014-03-20 13:53:57 +01:00
|
|
|
(add-hook 'perl-mode-hook (lambda () (require 'mode-perl)))
|
|
|
|
(add-hook 'python-mode-hook (lambda () (require 'mode-python)))
|
|
|
|
(add-hook 'sh-mode-hook (lambda () (require 'mode-sh)))
|
|
|
|
(add-hook 'tex-mode-hook (lambda () (require 'mode-tex)))
|
|
|
|
(add-hook 'texinfo-mode-hook (lambda () (require 'mode-texinfo)))
|
2013-01-08 23:57:55 +01:00
|
|
|
|
2014-02-21 15:23:25 +01:00
|
|
|
;; Minor modes
|
|
|
|
(add-hook 'dired-mode-hook (lambda () (require 'mode-dired)))
|
2016-06-09 18:23:04 +02:00
|
|
|
(add-hook 'eshell-load-hook (lambda () (require 'mode-eshell)))
|
2014-02-21 15:23:25 +01:00
|
|
|
(add-hook 'gud-mode-hook (lambda () (require 'mode-gud)))
|
2014-02-12 18:31:00 +01:00
|
|
|
(add-hook 'octave-mode-hook (lambda () (require 'mode-octave)))
|
2014-02-21 15:23:25 +01:00
|
|
|
(add-hook 'org-mode-hook (lambda () (require 'mode-org)))
|
2014-02-12 18:31:00 +01:00
|
|
|
|
2017-05-08 09:00:14 +02:00
|
|
|
;; Bind extensions.
|
|
|
|
(add-to-list 'auto-mode-alist '("rc\\'" . sh-mode)) ; rc shell
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.m\\'" . octave-mode)) ; matlab
|
|
|
|
|
2016-06-08 23:31:42 +02:00
|
|
|
;; Tools
|
|
|
|
(autoload 'pdf-view "tool-pdf" nil t)
|
|
|
|
(autoload 'pdf-compress "tool-pdf" nil t)
|
|
|
|
|
|
|
|
(autoload 'itranslate "tool-itranslate" nil t)
|
|
|
|
(autoload 'itranslate-lines "tool-itranslate" nil t)
|
|
|
|
(autoload 'itranslate-region "tool-itranslate" nil t)
|
|
|
|
|
|
|
|
(require 'smiext "tool-smiext")
|
|
|
|
|
2014-02-12 18:31:00 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2016-06-08 23:31:42 +02:00
|
|
|
;; External
|
2014-02-12 18:31:00 +01:00
|
|
|
|
2014-03-08 11:48:35 +01:00
|
|
|
(when (require 'package nil t)
|
2014-11-06 10:02:35 +01:00
|
|
|
;; (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
|
2014-03-08 11:48:35 +01:00
|
|
|
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
|
2014-03-22 12:16:20 +01:00
|
|
|
(setq package-user-dir (concat emacs-cache-folder "elpa"))
|
2014-03-08 11:48:35 +01:00
|
|
|
(package-initialize))
|
|
|
|
|
2016-06-08 23:31:42 +02:00
|
|
|
;;------------------------------------------------------------------------------
|
|
|
|
;; External modes
|
|
|
|
|
2014-12-16 10:10:41 +01:00
|
|
|
(add-to-list 'load-path "/usr/share/asymptote")
|
|
|
|
(autoload 'asy-mode "asy-mode.el" "Asymptote major mode." t)
|
|
|
|
(autoload 'lasy-mode "asy-mode.el" "Hybrid Asymptote/Latex major mode." t)
|
|
|
|
(autoload 'asy-insinuate-latex "asy-mode.el" "Asymptote insinuate LaTeX." t)
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.asy$" . asy-mode))
|
|
|
|
|
2015-11-02 20:10:49 +01:00
|
|
|
(autoload 'maxima-mode "maxima" "Maxima mode" t)
|
|
|
|
(autoload 'maxima "maxima" "Maxima interaction" t)
|
|
|
|
(setq auto-mode-alist (cons '("\\.mac" . maxima-mode) auto-mode-alist))
|
|
|
|
|
2017-05-19 14:37:29 +02:00
|
|
|
(add-to-list 'package-selected-packages 'bbcode-mode)
|
2014-09-11 22:33:39 +02:00
|
|
|
(load-external "\\.bbcode\\'" 'bbcode-mode)
|
|
|
|
(add-hook 'bbcode-mode-hook (lambda () (require 'mode-bbcode)))
|
|
|
|
|
2014-03-08 15:58:29 +01:00
|
|
|
(load-external "\\.l\\'" 'flex-mode nil 'c-mode)
|
|
|
|
(load-external "\\.yy?\\'" 'bison-mode nil 'c-mode)
|
|
|
|
|
|
|
|
(load-external "\\.vert\\'\\|\\.frag\\'\\|\\.glsl\\'" 'glsl-mode nil 'c-mode)
|
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'go-mode)
|
|
|
|
(add-to-list 'package-selected-packages 'go-eldoc)
|
|
|
|
(add-to-list 'package-selected-packages 'go-guru)
|
|
|
|
(add-to-list 'package-selected-packages 'go-rename)
|
|
|
|
(add-to-list 'package-selected-packages 'helm-go-package)
|
|
|
|
(add-to-list 'package-selected-packages 'company-go)
|
2014-03-08 15:58:29 +01:00
|
|
|
(load-external "\\.go\\'" 'go-mode)
|
2014-10-23 16:44:23 +02:00
|
|
|
(add-hook 'go-mode-hook (lambda () (require 'mode-go)))
|
2014-02-21 15:23:25 +01:00
|
|
|
|
2014-03-10 11:03:48 +01:00
|
|
|
(load-external "\\.dot\\'" 'graphviz-dot-mode)
|
2014-02-23 10:50:56 +01:00
|
|
|
(add-hook 'graphviz-dot-mode-hook (lambda () (require 'mode-dot)))
|
2014-02-13 16:30:05 +01:00
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'lua-mode)
|
2014-03-08 15:58:29 +01:00
|
|
|
(load-external "\\.lua\\'" 'lua-mode nil 'sh-mode)
|
2014-03-25 09:23:12 +01:00
|
|
|
(add-hook 'lua-mode-hook (lambda () (require 'mode-lua)))
|
2014-02-21 15:23:25 +01:00
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'markdown-mode)
|
2014-03-08 15:58:29 +01:00
|
|
|
(load-external "\\.md\\'\\|\\.markdown\\'" 'markdown-mode)
|
2014-02-23 10:50:56 +01:00
|
|
|
;; If we need more option, add it to a dedicated file.
|
2017-01-28 11:29:33 +01:00
|
|
|
(add-hook
|
|
|
|
'markdown-mode-hook
|
|
|
|
(lambda ()
|
|
|
|
(set-face-attribute 'markdown-header-face-1 nil :inherit 'info-title-1)
|
|
|
|
(set-face-attribute 'markdown-header-face-2 nil :inherit 'info-title-2)
|
|
|
|
(set-face-attribute 'markdown-header-face-3 nil :inherit 'info-title-3)
|
|
|
|
(set-face-attribute 'markdown-header-face-4 nil :inherit 'info-title-4)
|
2017-05-24 23:02:44 +02:00
|
|
|
(local-set-key "\M-'" 'markdown-blockquote-region)
|
2017-01-28 11:29:33 +01:00
|
|
|
(set (make-local-variable 'paragraph-start) "
|
2014-02-23 10:50:56 +01:00
|
|
|
")))
|
2014-02-21 15:23:25 +01:00
|
|
|
|
2017-05-20 15:36:29 +02:00
|
|
|
(add-to-list 'package-selected-packages 'mediawiki)
|
2014-03-10 10:37:43 +01:00
|
|
|
(load-external "\\.wiki\\'" 'mediawiki 'mediawiki-mode)
|
2014-02-23 10:50:56 +01:00
|
|
|
(add-hook 'mediawiki-mode-hook (lambda () (require 'mode-mediawiki)))
|
2014-02-13 16:30:05 +01:00
|
|
|
|
2014-02-21 15:23:25 +01:00
|
|
|
;; .po support. This mode has no hooks.
|
2014-03-08 15:58:29 +01:00
|
|
|
(load-external "\\.po\\'\\|\\.po\\." 'po-mode)
|
2014-02-23 10:50:56 +01:00
|
|
|
(when (fboundp 'po-find-file-coding-system)
|
2014-02-21 15:23:25 +01:00
|
|
|
(modify-coding-system-alist 'file "\\.po\\'\\|\\.po\\." 'po-find-file-coding-system))
|
|
|
|
|
2016-10-11 17:33:36 +02:00
|
|
|
(add-to-list 'package-selected-packages 'fish-mode)
|
|
|
|
|
2017-05-16 21:02:51 +02:00
|
|
|
(add-to-list 'package-selected-packages 'latex-math-preview)
|
|
|
|
(add-to-list 'package-selected-packages 'latex-pretty-symbols)
|
|
|
|
(require 'latex-pretty-symbols nil t)
|
|
|
|
|
2016-06-08 23:31:42 +02:00
|
|
|
;;------------------------------------------------------------------------------
|
|
|
|
;; External tools
|
2014-09-16 09:02:33 +02:00
|
|
|
|
2017-05-14 06:37:23 +02:00
|
|
|
;; Guess indentation rules.
|
|
|
|
(require 'dtrt-indent nil t)
|
2014-02-22 19:13:39 +01:00
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'multiple-cursors)
|
|
|
|
(add-to-list 'package-selected-packages 'phi-search)
|
2014-03-08 11:48:35 +01:00
|
|
|
(when (require 'multiple-cursors nil t)
|
|
|
|
(setq mc/list-file (concat emacs-cache-folder "mc-lists.el"))
|
|
|
|
;; Load the file at the new location.
|
|
|
|
(load mc/list-file t)
|
|
|
|
(global-unset-key (kbd "C-<down-mouse-1>"))
|
2016-06-09 11:27:24 +02:00
|
|
|
(define-key mickey-minor-mode-map (kbd "C-<mouse-1>") 'mc/add-cursor-on-click)
|
|
|
|
(define-key mickey-minor-mode-map (kbd "C-x M-r") 'mc/edit-lines)
|
|
|
|
(define-key mickey-minor-mode-map (kbd "C-x M-m") 'mc/mark-more-like-this-extended)
|
|
|
|
(define-key mickey-minor-mode-map (kbd "C-x M-l") 'mc/mark-all-like-this-dwim)
|
2015-10-12 12:06:14 +02:00
|
|
|
;; Search compatible with mc.
|
2016-06-03 12:14:59 +02:00
|
|
|
(require 'phi-search nil t))
|
2014-03-08 11:48:35 +01:00
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'helm)
|
|
|
|
(add-to-list 'package-selected-packages 'helm-descbinds)
|
|
|
|
(add-to-list 'package-selected-packages 'helm-ls-git)
|
2016-10-07 06:18:57 +02:00
|
|
|
;; (add-to-list 'package-selected-packages 'helm-pt) ; No need?
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'wgrep-helm)
|
|
|
|
(add-to-list 'package-selected-packages 'wgrep-pt)
|
2016-06-08 23:37:21 +02:00
|
|
|
(when (require 'helm-config nil t)
|
2016-06-10 13:53:40 +02:00
|
|
|
(require 'tool-helm))
|
2016-06-08 23:37:21 +02:00
|
|
|
|
2015-05-11 19:38:16 +02:00
|
|
|
(when (require 'dired+ nil t)
|
|
|
|
(toggle-diredp-find-file-reuse-dir 1))
|
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'company)
|
|
|
|
(add-to-list 'package-selected-packages 'helm-company)
|
2016-10-06 14:38:30 +02:00
|
|
|
(when (require 'company nil t)
|
|
|
|
(setq company-idle-delay nil))
|
2016-01-27 08:55:19 +01:00
|
|
|
|
2016-10-06 17:33:55 +02:00
|
|
|
(add-to-list 'package-selected-packages 'magit)
|
2016-06-09 14:42:19 +02:00
|
|
|
(when (require 'magit nil t)
|
2017-05-08 15:52:36 +02:00
|
|
|
(set-face-foreground 'magit-branch-remote "orange red")
|
2016-12-23 19:38:39 +01:00
|
|
|
(setq git-commit-summary-max-length fill-column)
|
2016-06-11 09:11:47 +02:00
|
|
|
(setq magit-diff-refine-hunk 'all)
|
2016-06-09 14:42:19 +02:00
|
|
|
(global-set-key (kbd "C-x g") 'magit-status))
|
|
|
|
|
2017-05-22 23:57:52 +02:00
|
|
|
;; (add-to-list 'package-selected-packages 'god-mode)
|
|
|
|
;; (when (require 'god-mode nil t)
|
|
|
|
;; (require 'tool-god))
|
|
|
|
|
|
|
|
(add-to-list 'package-selected-packages 'evil-mode)
|
|
|
|
(add-to-list 'package-selected-packages 'evil-leader)
|
|
|
|
(add-to-list 'package-selected-packages 'evil-magit)
|
|
|
|
(add-to-list 'package-selected-packages 'linum-relative)
|
|
|
|
(when (require 'evil nil t)
|
|
|
|
(require 'tool-evil))
|
2017-05-08 15:52:36 +02:00
|
|
|
|
2014-02-12 18:31:00 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2016-10-14 14:03:30 +02:00
|
|
|
;; End of config
|
|
|
|
|
2017-05-21 23:49:20 +02:00
|
|
|
;; Don't let `customize' clutter my config.
|
2017-05-22 23:57:52 +02:00
|
|
|
;; This will prompt "File exists, but cannot be read".
|
2017-05-21 23:49:20 +02:00
|
|
|
(setq custom-file "/dev/null")
|
|
|
|
|
2013-06-11 17:07:01 +02:00
|
|
|
;; We need to put it at the end to make sure it doesn't get overriden by other
|
|
|
|
;; minor modes.
|
2016-06-09 11:27:24 +02:00
|
|
|
(mickey-minor-mode 1)
|
2013-02-04 21:32:40 +01:00
|
|
|
|
2014-03-18 16:24:05 +01:00
|
|
|
;; Local hook. You can use it to set system specific variables, such as the
|
|
|
|
;; external web browser or pdf viewer. You can also backport feature for old
|
|
|
|
;; Emacs. For instance:
|
|
|
|
; (setq pdf-viewer "evince")
|
|
|
|
; (setq pdf-viewer-args nil)
|
2016-10-05 06:56:16 +02:00
|
|
|
;
|
2017-05-22 16:24:25 +02:00
|
|
|
; (dolist (hook '(asm-mode-hook awk-mode-hook c++-mode-hook c-mode-hook
|
|
|
|
; emacs-lisp-mode-hook lisp-mode-hook lua-mode-hook
|
|
|
|
; makefile-mode-hook octave-mode-hook perl-mode-hook
|
|
|
|
; python-mode-hook scheme-mode-hook sh-mode-hook))
|
|
|
|
; (add-hook hook (lambda () (run-hooks 'prog-mode-hook))))
|
2016-10-05 06:56:16 +02:00
|
|
|
;
|
|
|
|
; (defun comment-line... ;; From emacs 25
|
|
|
|
;
|
|
|
|
; (transient-mark-mode 1)
|
|
|
|
;
|
2016-10-08 05:10:11 +02:00
|
|
|
; ;; Fix slow startup when network is slow. Most visible with Helm and Magit with Emacs <25.
|
2016-10-05 06:56:16 +02:00
|
|
|
; (setq tramp-ssh-controlmaster-options "-o ControlMaster=auto -o ControlPath='tramp.%%C' -o ControlPersist=no")
|
|
|
|
|
2014-03-12 10:36:37 +01:00
|
|
|
(load "local" t t)
|