summaryrefslogtreecommitdiffstats
path: root/emacs/.emacs.d/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/.emacs.d/init.el')
-rw-r--r--emacs/.emacs.d/init.el368
1 files changed, 243 insertions, 125 deletions
diff --git a/emacs/.emacs.d/init.el b/emacs/.emacs.d/init.el
index cc9b7dc..3a9b01b 100644
--- a/emacs/.emacs.d/init.el
+++ b/emacs/.emacs.d/init.el
@@ -15,7 +15,7 @@
(scroll-bar-mode (quote right))))
(setq-default
- gc-cons-threshold 10000000
+ gc-cons-threshold 100000000
backup-by-copying t
backup-directory-alist `((".*" . ,temporary-file-directory))
auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
@@ -23,47 +23,124 @@
browse-url-generic-program (executable-find "sensible-browser")
browse-url-browser-function 'browse-url-generic)
+(add-hook 'dired-mode-hook (lambda () (dired-hide-details-mode)))
+
+;;; Code formatting
+
+(require 'clang-format)
+
+(defun get-clang-format-option (config-str field is-num)
+ "Retrieve a config option from a clang-format config."
+ (cond (is-num
+ (let ((primary-match (s-match (concat "^" field ":[ \t]*[0-9]+") config-str)))
+ (if primary-match
+ (string-to-number (car (s-match "[0-9]+" (car primary-match))))
+ 0)))
+ (t
+ (let ((primary-match (s-match (concat "^" field ":[ \t]*[A-Za-z]+") config-str)))
+ (if primary-match
+ (car (s-match "[A-Za-z]+$" (car primary-match)))
+ "")))))
+
+(defun clang-format-c-mode-hook ()
+ "Load C family configuration from clang-format configuration."
+ (let* ((clang-format-config
+ (shell-command-to-string "clang-format -dump-config"))
+ (c-offset (get-clang-format-option clang-format-config "IndentWidth" t))
+ (tabs-str (get-clang-format-option clang-format-config "UseTab" nil))
+ (base-style
+ (get-clang-format-option clang-format-config "BasedOnStyle" nil)))
+ (progn
+ (if (> c-offset 0)
+ (setq-local c-basic-offset c-offset)
+ (if (not (equal "" base-style))
+ (cond ((or (equal "LLVM" base-style)
+ (equal "Google" base-style)
+ (equal "Chromium" base-style)
+ (equal "Mozilla" base-style))
+ (setq-local c-basic-offset 2))
+ ((equal "WebKit" base-style)
+ (setq-local c-basic-offset 4)))))
+ (if (not (equal "" tabs-str))
+ (if (not (string-equal "Never" tabs-str))
+ (setq-local indent-tabs-mode t)
+ (setq-local indent-tabs-mode nil))
+ (if (not (equal "" base-style))
+ (cond ((or (equal "LLVM" base-style)
+ (equal "Google" base-style)
+ (equal "Chromium" base-style)
+ (equal "Mozilla" base-style)
+ (equal "WebKit" base-style))
+ (setq-local indent-tabs-mode nil))))))))
+
;;; Packages
(require 'package)
-(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
+(add-to-list 'package-archives '("melpa" . "https://stable.melpa.org/packages/"))
(package-initialize)
(unless (package-installed-p 'use-package)
(progn
(package-refresh-contents)
(package-install 'use-package)))
-(require 'use-package)
-
(setq use-package-always-ensure t)
-(use-package clang-format :commands (c-mode c++-mode))
+
+;(use-package ansi-color :commands compile :after (ivy) :config (counsel-mode))
+
+(use-package clang-format
+ :after (s)
+ :commands (clang-format-buffer clang-format-region)
+ :hook (c-mode-common . clang-format-c-mode-hook))
+
+(use-package clang-format :commands (clang-format-buffer clang-format-region))
(use-package counsel :after (ivy) :config (counsel-mode))
(use-package counsel-gtags :commands ggtags-mode)
(use-package counsel-projectile :after (counsel projectile))
+(use-package diff-hl)
(use-package diminish)
-(use-package dired-rainbow :after (dired+))
+(use-package dpkg-dev-el :commands debian-changelog-mode)
(use-package flyspell :commands flyspell-mode)
(use-package flyspell-correct-ivy :after (flyspell ivy) :commands flyspell-mode)
(use-package ggtags :commands ggtags-mode)
+(use-package glsl-mode :commands glsl-mode)
(use-package ivy :config (ivy-mode))
-(use-package magit :commands magit-status :bind ("C-c m" . magit-status) :config (define-key magit-mode-map (kbd "C-<tab>") nil))
+(use-package json-mode :commands json-mode)
+(use-package llvm-mode :commands llvm-mode)
+
+;; (use-package lsp-mode
+;; :config
+;; (progn
+;; (setq lsp-clients-clangd-args '("-j=4" "-background-index" "-log=error"))
+;; (lsp-register-client
+;; (make-lsp-client :new-connection (lsp-tramp-connection "clangd")
+;; :major-modes '(c-mode c++-mode)
+;; :remote? t
+;; :server-id 'clangd-remote))))
+
+(use-package magit
+ :commands magit-status
+ :after (diff-hl)
+ :bind ("C-c m" . magit-status)
+ :config (define-key magit-mode-map (kbd "C-<tab>") nil))
+
(use-package markdown-mode :commands markdown-mode)
+(use-package meson-mode :commands meson-mode)
(use-package pdf-tools :magic ("%PDF" . pdf-view-mode) :config (pdf-tools-install))
-(use-package projectile :config (projectile-global-mode))
+(use-package prettier :commands prettier-prettify)
+(use-package projectile :config (projectile-mode))
+(use-package quack :commands scheme-mode)
(use-package rainbow-delimiters :commands prog-mode)
-(use-package smart-tabs-mode :commands (c-mode c++-mode))
(use-package spaceline)
(use-package swiper :commands swiper)
-(use-package ttl-mode :commands ttl-mode)
(use-package tramp)
+(use-package yaml-mode :commands yaml-mode)
(require 'spaceline-config)
+(require 'turtle-mode "turtle-mode/turtle-mode.el")
;;; Basic editor configuration
(defalias 'yes-or-no-p 'y-or-n-p)
-(delete-selection-mode 1)
-(winner-mode 1)
(setq-default tab-width 4)
(setq-default indent-tabs-mode nil)
(setq-default scroll-margin 3)
@@ -77,7 +154,9 @@
(diminish 'counsel-mode "")
(diminish 'flyspell-mode "✓")
(diminish 'ggtags-mode "☚")
+(diminish 'eldoc-mode "?")
(diminish 'ivy-mode "")
+
(setq spaceline-minor-modes-separator " ")
(spaceline-define-segment version-control
@@ -99,9 +178,20 @@
(spaceline-define-segment buffer-position
"Buffer position in percent"
- (format "%3d%%%%" (/ (* 100 (- (line-number-at-pos) 1))
- (max 1 (count-lines (point-min) (point-max))))))
+ (format "%3d%%%% " (/ (* 100 (- (line-number-at-pos) 1))
+ (max 1 (count-lines (point-min) (point-max))))))
+(spaceline-define-segment line-column
+ "The current line and column numbers."
+ (if (eq major-mode 'pdf-view-mode)
+ ;; Show page number and count for PDF documents
+ (concat (number-to-string (pdf-view-current-page))
+ "/"
+ (number-to-string (pdf-cache-number-of-pages)))
+ mode-line-position
+ "%l :%2c"))
+
+(add-hook 'magit-pre-refresh-hook 'diff-hl-magit-pre-refresh)
(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)
;;; Variables
@@ -111,67 +201,69 @@
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
+ '(Man-switches "--nj")
+ '(auth-source-save-behavior nil)
'(auto-revert-interval 1)
'(backup-by-copying t)
- '(backup-directory-alist (\` ((".*" \, temporary-file-directory))))
+ '(backup-directory-alist `((".*" \, temporary-file-directory)))
+ '(browse-url-browser-function 'browse-url-firefox)
'(browse-url-firefox-new-window-is-tab t)
+ '(browse-url-generic-program "firefox")
'(column-number-mode t)
+ '(compilation-error-screen-columns nil)
'(compilation-scroll-output t)
- '(cursor-in-non-selected-windows (quote hollow))
- '(custom-enabled-themes (quote (drobillized)))
+ '(css-indent-offset 2)
+ '(cursor-in-non-selected-windows 'hollow)
+ '(custom-enabled-themes '(drobillized))
'(custom-safe-themes
- (quote
- ("b3f9e6023ab4297a337987e6be4ff3f2abe07b562fdc644ca68f9779c3d6c3f4" default)))
+ '("6882409e05d462b9dd7cc649c30f9b5784e20d3728fbeab13f3f7a7c31e81023" default))
'(delete-old-versions t)
+ '(delete-selection-mode t)
'(dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.\\|^\\..*$")
'(diredp-hide-details-initially-flag t)
'(diredp-wrap-around-flag nil)
'(erc-autojoin-channels-alist
- (quote
- ((".*\\.freenode.net" "#ardour" "#ardour-dev" "#ingen" "#lv2" "#moddevices" "#lad"))))
+ '((".*\\.oftc.net" "#mesonbuild")
+ (".*\\.libera.chat" "#ardour-dev" "#ingen" "#lv2" "#lobsters")))
'(erc-autojoin-mode t)
- '(erc-insert-timestamp-function (quote ks-timestamp) t)
- '(erc-join-buffer (quote bury))
+ '(erc-insert-timestamp-function 'ks-timestamp t)
+ '(erc-join-buffer 'bury)
'(erc-log-channels-directory "~/.erc/logs")
'(erc-log-insert-log-on-open t)
'(erc-log-mode t)
'(erc-mode-hook
- (quote
- (erc-munge-invisibility-spec erc-move-to-prompt-setup pcomplete-erc-setup erc-button-setup erc-imenu-setup toggle-word-wrap)))
+ '(erc-munge-invisibility-spec erc-move-to-prompt-setup pcomplete-erc-setup erc-button-setup erc-imenu-setup toggle-word-wrap))
'(erc-mode-line-format "%t")
'(erc-modules
- (quote
- (autojoin button completion irccontrols list match menu move-to-prompt netsplit networks noncommands readonly ring stamp track)))
+ '(autojoin button completion irccontrols list log match menu move-to-prompt netsplit networks noncommands readonly ring stamp track))
+ '(erc-nick-uniquifier "")
'(erc-prompt ">")
- '(erc-stamp-mode t)
- '(erc-timestamp-format "%H:%M ")
- '(erc-timestamp-only-if-changed-flag t)
- '(erc-timestamp-use-align-to nil)
+ '(erc-server "irc.libera.chat")
'(erc-track-exclude-server-buffer t)
'(erc-track-exclude-types
- (quote
- ("JOIN" "NICK" "PART" "QUIT" "MODE" "333" "353" "324" "329" "332" "477")))
+ '("JOIN" "NICK" "PART" "QUIT" "MODE" "333" "353" "324" "329" "332" "477"))
+ '(erc-try-new-nick-p nil)
'(fill-column 79)
'(font-lock-maximum-decoration t)
- '(frame-background-mode (quote dark))
- '(fringe-mode (quote (nil . 0)) nil (fringe))
+ '(frame-background-mode 'dark)
+ '(frame-inhibit-implied-resize t)
+ '(fringe-mode '(nil . 0) nil (fringe))
'(gc-cons-threshold 10000000)
'(global-diff-hl-mode t)
'(grep-find-command
"find . -type f -not -name \"*.svn-base\" -print0 | xargs -0 grep -I -n -s -F ")
'(indicate-empty-lines t)
'(inhibit-startup-screen t)
+ '(initial-major-mode 'fundamental-mode)
'(ivy-magic-tilde nil)
'(jabber-account-list
- (quote
- (("david.e.robillard@gmail.com"
+ '(("david.e.robillard@gmail.com"
(:network-server . "talk.google.com")
(:port . 5223)
- (:connection-type . ssl)))))
+ (:connection-type . ssl))))
'(jabber-chat-buffer-show-avatar nil)
'(jabber-chat-header-line-format
- (quote
- (""
+ '(""
(:eval
(jabber-jid-displayname jabber-chatting-with))
" "
@@ -183,59 +275,66 @@
(or
(cdr
(assoc
- (get buddy
- (quote show))
+ (get buddy 'show)
jabber-presence-strings))
- (get buddy
- (quote show)))
- (quote face)
+ (get buddy 'show))
+ 'face
(or
(cdr
(assoc
- (get buddy
- (quote show))
+ (get buddy 'show)
jabber-presence-faces))
- (quote jabber-roster-user-online)))))
+ 'jabber-roster-user-online))))
" "
(:eval
(jabber-fix-status
(get
(jabber-jid-symbol jabber-chatting-with)
- (quote status))))
- " " jabber-events-message " " jabber-chatstates-message)))
+ 'status)))
+ " " jabber-events-message " " jabber-chatstates-message))
'(jabber-roster-line-format " %c %-25n %u %-8s %S")
+ '(js-indent-level 2)
'(jshint-mode-node-program "nodejs")
'(magit-auto-revert-mode nil)
- '(magit-diff-refine-hunk (quote all))
+ '(magit-commit-show-diff nil)
+ '(magit-diff-refine-hunk 'all)
'(menu-bar-mode nil)
'(ns-use-srgb-colorspace nil)
'(package-selected-packages
- (quote
- (apache-mode auctex clang-format cmake-mode counsel-gtags counsel-projectile diff-hl diminish dired-rainbow dockerfile-mode flyspell-correct-ivy ggtags git-gutter-fringe glsl-mode ivy jinja2-mode json-mode llvm-mode magit markdown-mode meson-mode n3-mode pdf-tools pkgbuild-mode projectile rainbow-delimiters rust-mode smart-tabs-mode spaceline swift-mode ttl-mode use-package yaml-mode)))
- '(pdf-view-midnight-colors (quote ("#C3D1D1" . "#141414")))
- '(powerline-default-separator (quote arrow-fade))
- '(projectile-completion-system (quote ivy))
+ '(debian-el dpkg-dev-el scss-mode typescript-mode prettier vue-mode python-black quack vterm ace-window cython-mode groovy-mode jenkins qml-mode ninja-mode bison-mode csv-mode apache-mode auctex clang-format cmake-mode counsel-gtags counsel-projectile diff-hl diminish dired-rainbow dockerfile-mode flyspell-correct-ivy ggtags git-gutter-fringe glsl-mode ivy jinja2-mode json-mode llvm-mode magit markdown-mode meson-mode n3-mode pdf-tools pkgbuild-mode projectile rainbow-delimiters rust-mode spaceline swift-mode ttl-mode use-package yaml-mode))
+ '(pdf-view-midnight-colors '("#C3D1D1" . "#141414"))
+ '(powerline-default-separator nil)
+ '(projectile-completion-system 'ivy)
'(projectile-enable-caching t)
- '(projectile-mode-line nil)
'(projectile-mode-line-function
(lambda nil
- (format "%s:%s" projectile-mode-line-prefix
+ (format "%s%s" projectile-mode-line-prefix
(or
(projectile-project-name)
"-"))))
- '(projectile-mode-line-prefix "P")
+ '(projectile-mode-line-prefix "")
'(projectile-use-git-grep t)
+ '(python-black-extra-args '("-l 79"))
'(quack-pretty-lambda-p t)
- '(quack-run-scheme-always-prompts-p nil)
+ '(quack-run-scheme-always-prompts-p t)
'(savehist-mode t)
+ '(scroll-bar-mode nil)
'(scroll-conservatively 5)
- '(send-mail-function (quote sendmail-send-it))
+ '(send-mail-function 'sendmail-send-it)
'(show-paren-mode t)
'(speedbar-use-images nil)
- '(split-window-preferred-function (quote split-window-horizontally))
+ '(split-window-preferred-function 'split-window-horizontally)
'(tool-bar-mode nil)
+ '(ttl-electric-punctuation t)
+ '(typescript-indent-level 2)
'(version-control t)
- '(visible-bell nil))
+ '(visible-bell nil)
+ '(window-divider-default-bottom-width 1)
+ '(window-divider-default-right-width 1)
+ '(window-divider-mode t))
+
+(if (eq system-type 'windows-nt)
+ (setq diff-command "C:/Program Files/Git/usr/bin/diff.exe"))
(setq ring-bell-function
(lambda ()
@@ -252,7 +351,7 @@
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
- )
+ '(default ((t (:background "#141414" :foreground "#C3D1D1" :height 140 :family "DejaVu Sans Mono")))))
;;; Windows
@@ -261,7 +360,6 @@
(cond ((and (string-match "compilation" (buffer-name buffer))
(string-match "finished" string))
(bury-buffer "*compilation*")
- (winner-undo)
(message "Build successful."))
(t
(message "Compilation exited abnormally: %s" string))))
@@ -287,7 +385,8 @@
(setq split-height-threshold nil)
(setq split-width-threshold 0)
-(setq compilation-finish-functions 'compile-autoclose)
+
+(add-hook 'compilation-finish-functions #'compile-autoclose)
;; Remove slow Maven regexp that makes the compilation buffer clunky
(setq compilation-error-regexp-alist
@@ -300,36 +399,40 @@
;;; Key bindings
+(windmove-default-keybindings)
+
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
-(global-set-key (kbd "C-<left>") 'previous-buffer)
-(global-set-key (kbd "C-<right>") 'next-buffer)
-(global-set-key (kbd "C-<tab>") 'other-window)
-(global-set-key (kbd "C-b") 'compile)
-(global-set-key (kbd "C-m") 'newline-and-indent)
-(global-set-key (kbd "C-n") 'next-error)
-(global-set-key (kbd "C-p") 'previous-error)
-(global-set-key (kbd "C-s") 'swiper)
-
-(global-set-key (kbd "C-c <") 'first-error)
-(global-set-key (kbd "C-c =") 'set-variable)
-(global-set-key (kbd "C-c I") 'clang-format-region)
-(global-set-key (kbd "C-c R") 'replace-regexp)
-(global-set-key (kbd "C-c a") 'align)
-(global-set-key (kbd "C-c b") 'magit-blame)
-(global-set-key (kbd "C-c c") 'comment-region)
-(global-set-key (kbd "C-c d") 'svn-status-show-svn-diff)
-(global-set-key (kbd "C-c e") 'erc-track-switch-buffer)
-(global-set-key (kbd "C-c f") 'ff-find-other-file)
-(global-set-key (kbd "C-c g") 'grep-find)
-(global-set-key (kbd "C-c h") 'mark-defun)
-(global-set-key (kbd "C-c i") 'clang-format-buffer)
-(global-set-key (kbd "C-c m") 'magit-status)
-(global-set-key (kbd "C-c r") 'replace-string)
-(global-set-key (kbd "C-c s") 'sort-lines)
-(global-set-key (kbd "C-c t") 'toggle-truncate-lines)
-(global-set-key (kbd "C-c u") 'uncomment-region)
-(global-set-key (kbd "C-c w") 'rotate-windows)
+(global-set-key (kbd "C-<left>") 'previous-buffer)
+(global-set-key (kbd "C-<right>") 'next-buffer)
+(global-set-key (kbd "C-<tab>") 'next-window-any-frame)
+(global-set-key (kbd "C-<iso-lefttab>") 'previous-window-any-frame)
+(global-set-key (kbd "C-b") 'compile)
+(global-set-key (kbd "C-m") 'newline-and-indent)
+(global-set-key (kbd "C-n") 'next-error)
+(global-set-key (kbd "C-p") 'previous-error)
+(global-set-key (kbd "C-s") 'swiper)
+(global-set-key (kbd "C-c <") 'first-error)
+(global-set-key (kbd "C-c =") 'set-variable)
+(global-set-key (kbd "C-c I") 'clang-format-region)
+(global-set-key (kbd "C-c P") 'prettier-prettify)
+(global-set-key (kbd "C-c R") 'replace-regexp)
+(global-set-key (kbd "C-c a") 'align)
+(global-set-key (kbd "C-c b") 'magit-blame)
+(global-set-key (kbd "C-c c") 'comment-region)
+(global-set-key (kbd "C-c d") 'svn-status-show-svn-diff)
+(global-set-key (kbd "C-c e") 'erc-track-switch-buffer)
+(global-set-key (kbd "C-c f") 'ff-find-other-file)
+(global-set-key (kbd "C-c g") 'grep-find)
+(global-set-key (kbd "C-c h") 'mark-defun)
+(global-set-key (kbd "C-c i") 'clang-format-buffer)
+(global-set-key (kbd "C-c m") 'magit-status)
+(global-set-key (kbd "C-c o") 'ace-window)
+(global-set-key (kbd "C-c r") 'replace-string)
+(global-set-key (kbd "C-c s") 'sort-lines)
+(global-set-key (kbd "C-c t") 'toggle-truncate-lines)
+(global-set-key (kbd "C-c u") 'uncomment-region)
+(global-set-key (kbd "C-c w") 'rotate-windows)
;;; File modes
@@ -398,16 +501,13 @@
(defun my-c-mode-common-hook ()
"C mode for people with taste."
- (require 'smart-tabs-mode)
(auto-fill-mode 1)
(abbrev-mode -1)
(set-fill-column 79)
- (smart-tabs-mode-enable)
(setq tab-width 4)
(setq indent-tabs-mode t)
(setq truncate-lines t)
(setq show-trailing-whitespace t)
- (smart-tabs-advice c-indent-line c-basic-offset)
(c-set-style "drobilla"))
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
@@ -419,7 +519,21 @@
(lambda ()
(setq tab-width 4)
(setq indent-tabs-mode nil)
- (setq show-trailing-whitespace)))
+ (setq show-trailing-whitespace t)))
+
+;; Turtle
+
+(add-hook 'turtle-mode-hook
+ (lambda ()
+ (setq tab-width 4)
+ (setq indent-tabs-mode t)
+ (setq show-trailing-whitespace t)))
+
+;; Dired
+
+(add-hook 'dired-mode-hook
+ (lambda ()
+ (dired-hide-details-mode)))
;; IRC
@@ -446,36 +560,40 @@
(add-hook 'doc-view-mode-hook 'my-doc-view-hook)
(add-hook 'pdf-view-mode-hook 'my-doc-view-hook)
-(spaceline-define-segment line-column
- "The current line and column numbers."
- (if (eq major-mode 'pdf-view-mode)
- ;; Show page number and count for PDF documents
- (concat (number-to-string (pdf-view-current-page))
- "/"
- (number-to-string (pdf-cache-number-of-pages)))
- mode-line-position
- "%l:%c"))
+;; Shell
+
+(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
+(add-to-list 'comint-output-filter-functions 'ansi-color-process-output)
+
+;; Compilation
+
+(defun colorize-compilation-buffer ()
+ (let ((inhibit-read-only t))
+ (ansi-color-apply-on-region (point-min) (point-max))))
+
+;; (add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
;; Associations
-(add-to-list 'auto-mode-alist '("\\.pl\\'" . prolog-mode))
-(add-to-list 'auto-mode-alist '("\\.n3" . ttl-mode))
-(add-to-list 'auto-mode-alist '("\\.ttl" . ttl-mode))
-(add-to-list 'auto-mode-alist '("\\.owl" . ttl-mode))
-(add-to-list 'auto-mode-alist '("\\.ll" . llvm-mode))
-(add-to-list 'auto-mode-alist '("\\.md" . markdown-mode))
-(add-to-list 'auto-mode-alist '("\\.pdf" . pdf-view-mode))
-(add-to-list 'auto-mode-alist '("\\.gyp" . python-mode))
-(add-to-list 'auto-mode-alist '("\\.gypi" . python-mode))
-(add-to-list 'auto-mode-alist '("\\.jsonld" . json-mode))
-
-;;; Projectile
-
-(defun my-projectile-mode-line ()
- "Report project name in the modeline."
- (format "%s[%s%s]"
- projectile-mode-line-prefix
- (or (projectile-project-name) "-")))
+(add-to-list 'auto-mode-alist '("\\.ipp\\'" . c++-mode))
+(add-to-list 'auto-mode-alist '("\\.pl\\'" . prolog-mode))
+(add-to-list 'auto-mode-alist '("\\.n3\\'" . turtle-mode))
+(add-to-list 'auto-mode-alist '("\\.ttl\\'" . turtle-mode))
+(add-to-list 'auto-mode-alist '("\\.owl\\'" . turtle-mode))
+(add-to-list 'auto-mode-alist '("\\.ll\\'" . llvm-mode))
+(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
+(add-to-list 'auto-mode-alist '("\\.pdf\\'" . pdf-view-mode))
+(add-to-list 'auto-mode-alist '("\\.gyp\\'" . python-mode))
+(add-to-list 'auto-mode-alist '("\\.gypi\\'" . python-mode))
+(add-to-list 'auto-mode-alist '("\\.jsonld\\'" . json-mode))
+(add-to-list 'auto-mode-alist '("\\.tesc\\'" . glsl-mode))
+(add-to-list 'auto-mode-alist '("\\.tese\\'" . glsl-mode))
+(add-to-list 'auto-mode-alist '("\\.m\\'" . objc-mode))
+(add-to-list 'auto-mode-alist '("\\.mm\\'" . objc-mode))
+(add-to-list 'auto-mode-alist '("\\.ipp\\'" . c++-mode))
+(add-to-list 'auto-mode-alist '("\\.clang-format\\'" . yaml-mode))
+(add-to-list 'auto-mode-alist '("\\.clang-tidy\\'" . yaml-mode))
+(add-to-list 'auto-mode-alist '("\\NEWS" . debian-changelog-mode))
;;; Launch