2018-02-10 02:11:42 -05:00
|
|
|
;;; lang/ess/config.el -*- lexical-binding: t; -*-
|
|
|
|
|
2019-10-19 15:25:29 -04:00
|
|
|
(after! projectile
|
|
|
|
(add-to-list 'projectile-project-root-files "DESCRIPTION"))
|
|
|
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
;;; Packages
|
|
|
|
|
2019-07-23 12:44:03 +02:00
|
|
|
(use-package! ess
|
2019-09-22 11:59:53 -04:00
|
|
|
:commands stata SAS
|
2018-02-10 02:11:42 -05:00
|
|
|
:init
|
2022-08-12 20:29:19 +02:00
|
|
|
(unless (modulep! :lang julia)
|
2018-06-23 16:48:58 +02:00
|
|
|
(add-to-list 'auto-mode-alist '("\\.jl\\'" . ess-julia-mode)))
|
2018-02-06 02:18:49 +08:00
|
|
|
:config
|
2018-02-18 22:44:57 -05:00
|
|
|
(setq ess-offset-continued 'straight
|
2022-08-17 01:16:08 +01:00
|
|
|
ess-use-flymake (or (not (modulep! :checkers syntax))
|
|
|
|
(modulep! :checkers syntax +flymake))
|
2018-02-06 02:18:49 +08:00
|
|
|
ess-nuke-trailing-whitespace-p t
|
2019-12-23 16:32:45 -05:00
|
|
|
ess-style 'DEFAULT
|
2019-02-15 19:38:49 -05:00
|
|
|
ess-history-directory (expand-file-name "ess-history/" doom-cache-dir))
|
2018-09-10 22:39:11 -04:00
|
|
|
|
2020-02-01 17:06:15 +09:00
|
|
|
(set-docsets! 'ess-r-mode "R")
|
2022-08-12 20:29:19 +02:00
|
|
|
(when (modulep! +lsp)
|
2022-03-24 02:19:52 +01:00
|
|
|
(add-hook 'ess-r-mode-local-vars-hook #'lsp! 'append))
|
2020-02-01 17:06:15 +09:00
|
|
|
|
2022-12-04 03:10:55 +00:00
|
|
|
(when (modulep! +tree-sitter)
|
|
|
|
(add-hook 'ess-r-mode-local-vars-hook #'tree-sitter! 'append))
|
|
|
|
|
2019-10-23 21:39:19 -04:00
|
|
|
(set-repl-handler! 'ess-r-mode #'+ess/open-r-repl)
|
|
|
|
(set-repl-handler! 'ess-julia-mode #'+ess/open-julia-repl)
|
2020-02-02 12:02:24 +09:00
|
|
|
(set-lookup-handlers! '(ess-r-mode ess-julia-mode)
|
2019-02-15 19:38:49 -05:00
|
|
|
:documentation #'ess-display-help-on-object)
|
2018-09-10 22:36:37 -04:00
|
|
|
|
2019-02-15 20:32:37 -05:00
|
|
|
(set-evil-initial-state! 'ess-r-help-mode 'normal)
|
|
|
|
(set-eval-handler! 'ess-help-mode #'ess-eval-region-and-go)
|
|
|
|
(set-eval-handler! 'ess-r-help-mode #'ess-eval-region-and-go)
|
|
|
|
|
2020-08-20 02:12:23 -04:00
|
|
|
(set-company-backend! 'ess-r-mode
|
|
|
|
'(company-R-args company-R-objects company-dabbrev-code :separate))
|
|
|
|
|
2019-12-27 13:32:24 -05:00
|
|
|
(setq-hook! 'ess-r-mode-hook
|
|
|
|
;; HACK Fix #2233: Doom continues comments on RET, but ess-r-mode doesn't
|
|
|
|
;; have a sane `comment-line-break-function', so...
|
|
|
|
comment-line-break-function nil)
|
|
|
|
|
2018-12-23 23:54:27 -05:00
|
|
|
(map! (:after ess-help
|
2020-02-08 18:13:00 -05:00
|
|
|
(:map ess-help-mode-map
|
|
|
|
:n "q" #'kill-current-buffer
|
|
|
|
:n "Q" #'ess-kill-buffer-and-go
|
|
|
|
:n "K" #'ess-display-help-on-object
|
|
|
|
:n "go" #'ess-display-help-in-browser
|
|
|
|
:n "gO" #'ess-display-help-apropos
|
|
|
|
:n "gv" #'ess-display-vignettes
|
|
|
|
:m "]]" #'ess-skip-to-next-section
|
|
|
|
:m "[[" #'ess-skip-to-previous-section)
|
|
|
|
(:map ess-doc-map
|
|
|
|
"h" #'ess-display-help-on-object
|
|
|
|
"p" #'ess-R-dv-pprint
|
|
|
|
"t" #'ess-R-dv-ctable
|
|
|
|
[up] #'comint-next-input
|
|
|
|
[down] #'comint-previous-input
|
|
|
|
[C-return] #'ess-eval-line))
|
2018-12-23 23:54:27 -05:00
|
|
|
|
|
|
|
:map ess-mode-map
|
2020-02-08 18:13:00 -05:00
|
|
|
:n [C-return] #'ess-eval-line
|
|
|
|
:localleader
|
2018-12-23 23:54:27 -05:00
|
|
|
"," #'ess-eval-region-or-function-or-paragraph-and-step
|
|
|
|
"'" #'R
|
|
|
|
[tab] #'ess-switch-to-inferior-or-script-buffer
|
|
|
|
[backtab] #'ess-switch-process
|
|
|
|
;; REPL
|
|
|
|
"B" #'ess-eval-buffer-and-go
|
|
|
|
"b" #'ess-eval-buffer
|
|
|
|
"d" #'ess-eval-region-or-line-and-step
|
|
|
|
"D" #'ess-eval-function-or-paragraph-and-step
|
|
|
|
"L" #'ess-eval-line-and-go
|
|
|
|
"l" #'ess-eval-line
|
|
|
|
"R" #'ess-eval-region-and-go
|
|
|
|
"r" #'ess-eval-region
|
|
|
|
"F" #'ess-eval-function-and-go
|
|
|
|
"f" #'ess-eval-function
|
2018-06-03 15:46:00 +02:00
|
|
|
;; predefined keymaps
|
2019-02-15 20:24:35 -05:00
|
|
|
"h" 'ess-doc-map
|
|
|
|
"x" 'ess-extra-map
|
|
|
|
"p" 'ess-r-package-dev-map
|
|
|
|
"v" 'ess-dev-map
|
2018-06-03 15:46:00 +02:00
|
|
|
;; noweb
|
2018-12-23 23:54:27 -05:00
|
|
|
:prefix "c"
|
|
|
|
"C" #'ess-eval-chunk-and-go
|
|
|
|
"c" #'ess-eval-chunk
|
|
|
|
"d" #'ess-eval-chunk-and-step
|
|
|
|
"m" #'ess-noweb-mark-chunk
|
|
|
|
"p" #'ess-noweb-previous-chunk
|
|
|
|
"n" #'ess-noweb-next-chunk))
|
2021-10-18 11:43:07 +02:00
|
|
|
|
|
|
|
|
|
|
|
(use-package! stan-mode
|
2022-08-12 20:29:19 +02:00
|
|
|
:when (modulep! +stan)
|
2021-10-18 11:43:07 +02:00
|
|
|
:hook (stan-mode . stan-mode-setup)
|
|
|
|
:hook (stan-mode . eldoc-stan-setup)
|
|
|
|
:init
|
|
|
|
(use-package! company-stan
|
2022-08-12 20:29:19 +02:00
|
|
|
:when (modulep! :completion company)
|
2021-10-18 11:43:07 +02:00
|
|
|
:hook (stan-mode . company-stan-setup))
|
|
|
|
|
|
|
|
(use-package! flycheck-stan
|
2022-08-17 01:16:08 +01:00
|
|
|
:when (and (modulep! :checkers syntax)
|
|
|
|
(not (modulep! :checkers syntax +flymake)))
|
2021-10-18 11:43:07 +02:00
|
|
|
:hook (stan-mode . flycheck-stan-stanc2-setup)
|
|
|
|
:hook (stan-mode . flycheck-stan-stanc3-setup)))
|