Credo che non tutti gli utenti R conoscano l'elis. Sarebbe bello se gli utenti ESS potessero condividere il loro codice nel loro file .emacs qui. Il codice ben commentato sarebbe particolarmente utile. Spero che ciò promuova l'uso di ESS da parte degli utenti R.Chiedere agli utenti ESS/R suggerimenti per codici elisp nel file .emacs
risposta
Per me, questa cosa è straordinariamente utile:
;; ESS: Emacs Speaks Statistics
(load "~/elisp/vendor/ess/lisp/ess-site.el")
;; Use shift-enter to split window & launch R (if not running), execute highlighted
;; region (if R running & area highlighted), or execute current line
;; (and move to next line, skipping comments). Nice.
;; See http://www.emacswiki.org/emacs/EmacsSpeaksStatistics,
;; FelipeCsaszar. Adapted to spilit vertically instead of
;; horizontally.
(setq ess-ask-for-ess-directory nil)
(setq ess-local-process-name "R")
(setq ansi-color-for-comint-mode 'filter)
(setq comint-prompt-read-only t)
(setq comint-scroll-to-bottom-on-input t)
(setq comint-scroll-to-bottom-on-output t)
(setq comint-move-point-for-output t)
(defun my-ess-start-R()
(interactive)
(if (not (member "*R*" (mapcar (function buffer-name) (buffer-list))))
(progn
(delete-other-windows)
(setq w1 (selected-window))
(setq w1name (buffer-name))
(setq w2 (split-window w1 nil t))
(R)
(set-window-buffer w2 "*R*")
(set-window-buffer w1 w1name))))
(defun my-ess-eval()
(interactive)
(my-ess-start-R)
(if (and transient-mark-mode mark-active)
(call-interactively 'ess-eval-region)
(call-interactively 'ess-eval-line-and-step)))
(add-hook 'ess-mode-hook
'(lambda()
(local-set-key [(shift return)] 'my-ess-eval)))
(add-hook 'inferior-ess-mode-hook
'(lambda()
(local-set-key [C-up] 'comint-previous-input)
(local-set-key [C-down] 'comint-next-input)))
(require 'ess-site)
Preso da: http://www.kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess/
Su Debian/Ubuntu, utilizzare il pacchetto ESS che richiede iscrizioni supplementari .emacs
sorta quanto utilizza la configurazione a livello di sistema da /etc/emacs/site-start.d/50ess.el
. Su Windows, devo impostare il percorso a Rterm.exe
e io fonte ess-site.el
proprio come suggerisce il manuale ESS.
Io però ho questo ... che è una copia quasi direttamente dal 'R Estensioni' it riferimenti manuali:
;; edd 12 May 2006 from R-exts.texi
;; with one variation
;;; C
(add-hook 'c-mode-hook
;;(lambda() (c-set-style "bsd")))
(lambda() (c-set-style "c++"))) ; edd
;;;; ESS
(add-hook 'ess-mode-hook
(lambda()
(ess-set-style 'C++)
;; Because
;; DEF GNU BSD K&R C++
;; ess-indent-level 2 2 8 5 4
;; ess-continued-statement-offset 2 2 8 5 4
;; ess-brace-offset 0 0 -8 -5 -4
;; ess-arg-function-offset 2 4 0 0 0
;; ess-expression-offset 4 2 8 5 4
;; ess-else-offset 0 0 0 0 0
;; ess-close-brace-offset 0 0 0 0 0
(add-hook 'local-write-file-hooks
(lambda()
(ess-nuke-trailing-whitespace)))))
;(setq ess-nuke-trailing-whitespace-p 'ask)
;; or even
(setq ess-nuke-trailing-whitespace-p t)
Interessante. Configurare ESS manualmente ogni volta che lo si avvia? Ad esempio, suddividere le finestre e avviare R. Lo trovo piuttosto problematico. Ho usato il codice da http://www.kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess/ per automatizzarlo. – ggg
È possibile trovare un buon file di configurazione sul sito Web di John Fox http://socserv.mcmaster.ca/jfox/Books/Companion/ESS/ che imposta tutto automaticamente. È progettato per Xemacs ma funziona bene per Emacs (forse con alcune modifiche). – Calimo
Anch'io ho usato. Ciò rende il comportamento di ESS [S] più vicino a quello di Rgui.exe e potrebbe attrarre nuovi utenti ESS. – ggg