(add-to-list 'load-path "~/.emacs.d/lisp/") (defun x-config () ;; Theming (message "Applying X config") (custom-set-variables '(ansi-color-faces-vector [default default default italic underline success warning error]) '(ansi-color-names-vector ["black" "red3" "ForestGreen" "yellow3" "blue" "magenta3" "DeepSkyBlue" "gray50"]) '(custom-enabled-themes (quote (deeper-blue))) '(package-selected-packages (quote (company eglot auctex)))) (custom-set-faces '(default ((t (:inherit nil :stipple nil :background "#181a26" :foreground "gray80" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 120 :width normal :foundry "1ASC" :family "xos4 Terminus"))))) (setq-default cursor-type '(bar . 1)) ;; Packages (require 'package) (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) ;; Completion (require 'company) (add-hook 'prog-mode-hook 'company-mode) (setq company-minimum-prefix-length 3 company-idle-delay 0 company-tooltip-limit 10 company-dabbrev-downcase nil) ;; Eglot (require 'eglot) (add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd")) (add-hook 'c-mode-hook 'eglot-ensure) ;; Various prog-mode stuff (add-hook 'prog-mode-hook 'electric-pair-mode) (add-hook 'prog-mode-hook 'linum-mode)) (defun apply-x-config (&optional frame) (if (display-graphic-p frame) (x-config))) ;; Apply config when creating a frame or launching emacs (add-hook 'after-make-frame-functions 'apply-x-config) (add-hook 'tty-setup-hook (lambda () (message "tty-setuphook run"))) (apply-x-config) ;; Misc display (setq-default indent-tabs-mode t) (setq-default tab-width 4) (set-default 'truncate-lines t) (add-hook 'prog-mode-hook (show-paren-mode 1)) ;; c-mode (setq c-default-style "bsd" c-basic-offset 4) (c-set-offset 'case-label '+) (c-set-offset 'arglist-cont-nonempty '+) (c-set-offset 'statement-cont '+) ;; sh-mode (setq sh-indent-after-continuation 'always) ;; elisp-mode (put 'if 'lisp-indent-function nil) ;; diff-mode (defun custom-diff-colors () (set-face-foreground 'diff-added "green") (set-face-background 'diff-added "unspecified") (set-face-foreground 'diff-removed "red") (set-face-background 'diff-removed "unspecified") (set-face-background 'diff-file-header "unspecified")) (eval-after-load "diff-mode" '(custom-diff-colors)) ;; Latex (add-hook 'LaTeX-mode-hook 'auto-fill-mode) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (setq reftex-plug-into-AUCTeX t) (setq-default TeX-master nil) (setq TeX-auto-save t) (setq TeX-parse-self t) ;; Vapoursynth (add-to-list 'auto-mode-alist '("\\.vpy\\'" . python-mode)) ;; Spellcheck (setq ispell-dictionary "fr_FR") ;; Ruler (require 'whitespace) (setq whitespace-line-column 79) (setq whitespace-style '(face lines-tail)) (global-whitespace-mode 1) ;; Misc bindings (defun sed-on-region (b e script) "Run a sed script on a region" (interactive "r\nsSed script on region: ") (call-process-region b e "sed" t t t "-E" "--" script)) (global-set-key (kbd "C-c C-e") 'sed-on-region) (defun comment-region-binding () (local-set-key (kbd "C-c C-u") 'uncomment-region) (local-set-key (kbd "C-c C-c") 'comment-region)) (add-hook 'prog-mode-hook 'comment-region-binding) (add-hook 'LaTeX-mode-hook 'comment-region-binding) (setq smerge-command-prefix "\C-cm") (add-hook 'prog-mode-hook (lambda() (local-set-key (kbd "C-c ") 'hs-show-block) (local-set-key (kbd "C-c ") 'hs-hide-block) (local-set-key (kbd "C-c ") 'hs-hide-all) (local-set-key (kbd "C-c ") 'hs-show-all) (hs-minor-mode t))) ;; Misc (add-hook 'before-save-hook 'delete-trailing-whitespace) (setq inhibit-startup-screen t) (setq auto-save-default nil) (setq backup-inhibited t) (scroll-bar-mode -1) (tool-bar-mode -1) (menu-bar-mode -1) (setq-default fill-column 79) (setq frame-resize-pixelwise t) (savehist-mode t) (put 'upcase-region 'disabled nil) (put 'downcase-region 'disabled nil)