b8a483721e
Change keybindings for sending function to REPL to be in line with [Spacemacs convention](https://github.com/syl20bnr/spacemacs/blob/develop/doc/CONVENTIONS.org#send-code)
137 lines
4.8 KiB
EmacsLisp
137 lines
4.8 KiB
EmacsLisp
;;; packages.el --- ESS (R) Layer packages File for Spacemacs
|
|
;;
|
|
;; Copyright (c) 2012-2017 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
;;
|
|
;; This file is not part of GNU Emacs.
|
|
;;
|
|
;;; License: GPLv3
|
|
|
|
(setq ess-packages
|
|
'(
|
|
ess
|
|
ess-R-data-view
|
|
ess-R-object-popup
|
|
ess-smart-equals
|
|
golden-ratio
|
|
org))
|
|
|
|
(defun ess/init-ess ()
|
|
(use-package ess-site
|
|
:mode (("\\.sp\\'" . S-mode)
|
|
("/R/.*\\.q\\'" . R-mode)
|
|
("\\.[qsS]\\'" . S-mode)
|
|
("\\.ssc\\'" . S-mode)
|
|
("\\.SSC\\'" . S-mode)
|
|
("\\.[rR]\\'" . R-mode)
|
|
("\\.[rR]nw\\'" . Rnw-mode)
|
|
("\\.[sS]nw\\'" . Snw-mode)
|
|
("\\.[rR]profile\\'" . R-mode)
|
|
("NAMESPACE\\'" . R-mode)
|
|
("CITATION\\'" . R-mode)
|
|
("\\.omg\\'" . omegahat-mode)
|
|
("\\.hat\\'" . omegahat-mode)
|
|
("\\.lsp\\'" . XLS-mode)
|
|
("\\.do\\'" . STA-mode)
|
|
("\\.ado\\'" . STA-mode)
|
|
("\\.[Ss][Aa][Ss]\\'" . SAS-mode)
|
|
("\\.jl\\'" . ess-julia-mode)
|
|
("\\.[Ss]t\\'" . S-transcript-mode)
|
|
("\\.Sout" . S-transcript-mode)
|
|
("\\.[Rr]out" . R-transcript-mode)
|
|
("\\.Rd\\'" . Rd-mode)
|
|
("\\.[Bb][Uu][Gg]\\'" . ess-bugs-mode)
|
|
("\\.[Bb][Oo][Gg]\\'" . ess-bugs-mode)
|
|
("\\.[Bb][Mm][Dd]\\'" . ess-bugs-mode)
|
|
("\\.[Jj][Aa][Gg]\\'" . ess-jags-mode)
|
|
("\\.[Jj][Oo][Gg]\\'" . ess-jags-mode)
|
|
("\\.[Jj][Mm][Dd]\\'" . ess-jags-mode))
|
|
:commands (R stata julia SAS)
|
|
:init
|
|
(progn
|
|
(spacemacs/register-repl 'ess-site 'julia)
|
|
(spacemacs/register-repl 'ess-site 'R)
|
|
(spacemacs/register-repl 'ess-site 'SAS)
|
|
(spacemacs/register-repl 'ess-site 'stata)
|
|
;; Explicitly run prog-mode hooks since ess-mode does not derive from
|
|
;; prog-mode major-mode
|
|
(add-hook 'ess-mode-hook 'spacemacs/run-prog-mode-hooks)
|
|
(when (configuration-layer/package-usedp 'company)
|
|
(add-hook 'ess-mode-hook 'company-mode))))
|
|
|
|
;; R --------------------------------------------------------------------------
|
|
(with-eval-after-load 'ess-site
|
|
;; Follow Hadley Wickham's R style guide
|
|
(setq ess-first-continued-statement-offset 2
|
|
ess-continued-statement-offset 0
|
|
ess-expression-offset 2
|
|
ess-nuke-trailing-whitespace-p t
|
|
ess-default-style 'DEFAULT)
|
|
|
|
(defun spacemacs/ess-start-repl ()
|
|
"Start a REPL corresponding to the ess-language of the current buffer."
|
|
(interactive)
|
|
(cond
|
|
((string= "S" ess-language) (call-interactively 'R))
|
|
((string= "STA" ess-language) (call-interactively 'stata))
|
|
((string= "SAS" ess-language) (call-interactively 'SAS))))
|
|
|
|
(spacemacs/set-leader-keys-for-major-mode 'ess-julia-mode
|
|
"'" 'julia
|
|
"si" 'julia)
|
|
(spacemacs/set-leader-keys-for-major-mode 'ess-mode
|
|
"'" 'spacemacs/ess-start-repl
|
|
"si" 'spacemacs/ess-start-repl
|
|
;; noweb
|
|
"cC" 'ess-eval-chunk-and-go
|
|
"cc" 'ess-eval-chunk
|
|
"cd" 'ess-eval-chunk-and-step
|
|
"cm" 'ess-noweb-mark-chunk
|
|
"cN" 'ess-noweb-previous-chunk
|
|
"cn" 'ess-noweb-next-chunk
|
|
;; REPL
|
|
"sB" 'ess-eval-buffer-and-go
|
|
"sb" 'ess-eval-buffer
|
|
"sD" 'ess-eval-function-or-paragraph-and-step
|
|
"sd" 'ess-eval-region-or-line-and-step
|
|
"sL" 'ess-eval-line-and-go
|
|
"sl" 'ess-eval-line
|
|
"sR" 'ess-eval-region-and-go
|
|
"sr" 'ess-eval-region
|
|
"sF" 'ess-eval-function-and-go
|
|
"sf" 'ess-eval-function
|
|
;; R helpers
|
|
"hd" 'ess-R-dv-pprint
|
|
"hi" 'ess-R-object-popup
|
|
"ht" 'ess-R-dv-ctable
|
|
)
|
|
(define-key ess-mode-map (kbd "<s-return>") 'ess-eval-line)
|
|
(define-key inferior-ess-mode-map (kbd "C-j") 'comint-next-input)
|
|
(define-key inferior-ess-mode-map (kbd "C-k") 'comint-previous-input)))
|
|
|
|
(defun ess/init-ess-R-data-view ())
|
|
|
|
(defun ess/init-ess-R-object-popup ())
|
|
|
|
(defun ess/init-ess-smart-equals ()
|
|
(use-package ess-smart-equals
|
|
:defer t
|
|
:if ess-enable-smart-equals
|
|
:init
|
|
(progn
|
|
(add-hook 'ess-mode-hook 'ess-smart-equals-mode)
|
|
(add-hook 'inferior-ess-mode-hook 'ess-smart-equals-mode))))
|
|
|
|
(defun ess/pre-init-golden-ratio ()
|
|
(spacemacs|use-package-add-hook golden-ratio
|
|
:post-config
|
|
(dolist (f '(ess-eval-buffer-and-go
|
|
ess-eval-function-and-go
|
|
ess-eval-line-and-go))
|
|
(add-to-list 'golden-ratio-extra-commands f))))
|
|
|
|
(defun ess/pre-init-org ()
|
|
(spacemacs|use-package-add-hook org
|
|
:post-config (add-to-list 'org-babel-load-languages '(R . t))))
|