Created
June 9, 2019 08:34
-
-
Save joshuafcole/43ab51f01ca77002678d7e3127dcf326 to your computer and use it in GitHub Desktop.
.emacs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; use-package setup | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(require 'package) | |
(add-to-list 'package-archives | |
'("melpa" . "https://melpa.org/packages/") t) | |
(package-initialize) | |
;; Setup use-package to manage dependencies. | |
(unless (package-installed-p 'use-package) | |
(package-refresh-contents) | |
(package-install 'use-package)) | |
(eval-when-compile | |
(require 'use-package)) | |
(use-package diminish :ensure t) | |
(use-package bind-key :ensure t) | |
(require 'diminish) | |
(require 'bind-key) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; Customize Variables & Faces | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(custom-set-variables | |
;; custom-set-variables was added by Custom. | |
;; 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. | |
'(bmkp-last-as-first-bookmark-file "~/.emacs.d/bookmarks") | |
'(cider-annotate-completion-candidates t t) | |
'(cider-boot-parameters "cider.tasks/nrepl-server -b localhost wait" t) | |
'(cider-debug-display-locals t t) | |
'(cider-repl-use-pretty-printing t t) | |
'(company-auto-complete-chars (quote (41 46))) | |
'(company-idle-delay 0.2) | |
'(company-minimum-prefix-length 3) | |
'(company-quickhelp-color-background "#404040") | |
'(company-quickhelp-color-foreground "white") | |
'(company-quickhelp-delay 0.2) | |
'(company-quickhelp-mode t) | |
'(company-quickhelp-use-propertized-text t) | |
'(company-selection-wrap-around t) | |
'(company-show-numbers t) | |
'(company-tooltip-align-annotations t) | |
'(company-tooltip-maximum-width 100) | |
'(custom-safe-themes | |
(quote | |
("dcbe22bc74153257f412183dd14ab9652197f59adf65646e618c2577e7cca34d" "38ba6a938d67a452aeb1dada9d7cdeca4d9f18114e9fc8ed2b972573138d4664" "71ecffba18621354a1be303687f33b84788e13f40141580fa81e7840752d31bf" "561ba4316ba42fe75bc07a907647caa55fc883749ee4f8f280a29516525fc9e8" default))) | |
'(highline-priority 1) | |
'(js-indent-level 2) | |
'(lsp-auto-guess-root t) | |
'(lsp-rust-clippy-preference "on") | |
'(lsp-rust-unstable-features t) | |
'(lsp-ui-doc-border "#404040") | |
'(lsp-ui-doc-header t) | |
'(lsp-ui-doc-use-webkit nil nil nil "Customized with use-package lsp-ui") | |
'(lsp-ui-flycheck-enable t) | |
'(lsp-ui-peek-always-show t) | |
'(lsp-ui-peek-enable t) | |
'(lsp-ui-peek-fontify (quote on-demand)) | |
'(lsp-ui-sideline-delay 0.5) | |
'(lsp-ui-sideline-ignore-duplicates t t) | |
'(markdown-command "marked") | |
'(markdown-preview-style | |
"https://cdn.rawgit.com/joshuafcole/github-markdown-css/0694d90c73626ebf066307d6d58d0359c9cd992f/github-markdown.css" t) | |
'(package-selected-packages | |
(quote | |
(diff-hl diff-hl-mode cyberpunk-2019-theme company-web typescript-mode clojure-mode flycheck rainbow-delimiters company-quickhelp ido-completing-read+ dap-rust dap-mode company-lsp lsp-ui lsp-mode ess ess-R-data-view flycheck-julia julia-repl julia-shell julia-mode yasnippet prettier prettier-js auto-sudoedit ibuffer-tramp tramp-term flycheck-kotlin kotlin-mode cider cider-eval-sexp-fu default-text-scale company-glsl glsl-mode protobuf-mode mocha json-mode json-navigator company-flow flow-minor-mode sws-mode stylus-mode rainbow-mode powershell yaml-mode web-mode flycheck-package package-lint poly-mode polymode use-package pcre2el cargo flycheck-rust rust-mode multiple-cursors ham-mode markdown-mode+ cyberpunk-theme leuven-theme tide smex paredit nixos-options nix-mode magit ido-ubiquitous highline company better-defaults))) | |
'(rainbow-delimiters-max-face-count 4) | |
'(safe-local-variable-values | |
(quote | |
((org-emphasis-alist | |
("*" bold) | |
("/" italic) | |
("_" underline) | |
("=" org-verbatim verbatim) | |
("~" org-code verbatim)) | |
(org-emphasis-alist | |
("*" bold) | |
("/" italic) | |
("_" underline) | |
("=" org-verbatim verbatim) | |
("~" org-code verbatim) | |
("+" | |
(:strike-through nil)))))) | |
'(typescript-indent-level 2)) | |
(custom-set-faces | |
;; custom-set-faces was added by Custom. | |
;; 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. | |
'(border ((t (:background "#202020")))) | |
'(company-preview ((t (:background "black" :foreground "#8899aa" :box (:line-width 1 :color "#88ccff"))))) | |
'(company-preview-common ((t (:background "black" :foreground "#8899aa")))) | |
'(company-scrollbar-bg ((t (:background "black")))) | |
'(company-scrollbar-fg ((t (:background "gray")))) | |
'(company-tooltip ((t (:background "#303030" :foreground "white")))) | |
'(company-tooltip-annotation ((t (:inherit company-tooltip :foreground "#aabbcc")))) | |
'(company-tooltip-annotation-selection ((t (:inherit company-tooltip-annotation :background "#404040")))) | |
'(company-tooltip-common ((t (:inherit company-tooltip :foreground "#66eeff")))) | |
'(company-tooltip-common-selection ((t (:inherit company-tooltip-selection :foreground "#44eeff")))) | |
'(company-tooltip-selection ((t (:inherit company-tooltip :background "#404040" :foreground "white")))) | |
'(flycheck-warning ((t (:underline (:color "orange" :style wave))))) | |
'(flymake-error ((t (:background "#200000" :foreground "#ffdddd" :underline nil :weight normal)))) | |
'(flymake-warning ((t (:background "#202000" :foreground "#fff9bb" :underline nil :weight normal)))) | |
'(fringe ((t (:background "#202020" :foreground "#dcdccc")))) | |
'(highlight-blocks-depth-1-face ((t (:background "#080808")))) | |
'(highlight-blocks-depth-2-face ((t (:background "#121212")))) | |
'(highline-face ((t (:background "#1a1a1a")))) | |
'(line-number ((t (:inherit (shadow default) :background "#292929")))) | |
'(line-number-current-line ((t (:inherit line-number :foreground "#88ccff")))) | |
'(link ((t (:foreground "#00ddee" :underline t :weight bold)))) | |
'(lsp-ui-doc-header ((t (:background "#404040" :foreground "white" :weight semi-bold)))) | |
'(lsp-ui-sideline-code-action ((t (:foreground "#00ddee")))) | |
'(markdown-code-face ((t (:inherit consolas)))) | |
'(rainbow-delimiters-depth-1-face ((t (:foreground "#00b8f1")))) | |
'(rainbow-delimiters-depth-2-face ((t (:foreground "#6b67ad")))) | |
'(rainbow-delimiters-depth-3-face ((t (:foreground "#009ee0")))) | |
'(rainbow-delimiters-depth-4-face ((t (:foreground "#5b59a4")))) | |
'(region ((t (:background "#203039"))))) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; Basic configuration | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;(set-face-attribute 'default nil :family "Source Code Pro for Powerline") | |
(set-face-attribute 'default nil :family "Iosevka Term") | |
(set-fontset-font t 'unicode "Ubuntu" nil 'prepend) | |
(prefer-coding-system 'utf-8) | |
(setq coding-system-for-read 'utf-8) | |
(setq coding-system-for-write 'utf-8) | |
(delete-selection-mode) ; Overwrite selection on paste | |
(setq x-select-enable-clipboard t) ; Clipboard integration | |
(setq yank-pop-change-selection t) ; Clipboard integration | |
(xterm-mouse-mode t) ; Enable mouse | |
(setq time-stamp-pattern nil) | |
(setq time-stamp-time-zone "PST") | |
(setq column-number-mode t) | |
(if (fboundp 'global-display-line-numbers-mode) | |
(global-display-line-numbers-mode 1) | |
(global-linum-mode t)) | |
(desktop-save-mode t) | |
;; OS X Bug Fixes | |
(setq visible-bell nil) | |
(add-hook 'before-save-hook 'whitespace-cleanup) | |
;; @TODO: Switch to creating a map. | |
(require 'subword) | |
(global-set-key (kbd "M-f") 'subword-forward) | |
(global-set-key (kbd "M-b") 'subword-backward) | |
(global-set-key (kbd "M-<left>") 'subword-left) | |
(global-set-key (kbd "M-<right>") 'subword-right) | |
(global-set-key (kbd "C-S-f") 'forward-word) | |
(global-set-key (kbd "C-S-b") 'backward-word) | |
(global-set-key (kbd "C-S-<left>") 'left-word) | |
(global-set-key (kbd "C-S-<right>") 'right-word) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; Theme | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(defun select-color-scheme (scheme) | |
(let ((chrome-background (if (equal scheme "light") "#ececec" "#2c2c2c")) | |
(theme (if (equal scheme "light") 'leuven 'cyberpunk))) | |
;; (set-face-background 'highline-face chrome-background) | |
;; (set-face-background 'linum chrome-background) | |
;; (set-face-background 'fringe chrome-background) | |
(load-theme theme t))) | |
(add-hook 'after-init-hook | |
(lambda () (select-color-scheme "dark"))) | |
;; (select-color-scheme "light") | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; iBuffer | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(eval-after-load "ibuf-ext" | |
'(define-ibuffer-filter filename | |
"Toggle current view to buffers with file or directory name matching QUALIFIER." | |
(:description "filename" | |
:reader (read-from-minibuffer "Filter by file/directory name (regexp): ")) | |
(ibuffer-awhen (or (buffer-local-value 'buffer-file-name buf) | |
(buffer-local-value 'dired-directory buf)) | |
(string-match qualifier it)))) | |
(setq ibuffer-saved-filter-groups | |
'(("default" | |
("mmi" (filename . ".*/repos/rai/mmi-.*")) | |
("rai" (filename . ".*/repos/rai/.*")) | |
("flux" (filename . ".*/repos/personal/flux/.*")) | |
("external" (filename . ".*/repos/external/.*")) | |
("emacs" (or | |
(name . "^\\*scratch\\*$") | |
(name . "^\\*Messages\\*$") | |
(name . "^\\*Help\\*$") | |
(name . "^\\.emacs$"))) | |
("system" (or | |
(filename . "^/home/josh/scripts/.*$") | |
(filename . "^/home/josh/.zshrc$") | |
(filename . "^/home/josh/.config/.*$"))) | |
("meta" (name . "^\\*.*$"))))) | |
(add-hook 'ibuffer-mode-hook | |
(lambda () | |
(ibuffer-switch-to-saved-filter-groups "default"))) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; General | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(use-package auto-sudoedit :ensure t) | |
(use-package better-defaults :ensure t) | |
(use-package ido-completing-read+ :ensure t | |
:init | |
(ido-mode 1) | |
(ido-everywhere 1) | |
(ido-ubiquitous-mode 1)) | |
(use-package smex :ensure t | |
:config | |
(smex-initialize) | |
:bind (("M-x" . smex) | |
("M-X" . smex-major-mode-commands))) | |
(use-package highline :ensure t | |
:init | |
(global-highline-mode t) | |
:custom | |
(highline-priority 1)) | |
(use-package multiple-cursors :ensure t | |
:bind (("C-S-SPC" . mc/edit-lines) | |
("C-M-." . mc/mark-next-like-this) | |
([next] . mc/mark-next-like-this) | |
("C-M-," . mc/mark-previous-like-this) | |
([prior] . mc/mark-previous-like-this))) | |
(require 'tramp) | |
(setq tramp-default-method "ssh") | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; Prog Mode | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(add-hook 'prog-mode-hook | |
(lambda () | |
(setq indent-tabs-mode nil) | |
(rainbow-delimiters-mode +1) | |
(show-paren-mode +1) | |
(eldoc-mode +1) | |
(company-mode +1) | |
(company-quickhelp-mode +1) | |
(diff-hl-mode +1) | |
(diff-hl-flydiff-mode +1))) | |
(use-package company :ensure t | |
:bind (("M-TAB" . company-complete-common-or-cycle)) | |
:custom | |
(company-selection-wrap-around t) | |
(company-show-numbers t) | |
(company-idle-delay 0.2) | |
(company-minimum-prefix-length 2) | |
(company-tooltip-maximum-width 120) | |
(company-tooltip-align-annotations t) | |
(company-auto-complete-chars (quote (41 46)))) | |
(use-package company-quickhelp :ensure t | |
:custom | |
(company-quickhelp-delay 0.2) | |
(company-quickhelp-mode t)) | |
(use-package rainbow-delimiters :ensure t | |
:commands rainbow-delimiters-mode | |
:custom | |
(rainbow-delimiters-max-face-count 4)) | |
(use-package flycheck :ensure t | |
:init | |
(setq flycheck-check-syntax-automatically '(save mode-enabled)) | |
(add-to-list 'display-buffer-alist | |
`(,(rx bos "*Flycheck errors*" eos) | |
(display-buffer-reuse-window | |
display-buffer-in-side-window) | |
(side . bottom) | |
(reusable-frames . visible) | |
(window-height . 0.10)))) | |
(use-package yasnippet :ensure t | |
:init | |
(yas-global-mode +1)) | |
(use-package rainbow-mode :ensure t | |
:hook | |
((css-mode . rainbow-mode) | |
(stylus-mode . rainbow-mode))) | |
(use-package lsp-mode :ensure t | |
:hook (rust-mode . lsp) | |
:bind (:map lsp-mode-map | |
("C-c r" . lsp-rename)) | |
:custom | |
(lsp-auto-guess-root t)) | |
(use-package lsp-ui :ensure t | |
:commands lsp-ui-mode | |
:hook (lsp-mode-hook . lsp-ui-mode) | |
:bind | |
(:map lsp-mode-map | |
("M-?" . lsp-ui-peek-find-references) | |
("M-." . lsp-ui-peek-find-definitions) | |
("M->" . lsp-ui-peek-find-implementation) | |
("C-c m" . lsp-ui-imenu) | |
("C-c s" . lsp-ui-sideline-mode)) | |
:custom | |
;; flycheck | |
(lsp-ui-flycheck-enable t) | |
;; sideline | |
(lsp-ui-sideline-delay 0.5) | |
(lsp-ui-sideline-ignore-duplicates t) | |
;; doc | |
; (lsp-ui-doc-header t) | |
;(lsp-ui-doc-use-webkit nil) | |
;; peek | |
(lsp-ui-peek-enable t) | |
(lsp-ui-peek-fontify 'on-demand) | |
; (lsp-ui-doc-use-webkit t) | |
) | |
(use-package company-lsp :commands company-lsp :ensure t | |
:init | |
(message "setup company-lsp") | |
(push 'company-lsp company-backends)) | |
(use-package dap-mode :ensure t) | |
(use-package diff-hl :ensure t | |
:commands (diff-hl-mode global-diff-hl-mode diff-hl-flydiff-mode)) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; Languages | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;━━━━━━━┫ C/++ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(setq-default c-basic-offset 4) | |
;;━━━━━━━┫ Clojure ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package clojure-mode :ensure t | |
:mode ("\\.clj\\'" . clojure-mode)) | |
(use-package cider :ensure t | |
:hook (clojure-mode . cider-mode) | |
:bind | |
(:map cider-mode-map | |
("C-/" . cider-doc) | |
("C-?" . cider-grimoire) | |
("C-." . cider-find-var) | |
("C-," . cider-pop-back)) | |
:custom | |
(cider-annotate-completion-candidates t) | |
(cider-boot-parameters "cider.tasks/nrepl-server -b localhost wait") | |
(cider-debug-display-locals t) | |
(cider-repl-use-pretty-printing t) | |
:config | |
(setq cider-cljs-lein-repl | |
"(do (require 'figwheel-sidecar.repl-api) | |
(figwheel-sidecar.repl-api/start-figwheel!) | |
(figwheel-sidecar.repl-api/cljs-repl))")) | |
(use-package cider-eval-sexp-fu :ensure t :defer 10) | |
;;━━━━━━━┫ GLSL ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package glsl-mode :ensure t | |
:mode ("\\.glsl\\'" . glsl-mode)) | |
(use-package company-glsl :ensure t :defer 10) | |
;;━━━━━━━┫ Javascript / Typescript ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package js | |
:custom | |
(js-indent-level 2)) | |
(use-package typescript-mode :ensure t | |
:mode ("\\.ts\\'" . typescript-mode) | |
:bind (("C-<tab>" . indent-relative)) | |
:custom | |
(typescript-indent-level 2)) | |
(use-package tide :ensure t | |
:after (typescript-mode company flycheck) | |
:hook ((typescript-mode . tide-setup) | |
(typescript-mode . tide-hl-identifier-mode) | |
(before-save . tide-format-before-save))) | |
(use-package prettier-js :ensure t | |
:commands 'prettier-js-mode | |
:hook ((typescript-mode . prettier-js-mode) | |
(javascript-mode . prettier-js-mode))) | |
(use-package web-mode :ensure t | |
:mode ("\\.tsx\\'" . web-mode) | |
:init | |
(flycheck-add-mode 'typescript-tslint 'web-mode) | |
(add-hook 'web-mode-hook | |
(lambda () | |
(setq web-mode-markup-indent-offset 2) | |
(setq web-mode-css-indent-offset 2) | |
(setq web-mode-code-indent-offset 2) | |
(when (string-equal "tsx" (file-name-extension buffer-file-name)) | |
(setq web-mode-enable-auto-quoting nil) | |
(flycheck-add-next-checker 'typescript-tide '(t . typescript-tslint) 'append))))) | |
(use-package company-web :ensure t) | |
(use-package json-mode :ensure t | |
:mode ("\\.json\\'" . json-mode)) | |
(use-package json-navigator :ensure t) | |
;;━━━━━━━┫ Julia ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package julia-mode :ensure t | |
:mode ("\\.jl\'" . julia-mode) | |
:commands julia-mode) | |
(use-package flycheck-julia :ensure t | |
:after (flycheck julia-mode) | |
:hook (flycheck-mode-hook . flycheck-julia-setup)) | |
;;━━━━━━━┫ Markdown ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package markdown-mode+ :ensure t | |
:hook ((gfm-mode-hook markdown-mode-hook) . setup-md-mode) | |
:custom | |
(markdown-command "marked") | |
(markdown-preview-style | |
"https://cdn.rawgit.com/joshuafcole/github-markdown-css/0694d90c73626ebf066307d6d58d0359c9cd992f/github-markdown.css") | |
:init | |
(defun setup-md-mode () | |
(toggle-word-wrap t) | |
(local-set-key (kbd "M-<right>") 'right-word) | |
(local-set-key (kbd "M-<left>") 'left-word) | |
(set (make-local-variable 'time-stamp-pattern) "-8/^date: %04Y-%02m-%02d %02H:%02M:%02S %:Z$") | |
(add-hook 'before-save-hook 'time-stamp))) | |
;; (put 'narrow-to-region 'disabled nil) | |
;;━━━━━━━┫ Nix ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package nix-mode :defer t) | |
(use-package nixos-options :defer t) | |
;;━━━━━━━┫ Polymode ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package polymode :ensure t | |
:init | |
(setq polymode-buffers-regexp "^.*\\[.*\\]$") | |
(add-to-list 'ido-ignore-buffers polymode-buffers-regexp) | |
(when window-system | |
(setq desktop-restore-forces-onscreen nil) | |
(setq desktop-buffers-not-to-save (concat "\\(?:\\` \\)" "\\|\\(?:" polymode-buffers-regexp "\\)")))) | |
;;━━━━━━━┫ R ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package ess :ensure t | |
:mode ("\\.R\\'" . r-mode)) | |
;;━━━━━━━┫ Rust ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package rust-mode :ensure t | |
:mode ("\\.rs\\'" . rust-mode) | |
:commands rust-mode | |
:init | |
;(setq racer-rust-src-path "/home/josh/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src") | |
(add-hook 'rust-mode-hook | |
(lambda () | |
(interactive) | |
(setq rust-format-on-save t) | |
(lsp-mode +1) | |
(flycheck-mode +1) | |
;; (racer-mode +1) | |
))) | |
(use-package flycheck-rust :ensure t | |
:after (flycheck rust-mode) | |
:hook (flycheck-mode-hook . flycheck-rust-setup)) | |
;; (use-package racer :ensure t | |
;; :commands racer-mode | |
;; :custom | |
;; (racer-eldoc-timeout 0.25)) | |
;;━━━━━━━┫ Shell ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(add-hook 'sh-mode-hook | |
(lambda () | |
(setq-local sh-basic-offset 2) | |
(setq-local sh-indentation 2))) | |
;;━━━━━━━┫ Stylus ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | |
(use-package stylus-mode :ensure t | |
:mode ("\\.styl\\'" . stylus-mode) | |
:commands stylus-mode) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; Convenience Fns | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(defun what-face (pos) | |
(interactive "d") | |
(let ((face (or (get-char-property (pos) 'read-face-name) | |
(get-char-property (pos) 'face)))) | |
(if face (message "Face: %s" face) (message "No face at %d" pos)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment