Tüm R kullanıcılarının elisp'i bilmediğine inanıyorum. ESS kullanıcılarının kodlarını burada .emacs dosyasında paylaşmaları güzel olurdu. İyi yorumlanmış kod özellikle yararlı olacaktır. Umarım bu, ESS'nin R kullanıcıları tarafından kullanılmasını destekleyecektir.ESS/R kullanıcılarının, .emacs dosyasındaki elisp kodlarıyla ilgili önerilerini sorma
cevap
, bu şey fevkalade faydalıdır:
;; 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)
Kimden alındı: http://www.kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess/
Debian/Ubuntu, ben o /etc/emacs/site-start.d/50ess.el
gelen sistem çapında kurulum kullanır olarak olursa olsun .emacs
yılında hiçbir ek girişler gerektirir ESS paketi kullanmak. Windows'da, Rterm.exe
yolunu ve ISS kılavuzunun önerdiği gibi ben ess-site.el
kaynağını ayarlamanız gerekiyor.
Ben ancak bu ... 'R Uzantıları' manuel o referanslardan neredeyse düz kopya olduğu var: Benim için
;; 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)
İlginç. Her çalıştırdığınızda manuel olarak ESS kuruyor musunuz? Örneğin, pencereleri ayırmak ve R'yi başlatmak, oldukça zahmetli buluyorum. Bunu otomatikleştirmek için http://www.kieranhealy.org/blog/archives/2009/10/12/make-shift-enter-do-a-lot-in-ess/ adresinden kod kullandım. – ggg
John Fox'un web sitesinde http://socserv.mcmaster.ca/jfox/Books/Companion/ESS/ adresinde her şeyi otomatik olarak ayarlayan iyi bir yapılandırma dosyası bulabilirsiniz. Bu Xemacs için tasarlanmış ama Emacs için iyi çalışıyor (belki birkaç değişiklik ile). – Calimo
Ben de kullandım. Bu, ESS [S] 'nin davranışını Rgui.exe'ninkine yaklaştırır ve yeni ESS kullanıcılarına hitap edebilir. – ggg