diff options
Diffstat (limited to 'emacs/.emacs.d/init.el')
-rw-r--r-- | emacs/.emacs.d/init.el | 368 |
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 |