Merge branch 'develop' into solidity-mode
This commit is contained in:
commit
a814c833a2
146 changed files with 3283 additions and 2560 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)
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
(interactive)
|
||||
(unless (memq major-mode '(c-mode c++-mode objc-mode))
|
||||
(user-error "Not a C/C++/ObjC buffer"))
|
||||
(unless (doom-project-has! "compile_commands.json")
|
||||
(unless (project-file-exists-p! "compile_commands.json")
|
||||
(user-error "No compile_commands.json file"))
|
||||
;; first rtag
|
||||
(when (and (featurep 'rtags)
|
||||
|
@ -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,41 @@
|
|||
;;; 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
|
||||
;;
|
||||
|
||||
;; `csv-mode'
|
||||
(map! :after csv-mode
|
||||
:map csv-mode-map
|
||||
(:localleader
|
||||
:desc "Align fields" :nvm "a" #'csv-align-fields
|
||||
:desc "Unalign fields" :nvm "u" #'csv-unalign-fields
|
||||
:desc "Sort fields" :nvm "s" #'csv-sort-fields
|
||||
:desc "Sort fields (n)" :nvm "S" #'csv-sort-numeric-fields
|
||||
:desc "Kill fields" :nvm "k" #'csv-kill-fields
|
||||
:desc "Transpose fields" :nvm "t" #'csv-transpose))
|
||||
|
||||
(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\\'")
|
||||
|
||||
|
||||
;;
|
||||
|
|
|
@ -7,4 +7,4 @@
|
|||
(package! toml-mode)
|
||||
(package! vimrc-mode)
|
||||
(package! yaml-mode)
|
||||
|
||||
(package! csv-mode)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -24,9 +24,9 @@
|
|||
|
||||
;;;###autoload
|
||||
(defun +java|android-mode-maybe ()
|
||||
(when (doom-project-has! (or "local.properties"
|
||||
"AndroidManifest.xml"
|
||||
"src/main/AndroidManifest.xml"))
|
||||
(when (project-file-exists-p! (or "local.properties"
|
||||
"AndroidManifest.xml"
|
||||
"src/main/AndroidManifest.xml"))
|
||||
(android-mode +1)
|
||||
(doom/set-build-command "./gradlew %s" "build.gradle")))
|
||||
|
||||
|
|
|
@ -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 != 0, then rjsx-maybe-reparse will be run elsewhere
|
||||
(if (= n 0) (rjsx-maybe-reparse)))
|
||||
;; 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,21 +18,12 @@
|
|||
"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
|
||||
;;
|
||||
|
||||
(def-package! tex-site
|
||||
:init
|
||||
;; Manually load the AUCTEX autoloads. This is normally done by
|
||||
;; package-initialize, ... which we do not use.
|
||||
(load "auctex.el" nil t t)
|
||||
(load "auctex-autoloads.el" nil t t)
|
||||
:config
|
||||
(after! tex-site
|
||||
;; Set some varibles to fontify common LaTeX commands.
|
||||
(load! +fontification)
|
||||
(setq ;; Enable parse on load.
|
||||
|
@ -182,7 +173,6 @@
|
|||
|
||||
(def-package! bibtex
|
||||
:defer t
|
||||
:mode ("\\.bib\\'" . bibtex-mode)
|
||||
:config
|
||||
(setq bibtex-dialect 'biblatex
|
||||
bibtex-align-at-equal-sign t
|
||||
|
|
|
@ -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)
|
||||
|
@ -126,7 +122,13 @@ unfold to point on startup."
|
|||
org-agenda-dim-blocked-tasks nil
|
||||
org-agenda-files (ignore-errors (directory-files +org-dir t "\\.org$" t))
|
||||
org-agenda-inhibit-startup t
|
||||
org-agenda-skip-unavailable-files t))
|
||||
org-agenda-skip-unavailable-files t)
|
||||
;; Move the agenda to show the previous 3 days and the next 7 days for a bit
|
||||
;; better context instead of just the current week which is a bit confusing
|
||||
;; on, for example, a sunday
|
||||
(setq org-agenda-span 10
|
||||
org-agenda-start-on-weekday nil
|
||||
org-agenda-start-day "-3d"))
|
||||
|
||||
(defun +org|setup-ui ()
|
||||
"Configures the UI for `org-mode'."
|
||||
|
@ -278,12 +280,14 @@ between the two."
|
|||
:ni [M-return] (λ! (+org/insert-item 'below))
|
||||
:ni [S-M-return] (λ! (+org/insert-item 'above))
|
||||
;; more org-ish vim motion keys
|
||||
:n "]]" (λ! (org-forward-heading-same-level nil) (org-beginning-of-line))
|
||||
:n "[[" (λ! (org-backward-heading-same-level nil) (org-beginning-of-line))
|
||||
:n "]l" #'org-next-link
|
||||
:n "[l" #'org-previous-link
|
||||
:n "]s" #'org-babel-next-src-block
|
||||
:n "[s" #'org-babel-previous-src-block
|
||||
:m "]]" (λ! (org-forward-heading-same-level nil) (org-beginning-of-line))
|
||||
:m "[[" (λ! (org-backward-heading-same-level nil) (org-beginning-of-line))
|
||||
:m "]h" #'org-next-visible-heading
|
||||
:m "[h" #'org-previous-visible-heading
|
||||
:m "]l" #'org-next-link
|
||||
:m "[l" #'org-previous-link
|
||||
:m "]s" #'org-babel-next-src-block
|
||||
:m "[s" #'org-babel-previous-src-block
|
||||
:m "^" #'evil-org-beginning-of-line
|
||||
:m "0" (λ! (let ((visual-line-mode)) (org-beginning-of-line)))
|
||||
:n "gQ" #'org-fill-paragraph
|
||||
|
@ -348,10 +352,11 @@ between the two."
|
|||
(def-package! org-clock
|
||||
:commands org-clock-save
|
||||
:hook (org-mode . org-clock-load)
|
||||
:config
|
||||
:init
|
||||
(setq org-clock-persist 'history
|
||||
org-clock-persist-file (concat doom-etc-dir "org-clock-save.el"))
|
||||
(add-hook 'kill-emacs-hook 'org-clock-save))
|
||||
:config
|
||||
(add-hook 'kill-emacs-hook #'org-clock-save))
|
||||
|
||||
;;
|
||||
(when (featurep 'org)
|
||||
|
|
|
@ -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)
|
||||
|
@ -52,7 +50,7 @@
|
|||
(string-match-p "\\.zsh\\'" buffer-file-name))
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(looking-at-p "^#!.+zsh[$\\s-]")))
|
||||
(looking-at-p "^#!.+/zsh[$ ]")))
|
||||
(sh-set-shell "zsh")))
|
||||
(add-hook 'sh-mode-hook #'+sh|detect-zsh))
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
8
modules/lang/web/doctor.el
Normal file
8
modules/lang/web/doctor.el
Normal file
|
@ -0,0 +1,8 @@
|
|||
;;; lang/web/doctor.el -*- lexical-binding: t; -*-
|
||||
|
||||
(unless (executable-find "js-beautify")
|
||||
(warn! "Couldn't find js-beautify. Code formatting in JS/CSS/HTML modes will not work."))
|
||||
|
||||
(unless (executable-find "stylelint")
|
||||
(warn! "Couldn't find stylelint. Linting for CSS modes will not work."))
|
||||
|
|
@ -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