Major refactor & optimization of how modules load their packages
Now that we are loading package autoloads files (as part of the generated doom-package-autoload-file when running make autoloads), many :commands properties are redundant. In fact, many def-package! blocks are redundant. In some cases, we can do without a config.el file entirely, and can move into the autoloads file or rely entirely on package autoloads. Also, many settings have been moved in their module's autoloads files, which makes them available ASAP; their use no longer depends on module load order. This gained me a modest ~10% boost in startup speed.
This commit is contained in:
parent
6a140209b8
commit
09cb4f6716
93 changed files with 644 additions and 846 deletions
4
modules/lang/assembly/autoload.el
Normal file
4
modules/lang/assembly/autoload.el
Normal file
|
@ -0,0 +1,4 @@
|
|||
;;; lang/assembly/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(map-put auto-mode-alist "\\.hax\\'" 'haxor-mode)
|
|
@ -1,8 +0,0 @@
|
|||
;;; lang/assembly/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! mips-mode :mode "\\.mips$")
|
||||
|
||||
(def-package! haxor-mode :mode "\\.hax$")
|
||||
|
||||
(def-package! nasm-mode :commands nasm-mode)
|
||||
|
|
@ -89,13 +89,6 @@ compilation dbs."
|
|||
nconc (list "-I" path)))
|
||||
(doom-project-root)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun +cc|init-rtags ()
|
||||
"Start an rtags server in c-mode and c++-mode buffers."
|
||||
(when (and (memq major-mode '(c-mode c++-mode))
|
||||
(rtags-executable-find "rtags"))
|
||||
(rtags-start-process-unless-running)))
|
||||
|
||||
;;;###autoload
|
||||
(defun +cc|cleanup-rtags ()
|
||||
"Kill rtags server(s) if there are no C/C++ buffers open."
|
||||
|
|
|
@ -55,10 +55,10 @@ compilation database is present in the project.")
|
|||
|
||||
:config
|
||||
(set! :electric '(c-mode c++-mode objc-mode java-mode)
|
||||
:chars '(?\n ?\}))
|
||||
:chars '(?\n ?\}))
|
||||
(set! :company-backend
|
||||
'(c-mode c++-mode objc-mode)
|
||||
'(company-irony-c-headers company-irony))
|
||||
'(c-mode c++-mode objc-mode)
|
||||
'(company-irony-c-headers company-irony))
|
||||
|
||||
;;; Style/formatting
|
||||
;; C/C++ style settings
|
||||
|
@ -101,8 +101,8 @@ compilation database is present in the project.")
|
|||
(label . 0))))
|
||||
|
||||
;;; Keybindings
|
||||
;; Completely disable electric keys because it interferes with smartparens and
|
||||
;; custom bindings. We'll do this ourselves.
|
||||
;; Disable electric keys because it interferes with smartparens and custom
|
||||
;; bindings. We'll do it ourselves (mostly).
|
||||
(setq c-tab-always-indent nil
|
||||
c-electric-flag nil)
|
||||
(dolist (key '("#" "}" "/" "*" ";" "," ":" "(" ")" "\177"))
|
||||
|
@ -129,6 +129,7 @@ compilation database is present in the project.")
|
|||
|
||||
|
||||
(def-package! irony
|
||||
:when (featurep! +irony)
|
||||
:commands (irony-install-server irony-mode)
|
||||
:preface
|
||||
(setq irony-server-install-prefix (concat doom-etc-dir "irony-server/"))
|
||||
|
@ -172,23 +173,13 @@ compilation database is present in the project.")
|
|||
;;
|
||||
|
||||
(def-package! cmake-mode
|
||||
:mode "/CMakeLists\\.txt$"
|
||||
:mode "\\.cmake\\$"
|
||||
:defer t
|
||||
:config
|
||||
(set! :company-backend 'cmake-mode '(company-cmake company-yasnippet)))
|
||||
|
||||
(def-package! cuda-mode :mode "\\.cuh?$")
|
||||
(def-package! opencl-mode :mode "\\.cl\\'")
|
||||
|
||||
(def-package! opencl-mode :mode "\\.cl$")
|
||||
|
||||
(def-package! demangle-mode
|
||||
:hook llvm-mode)
|
||||
|
||||
(def-package! glsl-mode
|
||||
:mode "\\.glsl$"
|
||||
:mode "\\.vert$"
|
||||
:mode "\\.frag$"
|
||||
:mode "\\.geom$")
|
||||
(def-package! demangle-mode :hook llvm-mode)
|
||||
|
||||
|
||||
;;
|
||||
|
@ -213,7 +204,12 @@ compilation database is present in the project.")
|
|||
(def-package! rtags
|
||||
:commands rtags-executable-find
|
||||
:init
|
||||
(add-hook! (c-mode c++-mode) #'+cc|init-rtags)
|
||||
(defun +cc|init-rtags ()
|
||||
"Start an rtags server in c-mode and c++-mode buffers."
|
||||
(when (and (memq major-mode '(c-mode c++-mode))
|
||||
(rtags-executable-find "rtags"))
|
||||
(rtags-start-process-unless-running)))
|
||||
(add-hook 'c-mode-common-hook #'+cc|init-rtags)
|
||||
:config
|
||||
(setq rtags-autostart-diagnostics t
|
||||
rtags-use-bookmarks nil
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
(warn! "Couldn't find the rtag client and/or server programs %s. Disabling rtags support" bins)))
|
||||
|
||||
;; irony server
|
||||
(require 'irony)
|
||||
(unless (file-directory-p irony-server-install-prefix)
|
||||
(warn! "Irony server isn't installed. Run M-x irony-install-server"))
|
||||
(when (require 'irony nil t)
|
||||
(unless (file-directory-p irony-server-install-prefix)
|
||||
(warn! "Irony server isn't installed. Run M-x irony-install-server")))
|
||||
|
||||
(when (featurep! :completion company)
|
||||
;; glslangValidator
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
;;; lang/clojure/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! clojure-mode
|
||||
:mode "\\.clj$"
|
||||
:mode "\\.edn$"
|
||||
:mode "\\(?:build\\|profile\\)\\.boot$"
|
||||
:mode ("\\.cljs$" . clojurescript-mode)
|
||||
:mode ("\\.cljc$" . clojurec-mode)
|
||||
:config
|
||||
(add-hook 'clojure-mode #'rainbow-delimiters-mode))
|
||||
;; `clojure-mode'
|
||||
(add-hook 'clojure-mode #'rainbow-delimiters-mode)
|
||||
|
||||
|
||||
(def-package! clj-refactor
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
;;; lang/crystal/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! crystal-mode
|
||||
:mode "\\.cr$"
|
||||
:interpreter "crystal"
|
||||
:defer t
|
||||
:config
|
||||
(set! :lookup 'crystal-mode
|
||||
:definition #'crystal-def-jump
|
||||
|
@ -19,5 +18,4 @@
|
|||
:config (add-hook 'crystal-mode-hook #'flycheck-mode))
|
||||
|
||||
|
||||
(def-package! inf-crystal
|
||||
:commands (inf-crystal crystal-switch-to-inf))
|
||||
(def-package! inf-crystal :commands crystal-switch-to-inf)
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
;;; lang/csharp/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! csharp-mode :mode "\\.cs$")
|
||||
|
||||
(def-package! shader-mode :mode "\\.shader$") ; unity shaders
|
||||
(add-to-list 'auto-mode-alist '("\\.shader$" . shader-mode)) ; unity shaders
|
||||
|
||||
|
||||
(def-package! omnisharp
|
||||
:after csharp-mode
|
||||
:hook (csharp-mode . omnisharp-mode)
|
||||
:commands omnisharp-install-server
|
||||
:preface
|
||||
(setq omnisharp-auto-complete-want-documentation nil
|
||||
omnisharp-cache-directory (concat doom-cache-dir "omnisharp"))
|
||||
:config
|
||||
(add-hook! csharp-mode #'(flycheck-mode omnisharp-mode))
|
||||
(add-hook 'csharp-mode-hook #'flycheck-mode)
|
||||
|
||||
(defun +csharp|cleanup-omnisharp-server ()
|
||||
"Clean up the omnisharp server once you kill the last csharp-mode buffer."
|
||||
|
|
|
@ -1,47 +1,30 @@
|
|||
;;; lang/data/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(push '("/sxhkdrc" . conf-mode) auto-mode-alist)
|
||||
;; Built in plugins
|
||||
(dolist (spec '(("/sxhkdrc\\'" . conf-mode)
|
||||
("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode)
|
||||
("\\.plist\\'" . nxml-mode)))
|
||||
(map-put auto-mode-alist (car spec) (cdr spec)))
|
||||
|
||||
(set! :company-backend 'nxml-mode '(company-nxml company-yasnippet))
|
||||
|
||||
|
||||
(def-package! dockerfile-mode
|
||||
:mode "/Dockerfile$")
|
||||
|
||||
;;
|
||||
;; Third-party plugins
|
||||
;;
|
||||
|
||||
(def-package! graphql-mode
|
||||
:mode "\\.g\\(?:raph\\)?ql$")
|
||||
|
||||
|
||||
(def-package! hexl ; For ROM hacking or debugging
|
||||
:mode ("\\.hex$" . hexl-mode)
|
||||
:mode ("\\.nes$" . hexl-mode))
|
||||
|
||||
:mode "\\.gql\\'")
|
||||
|
||||
(def-package! json-mode
|
||||
:mode "\\.js\\(?:on\\|[hl]int\\(rc\\)?\\)$"
|
||||
:mode "\\.js\\(?:on\\|[hl]int\\(rc\\)?\\)\\'"
|
||||
:config
|
||||
(when (featurep! :feature syntax-checker)
|
||||
(add-hook 'json-mode-hook #'flycheck-mode))
|
||||
(set! :electric 'json-mode :chars '(?\n ?: ?{ ?})))
|
||||
|
||||
|
||||
(def-package! nxml-mode
|
||||
:mode "\\.plist$"
|
||||
:config
|
||||
(set! :company-backend 'nxml-mode '(company-nxml company-yasnippet)))
|
||||
|
||||
|
||||
(def-package! toml-mode
|
||||
:mode "\\.toml$")
|
||||
|
||||
|
||||
(def-package! vimrc-mode
|
||||
:mode "/\\.?g?vimrc$"
|
||||
:mode "\\.vimp?$"
|
||||
:mode "\\.?vimperatorrc$")
|
||||
|
||||
|
||||
(def-package! yaml-mode
|
||||
:mode "\\.ya?ml$")
|
||||
:mode "\\.?vimperatorrc\\'")
|
||||
|
||||
|
||||
;;
|
||||
|
|
|
@ -1,21 +1,18 @@
|
|||
;;; lang/elixir/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! elixir-mode
|
||||
:mode "\\.exs?\\'"
|
||||
:mode "\\.elixir2\\'"
|
||||
:init
|
||||
;; sp's default elixir rules are obnoxious, so disable them
|
||||
(provide 'smartparens-elixir)
|
||||
:defer t
|
||||
:config
|
||||
;; ...and only complete the basics
|
||||
(sp-with-modes 'elixir-mode
|
||||
(sp-local-pair "do" "end"
|
||||
:when '(("RET" "<evil-ret>"))
|
||||
:unless '(sp-in-comment-p sp-in-string-p)
|
||||
:skip-match 'sp-elixir-skip-def-p
|
||||
:post-handlers '("||\n[i]"))
|
||||
(sp-local-pair "do " " end" :unless '(sp-in-comment-p sp-in-string-p))
|
||||
(sp-local-pair "fn " " end" :unless '(sp-in-comment-p sp-in-string-p))))
|
||||
(after! smartparens
|
||||
(sp-with-modes 'elixir-mode
|
||||
(sp-local-pair "do" "end"
|
||||
:when '(("RET" "<evil-ret>"))
|
||||
:unless '(sp-in-comment-p sp-in-string-p)
|
||||
:skip-match 'sp-elixir-skip-def-p
|
||||
:post-handlers '("||\n[i]"))
|
||||
(sp-local-pair "do " " end" :unless '(sp-in-comment-p sp-in-string-p))
|
||||
(sp-local-pair "fn " " end" :unless '(sp-in-comment-p sp-in-string-p)))))
|
||||
|
||||
|
||||
(def-package! alchemist
|
||||
|
@ -30,13 +27,13 @@
|
|||
|
||||
(def-package! alchemist-company
|
||||
:when (featurep! :completion company)
|
||||
:after elixir-mode
|
||||
:commands alchemist-company
|
||||
:init
|
||||
(set! :company-backend 'elixir-mode '(alchemist-company company-yasnippet))
|
||||
:config
|
||||
;; Alchemist doesn't use hook symbols to add these backends, so we have to use
|
||||
;; the entire closure to get rid of it.
|
||||
(let ((fn (byte-compile (lambda () (add-to-list (make-local-variable 'company-backends) 'alchemist-company)))))
|
||||
(remove-hook 'alchemist-mode-hook fn)
|
||||
(remove-hook 'alchemist-iex-mode-hook fn))
|
||||
|
||||
(set! :company-backend 'elixir-mode '(alchemist-company company-yasnippet)))
|
||||
(remove-hook 'alchemist-iex-mode-hook fn)))
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
;;; lang/elm/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! elm-mode
|
||||
:mode "\\.elm$"
|
||||
:config
|
||||
(load "elm-mode-autoloads" nil t)
|
||||
(add-hook! 'elm-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||
(set! :company-backend 'elm-mode '(company-elm))
|
||||
(set! :repl 'elm-mode #'run-elm-interactive)
|
||||
(setq elm-format-on-save t))
|
||||
;; `elm-mode'
|
||||
(setq elm-format-on-save t)
|
||||
|
||||
(add-hook! 'elm-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||
|
||||
(set! :company-backend 'elm-mode 'company-elm)
|
||||
(set! :repl 'elm-mode #'run-elm-interactive)
|
||||
|
||||
|
||||
(def-package! flycheck-elm
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
;;; lang/emacs-lisp/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(autoload 'overseer-test "overseer" nil t)
|
||||
|
||||
|
||||
;;
|
||||
;; Library
|
||||
;;
|
||||
|
||||
;;;###autoload
|
||||
(defun +emacs-lisp/repl ()
|
||||
"Open the Emacs Lisp REPL (`ielm')."
|
||||
|
|
|
@ -67,27 +67,17 @@
|
|||
;; Plugins
|
||||
;;
|
||||
|
||||
(def-package! auto-compile
|
||||
:commands auto-compile-on-save-mode
|
||||
:config
|
||||
(setq auto-compile-display-buffer nil
|
||||
auto-compile-use-mode-line nil))
|
||||
;; `auto-compile'
|
||||
(setq auto-compile-display-buffer nil
|
||||
auto-compile-use-mode-line nil)
|
||||
|
||||
|
||||
(def-package! highlight-quoted
|
||||
:commands highlight-quoted-mode)
|
||||
;; `slime'
|
||||
(setq inferior-lisp-program "clisp")
|
||||
(after! slime (require 'slime-fuzzy))
|
||||
|
||||
|
||||
(def-package! slime
|
||||
:defer t
|
||||
:config
|
||||
(setq inferior-lisp-program "clisp")
|
||||
(require 'slime-fuzzy))
|
||||
|
||||
|
||||
(def-package! macrostep
|
||||
:commands macrostep-expand
|
||||
:config
|
||||
(after! macrostep
|
||||
(map! :map macrostep-keymap
|
||||
:n "RET" #'macrostep-expand
|
||||
:n "e" #'macrostep-expand
|
||||
|
@ -104,6 +94,7 @@
|
|||
|
||||
:n "q" #'macrostep-collapse-all
|
||||
:n "C" #'macrostep-collapse-all)
|
||||
|
||||
;; `evil-normalize-keymaps' seems to be required for macrostep or it won't
|
||||
;; apply for the very first invocation
|
||||
(add-hook 'macrostep-mode-hook #'evil-normalize-keymaps))
|
||||
|
@ -111,18 +102,14 @@
|
|||
|
||||
(def-package! flycheck-cask
|
||||
:when (featurep! :feature syntax-checker)
|
||||
:commands flycheck-cask-setup
|
||||
:defer t
|
||||
:init
|
||||
(add-hook! 'emacs-lisp-mode-hook
|
||||
(add-hook 'flycheck-mode-hook #'flycheck-cask-setup nil t)))
|
||||
|
||||
|
||||
(def-package! overseer
|
||||
:commands overseer-test)
|
||||
|
||||
|
||||
;;
|
||||
;;
|
||||
;; Project modes
|
||||
;;
|
||||
|
||||
(def-project-mode! +emacs-lisp-ert-mode
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
;;; private/erlang/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! erlang
|
||||
;; customizations
|
||||
:mode "\\.erlang$"
|
||||
;; rebar files
|
||||
:mode "/rebar\\.config\\(?:\\.script\\)?$"
|
||||
;; erlang configs
|
||||
:mode "/\\(?:app\\|sys\\)\\.config$")
|
||||
(dolist (regexp '("\\.erlang$"
|
||||
;; rebar files
|
||||
"/rebar\\.config\\(?:\\.script\\)?$"
|
||||
;; erlang configs
|
||||
"/\\(?:app\\|sys\\)\\.config$"))
|
||||
(map-put auto-mode-alist regexp 'erlang-mode))
|
||||
|
||||
|
||||
(def-package! flycheck-rebar3
|
||||
:when (featurep! :feature syntax-checker)
|
||||
:after erlang
|
||||
:config
|
||||
(flycheck-rebar3-setup))
|
||||
:after flycheck
|
||||
:config (flycheck-rebar3-setup))
|
||||
|
||||
|
||||
;; Completion via Ivy
|
||||
(def-package! ivy-erlang-complete
|
||||
:when (featurep! :completion ivy)
|
||||
:hook (erlang-mode . ivy-erlang-complete-init)
|
||||
|
@ -23,7 +22,6 @@
|
|||
(add-hook 'after-save-hook #'ivy-erlang-complete-reparse nil t)))
|
||||
|
||||
|
||||
;; Completion via Company
|
||||
(def-package! company-erlang
|
||||
:when (featurep! :completion company)
|
||||
:hook (erlang-mode . company-erlang-init))
|
||||
|
|
|
@ -79,6 +79,6 @@
|
|||
:n "cn" #'ess-noweb-next-chunk))))
|
||||
|
||||
|
||||
(def-package! ess-smart-equals
|
||||
:hook ((ess-mode . ess-smart-equals-mode)
|
||||
(inferior-ess-mode . ess-smart-equals-mode)))
|
||||
;; `ess-smart-equals-mode'
|
||||
(add-hook! (ess-mode inferior-ess)
|
||||
#'ess-smart-equals-mode)
|
||||
|
|
|
@ -4,10 +4,7 @@
|
|||
;; Plugins
|
||||
;;
|
||||
|
||||
(def-package! go-mode
|
||||
:mode "\\.go$"
|
||||
:interpreter "go"
|
||||
:config
|
||||
(after! go-mode
|
||||
(set! :env "GOPATH" "GOROOT")
|
||||
(set! :repl 'go-mode #'gorepl-run)
|
||||
(set! :lookup 'go-mode
|
||||
|
@ -15,11 +12,12 @@
|
|||
:references #'go-guru-referrers
|
||||
:documentation #'godoc-at-point)
|
||||
|
||||
(when (executable-find "goimports")
|
||||
(setq gofmt-command "goimports"))
|
||||
(when-let* ((goimports (executable-find "goimports")))
|
||||
(setq gofmt-command goimports))
|
||||
|
||||
(setq gofmt-show-errors nil) ; Leave it to flycheck
|
||||
(add-hook 'go-mode-hook #'flycheck-mode)
|
||||
|
||||
(add-hook! 'go-mode-hook #'(flycheck-mode go-eldoc-setup))
|
||||
(add-hook! go-mode
|
||||
(add-hook 'before-save-hook #'gofmt-before-save nil t))
|
||||
|
||||
|
@ -70,25 +68,13 @@
|
|||
:v "r" #'go-play-region))
|
||||
|
||||
|
||||
(def-package! go-eldoc
|
||||
:hook (go-mode . go-eldoc-setup))
|
||||
|
||||
|
||||
(def-package! go-guru
|
||||
:commands (go-guru-describe go-guru-freevars go-guru-implements go-guru-peers
|
||||
go-guru-referrers go-guru-definition go-guru-pointsto
|
||||
go-guru-callstack go-guru-whicherrs go-guru-callers go-guru-callees
|
||||
go-guru-expand-region))
|
||||
|
||||
|
||||
(def-package! gorepl-mode
|
||||
:commands (gorepl-run gorepl-run-load-current-file))
|
||||
:commands gorepl-run-load-current-file)
|
||||
|
||||
|
||||
(def-package! company-go
|
||||
:when (featurep! :completion company)
|
||||
:init (setq command-go-gocode-command "gocode")
|
||||
:after go-mode
|
||||
:config
|
||||
(setq company-go-show-annotation t)
|
||||
(set! :company-backend 'go-mode '(company-go)))
|
||||
(set! :company-backend 'go-mode 'company-go)
|
||||
(setq company-go-show-annotation t))
|
||||
|
|
|
@ -8,18 +8,7 @@
|
|||
;; Common plugins
|
||||
;;
|
||||
|
||||
(def-package! haskell-mode
|
||||
:mode "\\.hs$"
|
||||
:mode ("\\.ghci$" . ghci-script-mode)
|
||||
:mode ("\\.cabal$" . haskell-cabal-mode)
|
||||
:interpreter (("runghc" . haskell-mode)
|
||||
("runhaskell" . haskell-mode))
|
||||
:config
|
||||
(load "haskell-mode-autoloads" nil t)
|
||||
(after! haskell-mode
|
||||
(set! :repl 'haskell-mode #'switch-to-haskell)
|
||||
(push ".hi" completion-ignored-extensions)
|
||||
|
||||
(autoload 'switch-to-haskell "inf-haskell" nil t)
|
||||
(after! inf-haskell
|
||||
(map! :map inferior-haskell-mode-map "ESC ESC" #'+popup/close)))
|
||||
(add-to-list 'completion-ignored-extensions ".hi"))
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
;;; lang/hy/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! hy-mode
|
||||
:mode "\\.hy$"
|
||||
:mode "\\.hy\\'"
|
||||
:interpreter "hy"
|
||||
:config
|
||||
(set! :repl 'hy-mode #'hy-shell-start-or-switch-to-shell)
|
||||
(set! :company-backend 'hy-mode '(company-hy)))
|
||||
(set! :company-backend 'hy-mode 'company-hy))
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
(add-hook 'java-mode-hook #'rainbow-delimiters-mode)
|
||||
|
||||
(cond ((featurep! +meghanada) (load! +meghanada))
|
||||
;; TODO lang/java +eclim
|
||||
;; ((featurep! +eclim) (load! +eclim))
|
||||
;; TODO lang/java +lsp (lsp-java?)
|
||||
;; ((featurep! +lsp) (load! +lsp))
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
(add-hook! 'js2-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||
|
||||
(set! :electric 'js2-mode :chars '(?\} ?\) ?. ?:))
|
||||
(set! :repl 'js2-mode #'+javascript/repl)
|
||||
|
||||
;; Conform switch-case indentation to js2 normal indent
|
||||
(defvaralias 'js-switch-indent-offset 'js2-basic-offset)
|
||||
|
@ -31,19 +32,10 @@
|
|||
|
||||
(map! :map js2-mode-map
|
||||
:localleader
|
||||
:n "S" #'+javascript/skewer-this-buffer))
|
||||
|
||||
|
||||
(def-package! typescript-mode
|
||||
:commands typescript-mode
|
||||
:config
|
||||
(add-hook! 'typescript-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||
(set! :electric 'typescript-mode
|
||||
:chars '(?\} ?\)) :words '("||" "&&")))
|
||||
:n "S" #'+javascript/skewer-this-buffer))
|
||||
|
||||
|
||||
(def-package! rjsx-mode
|
||||
:commands rjsx-mode
|
||||
:mode "components/.+\\.js$"
|
||||
:init
|
||||
(defun +javascript-jsx-file-p ()
|
||||
|
@ -54,8 +46,7 @@
|
|||
magic-mode-regexp-match-limit t)
|
||||
(progn (goto-char (match-beginning 1))
|
||||
(not (sp-point-in-string-or-comment)))))
|
||||
|
||||
(push '(+javascript-jsx-file-p . rjsx-mode) magic-mode-alist)
|
||||
(map-put magic-mode-alist #'+javascript-jsx-file-p 'rjsx-mode)
|
||||
:config
|
||||
(set! :electric 'rjsx-mode :chars '(?\} ?\) ?. ?>))
|
||||
(add-hook! 'rjsx-mode-hook
|
||||
|
@ -67,14 +58,19 @@
|
|||
;; However, the parser doesn't run immediately, so a fast typist can outrun
|
||||
;; it, causing issues, so force it to parse.
|
||||
(defun +javascript|reparse (n)
|
||||
;; if n != 1, then rjsx-maybe-reparse will be run elsewhere
|
||||
;; if n != 1, rjsx-electric-gt calls rjsx-maybe-reparse itself
|
||||
(if (= n 1) (rjsx-maybe-reparse)))
|
||||
(advice-add #'rjsx-electric-gt :before #'+javascript|reparse))
|
||||
|
||||
|
||||
(def-package! coffee-mode
|
||||
:defer t ; file extensions registered by autoloads file
|
||||
:init (setq coffee-indent-like-python-mode t))
|
||||
(after! typescript-mode
|
||||
(add-hook! 'typescript-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||
(set! :electric 'typescript-mode
|
||||
:chars '(?\} ?\)) :words '("||" "&&")))
|
||||
|
||||
|
||||
;; `coffee-mode'
|
||||
(setq coffee-indent-like-python-mode t)
|
||||
|
||||
|
||||
;;
|
||||
|
@ -86,6 +82,7 @@
|
|||
:hook (typescript-mode . tide-setup)
|
||||
:init
|
||||
(defun +javascript|init-tide-in-web-mode ()
|
||||
"Enable `tide-mode' if in a *.tsx file."
|
||||
(when (string= (file-name-extension (or buffer-file-name "")) "tsx")
|
||||
(tide-setup)))
|
||||
(add-hook 'web-mode-hook #'+javascript|init-tide-in-web-mode)
|
||||
|
@ -156,12 +153,6 @@
|
|||
:init (set! :lookup 'js2-mode :xref-backend #'xref-js2-xref-backend))
|
||||
|
||||
|
||||
(def-package! nodejs-repl
|
||||
:commands nodejs-repl
|
||||
:init
|
||||
(set! :repl 'js2-mode #'+javascript/repl))
|
||||
|
||||
|
||||
(def-package! js2-refactor
|
||||
:commands
|
||||
(js2r-extract-function js2r-extract-method js2r-introduce-parameter
|
||||
|
@ -174,51 +165,38 @@
|
|||
js2r-debug-this js2r-forward-slurp js2r-forward-barf))
|
||||
|
||||
|
||||
(def-package! web-beautify
|
||||
:commands web-beautify-js
|
||||
:init
|
||||
(map! :map* (json-mode js2-mode-map) :n "gQ" #'web-beautify-js))
|
||||
|
||||
|
||||
(def-package! eslintd-fix
|
||||
:commands (eslintd-fix-mode eslintd-fix)
|
||||
:commands eslintd-fix
|
||||
:config
|
||||
(defun +javascript|set-flycheck-executable-to-eslint ()
|
||||
(setq flycheck-javascript-eslint-executable eslintd-fix-executable))
|
||||
(add-hook 'eslintd-fix-mode-hook #'+javascript|set-flycheck-executable-to-eslint))
|
||||
|
||||
|
||||
(def-package! skewer-mode
|
||||
:commands (skewer-mode run-skewer)
|
||||
:config
|
||||
(map! :map skewer-mode-map
|
||||
;; `skewer-mode'
|
||||
(map! (:after skewer-mode
|
||||
:map skewer-mode-map
|
||||
:localleader
|
||||
:n "sE" #'skewer-eval-last-expression
|
||||
:n "se" #'skewer-eval-defun
|
||||
:n "sf" #'skewer-load-buffer))
|
||||
:n "sf" #'skewer-load-buffer)
|
||||
|
||||
|
||||
(def-package! skewer-css ; in skewer-mode
|
||||
:commands skewer-css-mode
|
||||
:config
|
||||
(map! :map skewer-css-mode-map
|
||||
(:after skewer-css
|
||||
:map skewer-css-mode-map
|
||||
:localleader
|
||||
:n "se" #'skewer-css-eval-current-declaration
|
||||
:n "sr" #'skewer-css-eval-current-rule
|
||||
:n "sb" #'skewer-css-eval-buffer
|
||||
:n "sc" #'skewer-css-clear-all))
|
||||
:n "sc" #'skewer-css-clear-all)
|
||||
|
||||
|
||||
(def-package! skewer-html ; in skewer-mode
|
||||
:commands skewer-html-mode
|
||||
:config
|
||||
(map! :map skewer-html-mode-map
|
||||
(:after skewer-html
|
||||
:map skewer-html-mode-map
|
||||
:localleader
|
||||
:n "se" #'skewer-html-eval-tag))
|
||||
|
||||
|
||||
(def-package! skewer-repl
|
||||
:commands skewer-repl)
|
||||
;; `web-beautify'
|
||||
(map! :map* (json-mode-map js2-mode-map) :n "gQ" #'web-beautify-js)
|
||||
|
||||
|
||||
;;
|
||||
|
@ -226,7 +204,7 @@
|
|||
;;
|
||||
|
||||
(def-project-mode! +javascript-screeps-mode
|
||||
:match "/screeps\\(-ai\\)?/.+$"
|
||||
:match "/screeps\\(?:-ai\\)?/.+$"
|
||||
:modes (+javascript-npm-mode)
|
||||
:add-hooks (+javascript|init-screeps-mode)
|
||||
:on-load (load! +screeps))
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
;;; lang/julia/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(use-package julia-mode
|
||||
:mode "\\.jl$"
|
||||
:interpreter "julia"
|
||||
:config
|
||||
(set! :repl 'julia-mode #'+julia/repl)
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
"Sets the directory where AUCTeX will search for PDFs associated to BibTeX references."
|
||||
`(setq +latex-bibtex-dir ,dir))
|
||||
|
||||
;; sp's default latex rules are obnoxious, so disable them
|
||||
(provide 'smartparens-latex)
|
||||
|
||||
|
||||
;;
|
||||
;; Plugins
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
;;; lang/ledger/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! ledger-mode
|
||||
:mode "\\.ledger$"
|
||||
:config (setq ledger-clear-whole-transactions 1))
|
||||
;; `ledger-mode'
|
||||
(setq ledger-clear-whole-transactions 1)
|
||||
|
||||
|
||||
(def-package! evil-ledger
|
||||
|
@ -12,4 +11,5 @@
|
|||
|
||||
(def-package! flycheck-ledger
|
||||
:when (featurep! :feature syntax-checker)
|
||||
:init (add-hook 'ledger-mode-hook #'flycheck-mode))
|
||||
:after ledger-mode
|
||||
:config (add-hook 'ledger-mode-hook #'flycheck-mode))
|
||||
|
|
|
@ -1,18 +1,12 @@
|
|||
;;; lang/lua/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! lua-mode
|
||||
:mode "\\.lua$"
|
||||
:interpreter "lua"
|
||||
:init
|
||||
;; sp's default lua rules are obnoxious, so disable them. Use snippets
|
||||
;; instead!
|
||||
(provide 'smartparens-lua)
|
||||
:config
|
||||
(after! lua-mode
|
||||
(add-hook 'lua-mode-hook #'flycheck-mode)
|
||||
|
||||
(set! :lookup 'lua-mode :documentation 'lua-search-documentation)
|
||||
(set! :electric 'lua-mode :words '("else" "end"))
|
||||
(set! :repl 'lua-mode #'+lua/repl)
|
||||
(set! :company-backend 'lua-mode '(company-lua company-yasnippet))
|
||||
|
||||
(def-menu! +lua/build-menu
|
||||
"Build/compilation commands for `lua-mode' buffers."
|
||||
|
@ -24,15 +18,8 @@
|
|||
:n "b" #'+lua/build-menu))
|
||||
|
||||
|
||||
(def-package! company-lua
|
||||
:after (:all company lua-mode)
|
||||
:config
|
||||
(set! :company-backend 'lua-mode '(company-lua company-yasnippet)))
|
||||
|
||||
|
||||
(def-package! moonscript
|
||||
:mode ("\\.moon$" . moonscript-mode)
|
||||
:config (defvaralias 'moonscript-indent-offset 'tab-width))
|
||||
(after! moonscript
|
||||
(defvaralias 'moonscript-indent-offset 'tab-width))
|
||||
|
||||
|
||||
;;
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
;;; lang/markdown/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! markdown-mode
|
||||
:mode "/README$"
|
||||
:mode ("/README\\.md$" . gfm-mode)
|
||||
:mode "\\.m\\(?:d\\|arkdown\\)$"
|
||||
:mode ("/README\\(?:\\.\\(?:markdown\\|md\\)\\)?\\'" . gfm-mode)
|
||||
:init
|
||||
(setq markdown-enable-wiki-links t
|
||||
markdown-enable-math t
|
||||
|
|
|
@ -1,32 +1,20 @@
|
|||
;;; lang/nim/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! nim-mode
|
||||
:mode "\\.nim\\'"
|
||||
:mode ("\\.nim\\(ble\\|s\\)\\'" . nimscript-mode)
|
||||
:config
|
||||
(load "nim-mode-autoloads" nil t)
|
||||
;; NOTE nim-mode autoloads sets up xref
|
||||
|
||||
(after! nim-mode
|
||||
(defun +nim|init-nimsuggest-mode ()
|
||||
"Conditionally load `nimsuggest-mode', instead of clumsily erroring out if
|
||||
nimsuggest isn't installed."
|
||||
(when (executable-find "nimsuggest")
|
||||
(when (file-executable-p nimsuggest-path)
|
||||
(nimsuggest-mode)))
|
||||
(add-hook 'nim-mode-hook #'+nim|init-nimsuggest-mode)
|
||||
|
||||
(map! :map nim-mode-map
|
||||
:localleader
|
||||
:n "b" #'+nim/build-menu)
|
||||
|
||||
(def-menu! +nim/build-menu
|
||||
"Building commands for `nim-mode' buffers."
|
||||
'(("Build & run" :exec nim-compile))
|
||||
:prompt "Build"))
|
||||
:n "b" #'nim-compile))
|
||||
|
||||
|
||||
(def-package! flycheck-nim
|
||||
:when (featurep! :feature syntax-checker)
|
||||
:after nim-mode
|
||||
:config
|
||||
(add-hook 'nimsuggest-mode-hook #'flycheck-mode))
|
||||
:config (add-hook 'nimsuggest-mode-hook #'flycheck-mode))
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
;;; lang/nix/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! nix-mode
|
||||
:mode "\\.nix$")
|
|
@ -1,9 +1,13 @@
|
|||
;;; lang/ocaml/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! tuareg
|
||||
:mode ("\\.ml[4ilpy]?$" . tuareg-mode))
|
||||
:mode ("\\.ml[4ilpy]?\\'" . tuareg-mode))
|
||||
|
||||
|
||||
(def-package! merlin
|
||||
:after tuareg
|
||||
:hook (tuareg-mode . merlin-mode))
|
||||
:hook (tuareg-mode . merlin-mode)
|
||||
:config
|
||||
(set! :company-backend 'tuareg-mode 'merlin-compand-backend)
|
||||
(after! company
|
||||
(remove-hook 'company-backends 'merlin-compand-backend)))
|
||||
|
|
|
@ -16,12 +16,8 @@
|
|||
;; Plugins
|
||||
;;
|
||||
|
||||
(def-package! toc-org
|
||||
:commands toc-org-enable
|
||||
:config (setq toc-org-hrefify-default "org"))
|
||||
|
||||
(def-package! org-bullets
|
||||
:commands org-bullets-mode)
|
||||
;; `toc-org'
|
||||
(setq toc-org-hrefify-default "org")
|
||||
|
||||
(def-package! evil-org
|
||||
:when (featurep! :feature evil)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;;; lang/plantuml/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! plantuml-mode
|
||||
:mode "\\.p\\(?:lant\\)?uml$"
|
||||
:defer t
|
||||
:init
|
||||
(setq plantuml-jar-path (concat doom-etc-dir "plantuml.jar")
|
||||
org-plantuml-jar-path plantuml-jar-path)
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
;;; lang/purescript/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! purescript-mode
|
||||
:mode "\\.purs$"
|
||||
:config
|
||||
(after! purescript-mode
|
||||
(add-hook! 'purescript-mode-hook
|
||||
#'(flycheck-mode purescript-indentation-mode rainbow-delimiters-mode)))
|
||||
#'(flycheck-mode
|
||||
purescript-indentation-mode
|
||||
rainbow-delimiters-mode)))
|
||||
|
||||
|
||||
;; (def-package! flycheck-purescript
|
||||
;; :after purescript-mode
|
||||
;; :config
|
||||
;; (add-hook 'flycheck-mode-hook #'flycheck-purescript-setup))
|
||||
|
||||
|
||||
(def-package! psc-ide
|
||||
:hook (purescript-mode . psc-ide-mode))
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ is loaded.")
|
|||
;;
|
||||
|
||||
(def-package! python
|
||||
:commands python-mode
|
||||
:defer t
|
||||
:init
|
||||
(setq python-environment-directory doom-cache-dir
|
||||
python-indent-guess-indent-offset-verbose nil
|
||||
|
@ -73,7 +73,6 @@ environment variables."
|
|||
|
||||
|
||||
(def-package! anaconda-mode
|
||||
:after python
|
||||
:hook python-mode
|
||||
:init
|
||||
(setq anaconda-mode-installation-directory (concat doom-etc-dir "anaconda/")
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
;;; lang/rest/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! restclient
|
||||
:commands restclient-mode
|
||||
:mode ("\\.http$" . restclient-mode)
|
||||
:mode ("\\.http\\'" . restclient-mode)
|
||||
:config
|
||||
(set! :popup "^\\*HTTP Response" '((size . 0.4)) '((quit . other)))
|
||||
(map! :mode restclient-mode
|
||||
|
@ -16,4 +15,4 @@
|
|||
(def-package! company-restclient
|
||||
:when (featurep! :completion company)
|
||||
:after restclient
|
||||
:config (set! :company-backend 'restclient-mode '(company-restclient)))
|
||||
:config (set! :company-backend 'restclient-mode 'company-restclient))
|
||||
|
|
|
@ -12,15 +12,12 @@
|
|||
;;
|
||||
|
||||
(def-package! ruby-mode
|
||||
:mode "\\.rb$"
|
||||
:mode "\\.rake$"
|
||||
:mode "\\.gemspec$"
|
||||
:mode "\\.\\(?:pry\\|irb\\)rc$"
|
||||
:mode "/\\(?:Gem\\|Cap\\|Vagrant\\|Rake\\|Pod\\|Puppet\\|Berks\\)file$"
|
||||
:interpreter "ruby"
|
||||
:mode "\\.\\(?:pry\\|irb\\)rc\\'"
|
||||
:config
|
||||
(set! :company-backend 'ruby-mode '(company-dabbrev-code))
|
||||
(set! :company-backend 'ruby-mode 'company-dabbrev-code)
|
||||
(set! :electric 'ruby-mode :words '("else" "end" "elseif"))
|
||||
(set! :env "RBENV_ROOT")
|
||||
(set! :repl 'ruby-mode #'inf-ruby) ; `inf-ruby'
|
||||
(setq ruby-deep-indent-paren t)
|
||||
;; Don't interfere with my custom RET behavior
|
||||
(define-key ruby-mode-map [?\n] nil)
|
||||
|
@ -74,10 +71,8 @@ environment variables."
|
|||
|
||||
|
||||
(def-package! rspec-mode
|
||||
:mode ("/\\.rspec$" . text-mode)
|
||||
:mode ("/\\.rspec\\'" . text-mode)
|
||||
:init
|
||||
(associate! rspec-mode :match "/\\.rspec$")
|
||||
(associate! rspec-mode :modes (ruby-mode yaml-mode) :files ("/spec/"))
|
||||
(defvar rspec-mode-verifiable-map (make-sparse-keymap))
|
||||
(defvar evilmi-ruby-match-tags
|
||||
'((("unless" "if") ("elsif" "else") "end")
|
||||
|
@ -96,18 +91,12 @@ environment variables."
|
|||
:n "v" #'rspec-verify))
|
||||
|
||||
|
||||
(def-package! inf-ruby
|
||||
:commands (inf-ruby inf-ruby-console-auto)
|
||||
:init (set! :repl 'ruby-mode 'inf-ruby))
|
||||
|
||||
|
||||
(def-package! company-inf-ruby
|
||||
:when (featurep! :completion company)
|
||||
:after inf-ruby
|
||||
:config (set! :company-backend 'inf-ruby-mode '(company-inf-ruby)))
|
||||
:config (set! :company-backend 'inf-ruby-mode 'company-inf-ruby))
|
||||
|
||||
|
||||
(def-package! rake
|
||||
:commands (rake rake-find-task rake-rerun)
|
||||
:config (setq rake-completion-system 'default))
|
||||
;; `rake'
|
||||
(setq rake-completion-system 'default)
|
||||
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
;;; lang/rust/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;
|
||||
;; Plugins
|
||||
;;
|
||||
|
||||
(def-package! rust-mode
|
||||
:mode "\\.rs$"
|
||||
:config
|
||||
(after! rust-mode
|
||||
(set! :env "RUST_SRC_PATH")
|
||||
(set! :docset 'rust-mode "Rust")
|
||||
(setq rust-indent-method-chain t)
|
||||
|
@ -14,6 +8,7 @@
|
|||
(map! :map rust-mode-map
|
||||
:localleader
|
||||
:n "b" #'+rust/build-menu)
|
||||
|
||||
(def-menu! +rust/build-menu
|
||||
"TODO"
|
||||
'(("cargo run" :exec "cargo run --color always")
|
||||
|
@ -40,6 +35,5 @@
|
|||
(def-package! flycheck-rust
|
||||
:when (featurep! :feature syntax-checker)
|
||||
:after rust-mode
|
||||
:hook (flycheck-mode . flycheck-rust-setup)
|
||||
:init (add-hook 'rust-mode-hook #'flycheck-mode))
|
||||
:config (add-hook! 'rust-mode-hook #'(flycheck-mode flycheck-rust-setup)))
|
||||
|
||||
|
|
|
@ -1,26 +1,24 @@
|
|||
;;; lang/scala/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(def-package! scala-mode
|
||||
:mode "\\.s\\(?:cala\\|bt\\)$"
|
||||
:config (setq scala-indent:align-parameters t))
|
||||
(after! scala-mode
|
||||
(setq scala-indent:align-parameters t)
|
||||
(add-to-list 'dtrt-indent-hook-mapping-list '(scala-mode c/c++/java scala-indent:step)))
|
||||
|
||||
|
||||
(def-package! sbt-mode :after scala-mode)
|
||||
|
||||
|
||||
(def-package! ensime
|
||||
:commands (ensime ensime-scala-mode-hook)
|
||||
:hook (scala-mode . ensime-mode)
|
||||
:config
|
||||
(set! :company-backend 'scala-mode '(ensime-company company-yasnippet))
|
||||
|
||||
(after! ensime
|
||||
(setq ensime-startup-snapshot-notification nil
|
||||
ensime-startup-notification nil
|
||||
ensime-eldoc-hints 'all
|
||||
;; let DOOM handle company setup
|
||||
ensime-completion-style nil)
|
||||
|
||||
(set! :company-backend 'scala-mode '(ensime-company company-yasnippet))
|
||||
|
||||
;; Fix void-variable imenu-auto-rescan error caused by `ensime--setup-imenu'
|
||||
;; trying to make imenu variables buffer local before imenu is loaded.
|
||||
(require 'imenu))
|
||||
|
||||
|
||||
(def-package! sbt-mode
|
||||
:after scala-mode
|
||||
:config (set! :repl 'scala-mode #'run-scala))
|
||||
|
|
|
@ -12,21 +12,19 @@
|
|||
;;
|
||||
|
||||
(def-package! sh-script ; built-in
|
||||
:mode ("\\.zsh$" . sh-mode)
|
||||
:mode ("\\.zunit$" . sh-mode)
|
||||
:mode ("/bspwmrc$" . sh-mode)
|
||||
:init
|
||||
(add-hook! sh-mode #'(flycheck-mode highlight-numbers-mode))
|
||||
:mode ("\\.zunit\\'" . sh-mode)
|
||||
:mode ("/bspwmrc\\'" . sh-mode)
|
||||
:config
|
||||
(add-hook! sh-mode #'(flycheck-mode highlight-numbers-mode))
|
||||
(set! :electric 'sh-mode :words '("else" "elif" "fi" "done" "then" "do" "esac" ";;"))
|
||||
(set! :repl 'sh-mode #'+sh/repl)
|
||||
|
||||
(setq sh-indent-after-continuation 'always)
|
||||
|
||||
;; recognize function names with dashes in them
|
||||
(push '((sh . ((nil "^\\s-*function\\s-+\\([[:alpha:]_-][[:alnum:]_-]*\\)\\s-*\\(?:()\\)?" 1)
|
||||
(nil "^\\s-*\\([[:alpha:]_-][[:alnum:]_-]*\\)\\s-*()" 1))))
|
||||
sh-imenu-generic-expression)
|
||||
(map-put sh-imenu-generic-expression
|
||||
'sh '((nil "^\\s-*function\\s-+\\([[:alpha:]_-][[:alnum:]_-]*\\)\\s-*\\(?:()\\)?" 1)
|
||||
(nil "^\\s-*\\([[:alpha:]_-][[:alnum:]_-]*\\)\\s-*()" 1)))
|
||||
|
||||
;; `sh-set-shell' is chatty about setting up indentation rules
|
||||
(advice-add #'sh-set-shell :around #'doom*shut-up)
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
;;; lang/swift/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; TODO Set up emacs task runners for fruitstrap
|
||||
;; `swift-mode'
|
||||
(set! :repl 'swift-mode #'run-swift)
|
||||
|
||||
(def-package! swift-mode
|
||||
:mode "\\.swift$"
|
||||
:config
|
||||
(add-hook 'swift-mode-hook #'flycheck-mode)
|
||||
(set! :repl 'swift-mode #'swift-mode-run-repl) ; TODO test this
|
||||
(push 'swift flycheck-checkers))
|
||||
|
||||
(def-package! flycheck-swift
|
||||
:when (featurep! :feature syntax-checker)
|
||||
:after swift-mode
|
||||
:init (add-hook 'swift-mode-hook #'flycheck-mode)
|
||||
:config (flycheck-swift-setup))
|
||||
|
||||
|
||||
(def-package! company-sourcekit
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
|
||||
(when (featurep! :completion company)
|
||||
(package! company-sourcekit))
|
||||
|
||||
(when (featurep! :feature syntax-checker)
|
||||
(package! flycheck-swift))
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
;;; lang/web/+css.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; css-mode hooks apply to scss and less-css modes
|
||||
(add-hook 'css-mode-hook #'rainbow-delimiters-mode)
|
||||
(add-hook! (css-mode sass-mode stylus-mode)
|
||||
#'(yas-minor-mode-on flycheck-mode highlight-numbers-mode))
|
||||
|
||||
;; An improved newline+continue comment function
|
||||
(setq-hook! css-mode comment-indent-function #'+css/comment-indent-new-line)
|
||||
|
||||
|
@ -13,29 +8,36 @@
|
|||
(sp-local-pair "/*" "*/" :post-handlers '(("||\n[i]" "RET") ("| " "SPC")))))
|
||||
|
||||
(map! :map* (css-mode-map scss-mode-map less-css-mode-map)
|
||||
:n "M-R" #'+css/web-refresh-browser
|
||||
(:localleader
|
||||
:n "rb" #'+css/toggle-inline-or-block))
|
||||
:localleader
|
||||
:n "rb" #'+css/toggle-inline-or-block)
|
||||
|
||||
|
||||
;;
|
||||
;; Packages
|
||||
;;
|
||||
|
||||
;; css-mode hooks apply to scss and less-css modes
|
||||
(add-hook 'css-mode-hook #'rainbow-delimiters-mode)
|
||||
(add-hook! (css-mode sass-mode stylus-mode)
|
||||
#'(yas-minor-mode-on
|
||||
flycheck-mode
|
||||
highlight-numbers-mode
|
||||
rainbow-mode))
|
||||
|
||||
|
||||
(def-package! counsel-css
|
||||
:when (featurep! :completion ivy)
|
||||
:commands (counsel-css counsel-css-imenu-setup)
|
||||
:commands counsel-css
|
||||
:hook (css-mode . counsel-css-imenu-setup)
|
||||
:init
|
||||
(map! :map* (css-mode-map scss-mode-map less-css-mode-map)
|
||||
:localleader :n ";" #'counsel-css))
|
||||
|
||||
|
||||
(def-package! rainbow-mode
|
||||
:hook (css-mode sass-mode))
|
||||
|
||||
|
||||
(after! css-mode ; contains both css-mode & scss-mode
|
||||
(def-package! css-mode ; built-in
|
||||
:defer t
|
||||
:config
|
||||
;; contains both css-mode & scss-mode
|
||||
(set! :docset 'css-mode "CSS")
|
||||
(set! :docset 'scss-mode "Sass")
|
||||
(unless EMACS26+
|
||||
|
@ -45,7 +47,7 @@
|
|||
|
||||
|
||||
(def-package! sass-mode
|
||||
:commands sass-mode
|
||||
:defer t
|
||||
:config
|
||||
(set! :docset 'sass-mode "Sass")
|
||||
(set! :company-backend 'sass-mode 'company-css)
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
:mode "wp-content/themes/.+/.+\\.php$"
|
||||
:mode "templates/.+\\.php$"
|
||||
:config
|
||||
(set! :company-backend 'web-mode '(company-web-html company-yasnippet))
|
||||
(setq web-mode-enable-html-entities-fontification t
|
||||
web-mode-enable-auto-quoting nil)
|
||||
|
||||
|
@ -91,10 +90,7 @@
|
|||
:nv "[T" #'web-mode-element-parent))
|
||||
|
||||
|
||||
(def-package! company-web
|
||||
:when (featurep! :completion company)
|
||||
:after web-mode)
|
||||
|
||||
|
||||
;; `pug-mode'
|
||||
(set! :company-backend 'pug-mode '(company-yasnippet))
|
||||
;;
|
||||
(set! :company-backend 'pug-mode 'company-web-jade)
|
||||
(set! :company-backend 'web-mode 'company-web-html)
|
||||
(set! :company-backend 'slim-mode 'company-web-slim)
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
(package! haml-mode)
|
||||
(package! pug-mode)
|
||||
(package! slim-mode)
|
||||
(package! web-mode)
|
||||
(when (featurep! :completion company)
|
||||
(package! company-web))
|
||||
(when (package! web-mode)
|
||||
(when (featurep! :completion company)
|
||||
(package! company-web)))
|
||||
|
||||
;; +css.el
|
||||
(package! less-css-mode)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue