This commit is contained in:
ry
2022-01-11 18:05:13 -08:00
parent 2046befee2
commit 8e7b654716
846 changed files with 71287 additions and 4 deletions

View File

@@ -0,0 +1,57 @@
#+TITLE: :lang ess
This module adds support for various statistics languages, including R, S-Plus,
SAS, Julia and Stata.
* Table of Contents :TOC:
- [[#prequisites][Prequisites]]
- [[#appendix][Appendix]]
- [[#keybindings][Keybindings]]
* Prequisites
This module has several optional dependencies:
+ [[https://github.com/jimhester/lintr][lintr]]: Enables R linting.
+ [[https://github.com/REditorSupport/languageserver][languageserver]]: Enables LSP support in an R buffer (with =+lsp= flag).
* Appendix
** Keybindings
*** :map ess-doc-map
| key | command |
|-----+----------------------------|
| "h" | ess-display-help-on-object |
| "p" | ess-R-dv-pprint |
| "t" | ess-R-dv-ctable |
*** :map ess-mode-map
| key | command |
|--------------+-----------------------|
| "<s-return>" | ess-eval-line |
| "<up>" | comint-next-input |
| "<down>" | comint-previous-input |
**** :localleader
| state | key | command |
|-------+-------------+---------------------------------------------------|
| :nv | "," | ess-eval-region-or-function-or-paragraph-and-step |
| :n | "'" | R |
| :n | "<tab>" | ess-switch-to-inferior-or-script-buffer |
| :n | "<backtab>" | ess-switch-process |
| :n | "B" | ess-eval-buffer-and-go |
| :n | "b" | ess-eval-buffer |
| :nv | "d" | ess-eval-region-or-line-and-step |
| :n | "D" | ess-eval-function-or-paragraph-and-step |
| :n | "L" | ess-eval-line-and-go |
| :n | "l" | ess-eval-line |
| :nv | "R" | ess-eval-region-and-go |
| :nv | "r" | ess-eval-region |
| :n | "F" | ess-eval-function-and-go |
| :n | "f" | ess-eval-function |
| :n | "h" | ess-doc-map |
| :n | "x" | ess-extra-map |
| :n | "p" | ess-r-package-dev-map |
| :n | "v" | ess-dev-map |
| :n | "cC" | ess-eval-chunk-and-go |
| :n | "cc" | ess-eval-chunk |
| :n | "cd" | ess-eval-chunk-and-step |
| :n | "cm" | ess-noweb-mark-chunk |
| :n | "cp" | ess-noweb-previous-chunk |
| :n | "cn" | ess-noweb-next-chunk |

View File

@@ -0,0 +1,15 @@
;;; lang/ess/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +ess/open-julia-repl (&optional arg)
"Open an ESS Julia REPL"
(interactive "P")
(run-ess-julia arg)
(current-buffer))
;;;###autoload
(defun +ess/open-r-repl (&optional arg)
"Open an ESS R REPL"
(interactive "P")
(run-ess-r arg)
(current-buffer))

View File

@@ -0,0 +1,106 @@
;;; lang/ess/config.el -*- lexical-binding: t; -*-
(after! projectile
(add-to-list 'projectile-project-root-files "DESCRIPTION"))
;;
;;; Packages
(use-package! ess
:commands stata SAS
:init
(unless (featurep! :lang julia)
(add-to-list 'auto-mode-alist '("\\.jl\\'" . ess-julia-mode)))
:config
(setq ess-offset-continued 'straight
ess-use-flymake (not (featurep! :checkers syntax))
ess-nuke-trailing-whitespace-p t
ess-style 'DEFAULT
ess-history-directory (expand-file-name "ess-history/" doom-cache-dir))
(set-docsets! 'ess-r-mode "R")
(when (featurep! +lsp)
(add-hook 'ess-r-mode-local-vars-hook #'lsp!))
(set-repl-handler! 'ess-r-mode #'+ess/open-r-repl)
(set-repl-handler! 'ess-julia-mode #'+ess/open-julia-repl)
(set-lookup-handlers! '(ess-r-mode ess-julia-mode)
:documentation #'ess-display-help-on-object)
(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)
(set-company-backend! 'ess-r-mode
'(company-R-args company-R-objects company-dabbrev-code :separate))
(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)
(map! (:after ess-help
(: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))
:map ess-mode-map
:n [C-return] #'ess-eval-line
:localleader
"," #'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
;; predefined keymaps
"h" 'ess-doc-map
"x" 'ess-extra-map
"p" 'ess-r-package-dev-map
"v" 'ess-dev-map
;; noweb
: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))
(use-package! stan-mode
:when (featurep! +stan)
:hook (stan-mode . stan-mode-setup)
:hook (stan-mode . eldoc-stan-setup)
:init
(use-package! company-stan
:when (featurep! :completion company)
:hook (stan-mode . company-stan-setup))
(use-package! flycheck-stan
:when (featurep! :checkers syntax)
:hook (stan-mode . flycheck-stan-stanc2-setup)
:hook (stan-mode . flycheck-stan-stanc3-setup)))

View File

@@ -0,0 +1,15 @@
;; -*- no-byte-compile: t; -*-
;;; lang/ess/packages.el
(package! ess :pin "a7ce81bb768d7cc410885711cf99bad0f8941ac3")
(package! ess-R-data-view :pin "d6e98d3ae1e2a2ea39a56eebcdb73e99d29562e9")
(package! polymode :pin "54888d6c15249503e1a66da7bd7761a9eda9b075")
(package! poly-R :pin "c42ff3a4d0da96ccb7f826dca5c6b2eb558a2ab5")
(when (featurep! +stan)
(package! stan-mode :pin "9bb858b9f1314dcf1a5df23e39f9af522098276b")
(package! eldoc-stan :pin "9bb858b9f1314dcf1a5df23e39f9af522098276b")
(when (featurep! :completion company)
(package! company-stan :pin "9bb858b9f1314dcf1a5df23e39f9af522098276b"))
(when (featurep! :checkers syntax)
(package! flycheck-stan :pin "9bb858b9f1314dcf1a5df23e39f9af522098276b")))