2010-05-23 13 views

cevap

7

, 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/

+1

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

4

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) 
+0

İ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

+2

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