diff --git a/core/core-eval.el b/core/core-eval.el index c9a521c8c..0249f1f15 100644 --- a/core/core-eval.el +++ b/core/core-eval.el @@ -12,7 +12,7 @@ (add-hook 'quickrun/mode-hook 'linum-mode) :config (setq quickrun-focus-p nil) - (add-to-list 'quickrun-file-alist '("\\.gvy$" . "groovy"))) + (push '("\\.gvy$" . "groovy") quickrun-file-alist)) (use-package repl-toggle :commands (rtog/toggle-repl rtog/add-repl) diff --git a/modules/defuns/defuns-lisp.el b/modules/defuns/defuns-lisp.el index c61f52761..22aab4fa0 100644 --- a/modules/defuns/defuns-lisp.el +++ b/modules/defuns/defuns-lisp.el @@ -44,5 +44,17 @@ (narf--ert-pre) (ert-run-tests-interactively t)) +;;;###autoload +(defun narf/elisp-auto-compile () + (when (narf/is-recompilable-p) + (narf:compile-el))) + +;;;###autoload +(defun narf/elisp-inf-ielm () + (ielm) + (let ((buf (current-buffer))) + (bury-buffer) + (pop-to-buffer buf))) + (provide 'defuns-lisp) ;;; defuns-lisp.el ends here diff --git a/modules/module-apple.el b/modules/module-apple.el index bd461060e..bc1da44fd 100644 --- a/modules/module-apple.el +++ b/modules/module-apple.el @@ -5,13 +5,12 @@ ;; TODO Set up emacs task runners for fruitstrap (use-package swift-mode :mode "\\.swift$" - :init - (add-hook! swift-mode 'flycheck-mode) + :init (add-hook 'swift-mode-hook 'flycheck-mode) :config - (after! flycheck (add-to-list 'flycheck-checkers 'swift)) - (after! company - (require 'company-sourcekit) - (define-company-backend! swift-mode (sourcekit yasnippet)))) + (after! flycheck (push 'swift flycheck-checkers)) + + (require 'company-sourcekit) + (define-company-backend! swift-mode (sourcekit yasnippet))) ;; diff --git a/modules/module-cc.el b/modules/module-cc.el index 170e899e0..d11737110 100644 --- a/modules/module-cc.el +++ b/modules/module-cc.el @@ -3,9 +3,8 @@ (use-package cmake-mode :mode "CMakeLists\\.txt$" :config - (after! company - (require 'company-cmake) - (define-company-backend! cmake-mode (cmake yasnippet)))) + (require 'company-cmake) + (define-company-backend! cmake-mode (cmake yasnippet))) (use-package glsl-mode :mode ("\\.glsl\\'" "\\.vert\\'" "\\.frag\\'" "\\.geom\\'")) @@ -43,6 +42,10 @@ (sp-local-pair "/**" "*/" :post-handlers '(("||\n[i]" "RET") ("||\n[i]" "SPC"))) (sp-local-pair "/*!" "*/" :post-handlers '(("||\n[i]" "RET") ("[d-1]< | " "SPC")))) + ;; TODO Clang is *really* slow in larger projects, maybe replace it with + ;; irony-mode or ycmd? + (define-company-backend! c-mode-common (c-headers clang xcode)) + ;; C/C++ Settings (add-hook! (c-mode c++-mode) (electric-indent-local-mode +1) @@ -50,11 +53,10 @@ (add-hook! c++-mode 'narf|init-c++-C11-highlights) (when IS-MAC - (after! company - (setq-default company-c-headers-path-system - (append '("/usr/include/" "/usr/local/include") - (f-directories "/usr/include/c++/") - (f-directories "/usr/local/include/c++/")))) + (setq-default company-c-headers-path-system + (append '("/usr/include/" "/usr/local/include") + (f-directories "/usr/include/c++/") + (f-directories "/usr/local/include/c++/"))) (after! flycheck (setq-default flycheck-clang-include-path '("/usr/local/include") flycheck-gcc-include-path '("/usr/local/include")))) @@ -63,11 +65,6 @@ (add-hook! c++-mode (setq flycheck-clang-language-standard "c++11" flycheck-clang-standard-library "libc++"))) - (after! company - ;; TODO Clang is *really* slow in larger projects, maybe replace it with - ;; irony-mode or ycmd? - (define-company-backend! c-mode-common (c-headers clang xcode))) - ;; Fix enum and C++11 lambda indentation (defadvice c-lineup-arglist (around c-lineup-arglist-indent-fix activate) "Improve indentation of continued C++11 lambda function opened as argument." diff --git a/modules/module-csharp.el b/modules/module-csharp.el index 06dec5156..2206a166f 100644 --- a/modules/module-csharp.el +++ b/modules/module-csharp.el @@ -3,17 +3,16 @@ (use-package csharp-mode :functions (csharp-log) :mode "\\.cs$" - :init (add-hook! csharp-mode 'flycheck-mode) - :config (require 'omnisharp)) + :init (add-hook 'csharp-mode-hook 'flycheck-mode)) ;; unity shaders (use-package shader-mode :mode "\\.shader$") -(setq omnisharp-auto-complete-want-documentation nil - omnisharp-server-executable-path (concat narf-ext-dir "/OmniSharp.exe")) - (use-package omnisharp - :defer t + :commands (omnisharp-mode) + :preface + (setq omnisharp-auto-complete-want-documentation nil + omnisharp-server-executable-path (concat narf-ext-dir "/OmniSharp.exe")) :when (file-exists-p omnisharp-server-executable-path) :init (add-hook! csharp-mode '(emr-initialize omnisharp-mode)) @@ -25,15 +24,15 @@ "ts" (λ! (omnisharp-unit-test "single")) "ta" (λ! (omnisharp-unit-test "all")))) - (after! company - (define-company-backend! csharp-mode (omnisharp)) - (add-hook! csharp-mode 'turn-on-eldoc-mode)) + (define-company-backend! csharp-mode (omnisharp)) + (add-hook! csharp-mode 'turn-on-eldoc-mode) ;; Map all refactor commands (see emr) (mapc (lambda (x) (let ((command-name (car x)) (title (cadr x))) - (emr-declare-command (intern (format "omnisharp-%s" (symbol-name command-name))) + (emr-declare-command + (intern (format "omnisharp-%s" (symbol-name command-name))) :title title :modes 'omnisharp-mode))) '((find-usages "find usages") (find-implementations "find implementations") diff --git a/modules/module-go.el b/modules/module-go.el index 6f7e7c299..4a4982fda 100644 --- a/modules/module-go.el +++ b/modules/module-go.el @@ -27,7 +27,7 @@ (use-package helm-go-package :defer t)) (use-package go-eldoc - :config (add-hook! go-mode 'go-eldoc-setup)) + :config (add-hook 'go-mode-hook 'go-eldoc-setup)) (use-package company-go :config diff --git a/modules/module-js.el b/modules/module-js.el index cf91dce07..20bd78a98 100644 --- a/modules/module-js.el +++ b/modules/module-js.el @@ -22,7 +22,7 @@ (map! :map js2-mode-map :m "gQ" 'web-beautify-js)) (use-package js2-refactor - :init (add-hook! js2-mode 'emr-initialize) + :init (add-hook 'js2-mode-hook 'emr-initialize) :config (require 'emr) (mapc (lambda (x) @@ -34,7 +34,8 @@ (t (if region-p (lambda () (use-region-p)) (lambda () (not (use-region-p))))))) - (emr-declare-command (intern (format "js2r-%s" (symbol-name command-name))) + (emr-declare-command + (intern (format "js2r-%s" (symbol-name command-name))) :title title :modes 'js2-mode :predicate predicate))) '((extract-function "extract function" t) (extract-method "extract method" t) diff --git a/modules/module-lisp.el b/modules/module-lisp.el index 173f2e79c..ea3a9d804 100644 --- a/modules/module-lisp.el +++ b/modules/module-lisp.el @@ -3,24 +3,15 @@ (add-hook! emacs-lisp-mode '(turn-on-eldoc-mode flycheck-mode)) ;; Pop-up REPL -(defun narf-inf-ielm () - (ielm) - (let ((buf (current-buffer))) - (bury-buffer) - (pop-to-buffer buf))) -(define-repl! emacs-lisp-mode narf-inf-ielm) +(define-repl! emacs-lisp-mode narf/elisp-inf-ielm) -;; [pedantry intensifies] +;; 'Emacs Lisp' is too long [pedantry intensifies] (defadvice emacs-lisp-mode (after emacs-lisp-mode-rename-modeline activate) (setq mode-name "Elisp")) -(defun narf-elisp-auto-compile () - (when (narf/is-recompilable-p) - (narf:compile-el))) - (add-hook! emacs-lisp-mode (add-hook 'before-save-hook 'delete-trailing-whitespace nil t) - (add-hook 'after-save-hook 'narf-elisp-auto-compile nil t) + (add-hook 'after-save-hook 'narf/elisp-auto-compile nil t) (let ((header-face 'font-lock-constant-face)) (add-to-list 'imenu-generic-expression @@ -59,26 +50,27 @@ (cons disp (cons k v))))) (font-lock-add-keywords - 'emacs-lisp-mode - `(("(\\(lambda\\)" - (1 (narf/show-as ?λ))) - ;; Highlight narf macros (macros are fontified in emacs 25+) - (,(concat - "(\\(" - (regexp-opt '("λ" "in" "map" "after" "exmap" "shut-up" - "add-hook" "associate" "open-with" "define-repl" - "define-builder" "narf-space-setup" "define-env-command" - "define-text-object" "add-yas-minor-mode" "define-docset" - "define-org-link!" "define-company-backend" "define-org-section")) - "!\\)") - (1 font-lock-keyword-face append)) - ;; Ert - (,(concat - "(" - (regexp-opt '("ert-deftest") t) - " \\([^ ]+\\)") - (1 font-lock-keyword-face) - (2 font-lock-function-name-face)))) + 'emacs-lisp-mode `(("(\\(lambda\\)" + (1 (narf/show-as ?λ))) + ;; Highlight narf macros (macros are fontified in emacs 25+) + (,(concat + "(\\(" + (regexp-opt '("λ" "in" "map" "after" "exmap" "shut-up" "add-hook" + "associate" "open-with" "define-repl" + "define-builder" "narf-space-setup" + "define-env-command" "define-text-object" + "add-yas-minor-mode" "define-docset" + "define-org-link!" "define-company-backend" + "define-org-section")) + "!\\)") + (1 font-lock-keyword-face append)) + ;; Ert + (,(concat + "(" + (regexp-opt '("ert-deftest") t) + " \\([^ ]+\\)") + (1 font-lock-keyword-face) + (2 font-lock-function-name-face)))) ;; Real go-to-definition for elisp (map! :map emacs-lisp-mode-map diff --git a/modules/module-rust.el b/modules/module-rust.el index 202691d52..62f77b160 100644 --- a/modules/module-rust.el +++ b/modules/module-rust.el @@ -10,10 +10,11 @@ :config (add-hook! rust-mode 'flycheck-mode)) (use-package racer - :when (file-exists-p (concat narf-ext-dir "/racer")) - :config + :preface (setq racer-cmd (concat narf-ext-dir "/racer") racer-rust-src-path (concat narf-ext-dir "/rust/src/")) + :when (file-exists-p racer-cmd) + :config (map! :map rust-mode-map :m "gd" 'racer-find-definition) ;; TODO Unit test keybinds diff --git a/modules/module-sh.el b/modules/module-sh.el index 4a552ef5e..585876651 100644 --- a/modules/module-sh.el +++ b/modules/module-sh.el @@ -9,22 +9,21 @@ (associate! sh-mode :match "/\\.?z\\(sh/.*\\|profile\\|login\\|logout\\|shrc\\|shenv\\)$") (associate! sh-mode :match "/\\.?bash\\(/.*\\|rc\\|_profile\\)$") (after! sh-script - ;; [pedantry intensifies] - (defadvice sh-mode (after sh-mode-rename-modeline activate) - (setq mode-name "sh")) - - (setq sh-indent-after-continuation 'always) - - (define-repl! sh-mode narf/inf-shell) - (add-hook! sh-mode 'flycheck-mode) + (add-hook 'sh-mode-hook 'flycheck-mode) + (add-hook 'sh-mode-hook 'narf|sh-extra-font-lock-activate) ; Fontify variables in strings (add-hook! sh-mode (electric-indent-local-mode +1) (setq narf-electric-indent-words '("else" "elif" "fi" "done"))) - (require 'company-shell) + (define-repl! sh-mode narf/inf-shell) - ;; Fontify variables in strings - (add-hook 'sh-mode-hook 'narf|sh-extra-font-lock-activate) + (setq sh-indent-after-continuation 'always) + + ;; [pedantry intensifies] + (defadvice sh-mode (after sh-mode-rename-modeline activate) + (setq mode-name "sh")) + + (require 'company-shell) (sp-with-modes '(sh-mode) (sp-local-pair "case" "" :when '(("SPC")) :post-handlers '((:add narf/sp-insert-yasnippet)) :actions '(insert)) diff --git a/modules/module-web.el b/modules/module-web.el index 915b5f262..d7fa16a09 100644 --- a/modules/module-web.el +++ b/modules/module-web.el @@ -5,7 +5,7 @@ (use-package sass-mode :mode "\\.sass$" :config - (after! company (define-company-backend! sass-mode (css)))) + (define-company-backend! sass-mode (css))) (use-package scss-mode :mode "\\.scss$" @@ -14,7 +14,6 @@ :init (define-docset! scss-mode "sass,bourbon") (add-hook! scss-mode '(hs-minor-mode narf|hl-line-off)) - (setq-default css-indent-offset 2) (setq scss-compile-at-save nil) :config (sp-local-pair 'scss-mode "/*" "*/" :post-handlers '(("[d-3]||\n[i]" "RET") ("| " "SPC"))) @@ -22,8 +21,10 @@ (map! :map scss-mode-map :n "M-r" 'narf/web-refresh-browser (:leader - :n ";" 'helm-css-scss - :n ":" 'helm-css-scss-multi)) + :n ";" 'helm-css-scss + :n ":" 'helm-css-scss-multi)) + + (define-company-backend! scss-mode (css)) (after! web-beautify (add-hook! scss-mode (setenv "jsbeautify_indent_size" "2")) @@ -33,9 +34,7 @@ (emr-declare-command 'narf/scss-toggle-inline-or-block :title "toggle inline/block" :modes 'scss-mode - :predicate (lambda () (not (use-region-p))))) - - (after! company (define-company-backend! scss-mode (css)))) + :predicate (lambda () (not (use-region-p)))))) (use-package web-beautify :commands (web-beautify-js web-beautify-css web-beautify-html)