User:Timothee Flutre/Notebook/Postdoc/2012/07/25

From OpenWetWare

(Difference between revisions)
Jump to: navigation, search
(Autocreate 2012/07/25 Entry for User:Timothee_Flutre/Notebook/Postdoc)
(About Emacs: add mirror)
(15 intermediate revisions not shown.)
Line 6: Line 6:
| colspan="2"|
| colspan="2"|
<!-- ##### DO NOT edit above this line unless you know what you are doing. ##### -->
<!-- ##### DO NOT edit above this line unless you know what you are doing. ##### -->
-
==Entry title==
+
==About Emacs==
-
* Insert content here...
+
 +
* '''Motivation''': when analyzing data for any research project, it's essential to know well a good text editor. Indeed, it's very efficient to be able to program in several languages (eg. Python, C/C++, R), interact with the shell like in a terminal, manipulate data and plot exploratory analyzes in R, ''all this within the same editor''! One such editor is [http://en.wikipedia.org/wiki/Emacs Emacs], and is available on Linux, Mac OS and Windows. For Mac OS X users, I recommend [http://vgoulet.act.ulaval.ca/en/emacs/mac/ this distribution].
 +
 +
* '''Documentation''':
 +
** official [https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html manual]
 +
** I haven't found yet any good tutorial, outside of the official [https://www.gnu.org/software/emacs/tour/ tour]
 +
** [http://www.emacswiki.org/ wiki] (with many tips)
 +
** [https://github.com/emacsmirror/p code] (mirrors packages)
 +
 +
* '''Important packages''':
 +
** [http://orgmode.org/) org-mode] (already included in recent versions of emacs)
 +
** [http://cx4a.org/software/auto-complete/ Auto-Complete]
 +
** [http://ess.r-project.org/ ESS]
 +
** [http://www.gnu.org/software/auctex/ AUCTeX]
 +
 +
* '''Configuration''': my own file <nowiki>~/.emacs</nowiki> (I try to avoid customizing it too much)
 +
 +
<nowiki>
 +
;; .emacs
 +
 +
(custom-set-variables
 +
  ;; custom-set-variables was added by Custom.
 +
  ;; If you edit it by hand, you could mess it up, so be careful.
 +
  ;; Your init file should contain only one such instance.
 +
  ;; If there is more than one, they won't work right.
 +
'(column-number-mode t) ;; in the mode line
 +
'(size-indication-mode t) ;; in the mode line
 +
'(display-time-mode 1) ;; in the mode line
 +
'(display-time-day-and-date t) ;; in the mode line
 +
'(display-time-24hr-format t) ;; in the mode line
 +
'(case-fold-search t)
 +
'(current-language-environment "UTF-8")
 +
'(default-input-method "rfc1345")
 +
'(global-font-lock-mode t nil (font-lock))
 +
'(show-paren-mode t))
 +
(custom-set-faces
 +
  ;; custom-set-faces was added by Custom.
 +
  ;; If you edit it by hand, you could mess it up, so be careful.
 +
  ;; Your init file should contain only one such instance.
 +
  ;; If there is more than one, they won't work right.
 +
)
 +
 +
(setq inhibit-startup-message t)
 +
 +
(add-to-list 'load-path "~/.emacs.d/")
 +
 +
(setq latex-run-command "pdflatex")
 +
 +
;; config for C/C++ code
 +
(setq c-default-style "bsd"
 +
          c-basic-offset 2
 +
          tab-width 2
 +
          indent-tabs-mode t)
 +
 +
;;--------------------------------------------------------------------
 +
 +
;; START config Auto-Complete
 +
(require 'auto-complete-config)
 +
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
 +
(ac-config-default)
 +
;; END config Auto-Complete
 +
 +
;;--------------------------------------------------------------------
 +
 +
;; START config ESS
 +
(require 'ess-site)
 +
;;(load "~/src_ext_nb/ESS/ess-12.09-2/lisp/ess-site")
 +
 +
;; tips from http://emacswiki.org/emacs/EmacsSpeaksStatistics
 +
(setq ess-eval-visibly-p nil) ;otherwise C-c C-r (eval region) takes forever
 +
(setq ess-ask-for-ess-directory nil) ;otherwise you are prompted each time you start an interactive R session
 +
 +
;; tips source: http://www.emacswiki.org/emacs/ESSAuto-complete
 +
(setq ess-use-auto-complete t)
 +
;; END config ESS
 +
 +
;; clear R console (http://stackoverflow.com/a/3450038/597069)
 +
(defun clear-shell ()
 +
  (interactive)
 +
  (let ((old-max comint-buffer-maximum-size))
 +
    (setq comint-buffer-maximum-size 0)
 +
    (comint-truncate-buffer)
 +
    (setq comint-buffer-maximum-size old-max)))
 +
 +
;;--------------------------------------------------------------------
 +
 +
;; START config AUCTeX
 +
;;(load "/home/tflutre/src/LATEX_PKGS/AUCTEX/auctex.el" nil t t)
 +
;;(load "/home/tflutre/src/LATEX_PKGS/AUCTEX/preview-latex.el" nil t t)
 +
;;(add-to-list 'load-path "/home/tflutre/src/LATEX_PKGS/AUCTEX")
 +
(setq TeX-auto-save t)
 +
(setq TeX-parse-self t)
 +
(setq-default TeX-master nil)
 +
(setq TeX-save-query nil)
 +
(setq TeX-PDF-mode t) ;; to have a pdf output for all LaTeX documents
 +
;; END config AUCTeX
 +
 +
;;--------------------------------------------------------------------
 +
 +
;; START config org-mode
 +
(global-set-key "\C-cl" 'org-store-link)
 +
(global-set-key "\C-cc" 'org-capture)
 +
(global-set-key "\C-ca" 'org-agenda)
 +
(global-set-key "\C-cb" 'org-iswitchb)
 +
(org-babel-do-load-languages
 +
'org-babel-load-languages
 +
'((R . t)
 +
  (sh . t)
 +
  (python . t)
 +
  ))
 +
(setq org-confirm-babel-evaluate nil)
 +
(require 'org-latex)
 +
(add-to-list 'org-export-latex-packages-alist '("" "listings"))
 +
(setq org-export-latex-listings t)
 +
(setq org-export-latex-listings-options
 +
      '(("breaklines")))
 +
(setq org-log-done 'time)
 +
(setq org-startup-truncated nil) ;so that lines longer than the screen are not truncated
 +
;; END config org-mode
 +
 +
;;--------------------------------------------------------------------                                                                 
 +
 +
;; START config python-mode
 +
(setq
 +
python-shell-interpreter "ipython"
 +
python-shell-interpreter-args ""
 +
python-shell-prompt-regexp "In \\[[0-9]+\\]: "
 +
python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: "
 +
python-shell-completion-setup-code
 +
  "from IPython.core.completerlib import module_completion"
 +
python-shell-completion-module-string-code
 +
  "';'.join(module_completion('''%s'''))\n"
 +
python-shell-completion-string-code
 +
  "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
 +
;; END config python-mode
 +
</nowiki>
 +
 +
* '''Tips''':
 +
** from the office computer (desktop), log interactively to a cluster node, launch <code>emacs --daemon</code> and keep the terminal open indefinitely; then access this session from any computer, e.g. a laptop, with <code>emacsclient -t</code>
 +
** especially useful with [http://en.wikipedia.org/wiki/PuTTY PuTTY] on Windows, launch emacs so that its window is the terminal itself, via <code>emacs -nw</code>
<!-- ##### DO NOT edit below this line unless you know what you are doing. ##### -->
<!-- ##### DO NOT edit below this line unless you know what you are doing. ##### -->

Revision as of 11:59, 13 January 2014

Project name Main project page
Previous entry      Next entry

About Emacs

  • Motivation: when analyzing data for any research project, it's essential to know well a good text editor. Indeed, it's very efficient to be able to program in several languages (eg. Python, C/C++, R), interact with the shell like in a terminal, manipulate data and plot exploratory analyzes in R, all this within the same editor! One such editor is Emacs, and is available on Linux, Mac OS and Windows. For Mac OS X users, I recommend this distribution.
  • Documentation:
    • official manual
    • I haven't found yet any good tutorial, outside of the official tour
    • wiki (with many tips)
    • code (mirrors packages)
  • Configuration: my own file ~/.emacs (I try to avoid customizing it too much)
;; .emacs

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(column-number-mode t) ;; in the mode line
 '(size-indication-mode t) ;; in the mode line
 '(display-time-mode 1) ;; in the mode line
 '(display-time-day-and-date t) ;; in the mode line
 '(display-time-24hr-format t) ;; in the mode line
 '(case-fold-search t)
 '(current-language-environment "UTF-8")
 '(default-input-method "rfc1345")
 '(global-font-lock-mode t nil (font-lock))
 '(show-paren-mode t))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

(setq inhibit-startup-message t)

(add-to-list 'load-path "~/.emacs.d/")

(setq latex-run-command "pdflatex")

;; config for C/C++ code
(setq c-default-style "bsd"
          c-basic-offset 2
          tab-width 2
          indent-tabs-mode t)

;;--------------------------------------------------------------------

;; START config Auto-Complete
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)
;; END config Auto-Complete

;;--------------------------------------------------------------------

;; START config ESS
(require 'ess-site)
;;(load "~/src_ext_nb/ESS/ess-12.09-2/lisp/ess-site")

;; tips from http://emacswiki.org/emacs/EmacsSpeaksStatistics
(setq ess-eval-visibly-p nil) ;otherwise C-c C-r (eval region) takes forever
(setq ess-ask-for-ess-directory nil) ;otherwise you are prompted each time you start an interactive R session

;; tips source: http://www.emacswiki.org/emacs/ESSAuto-complete
(setq ess-use-auto-complete t)
;; END config ESS

;; clear R console (http://stackoverflow.com/a/3450038/597069)
(defun clear-shell ()
   (interactive)
   (let ((old-max comint-buffer-maximum-size))
     (setq comint-buffer-maximum-size 0)
     (comint-truncate-buffer)
     (setq comint-buffer-maximum-size old-max)))

;;--------------------------------------------------------------------

;; START config AUCTeX
;;(load "/home/tflutre/src/LATEX_PKGS/AUCTEX/auctex.el" nil t t)
;;(load "/home/tflutre/src/LATEX_PKGS/AUCTEX/preview-latex.el" nil t t)
;;(add-to-list 'load-path "/home/tflutre/src/LATEX_PKGS/AUCTEX")
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(setq TeX-save-query nil)
(setq TeX-PDF-mode t) ;; to have a pdf output for all LaTeX documents
;; END config AUCTeX

;;--------------------------------------------------------------------

;; START config org-mode
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-cc" 'org-capture)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)
(org-babel-do-load-languages
 'org-babel-load-languages
 '((R . t)
   (sh . t)
   (python . t)
   ))
(setq org-confirm-babel-evaluate nil)
(require 'org-latex)
(add-to-list 'org-export-latex-packages-alist '("" "listings"))
(setq org-export-latex-listings t)
(setq org-export-latex-listings-options
      '(("breaklines")))
(setq org-log-done 'time)
(setq org-startup-truncated nil) ;so that lines longer than the screen are not truncated
;; END config org-mode

;;--------------------------------------------------------------------                                                                  

;; START config python-mode
(setq
 python-shell-interpreter "ipython"
 python-shell-interpreter-args ""
 python-shell-prompt-regexp "In \\[[0-9]+\\]: "
 python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: "
 python-shell-completion-setup-code
   "from IPython.core.completerlib import module_completion"
 python-shell-completion-module-string-code
   "';'.join(module_completion('''%s'''))\n"
 python-shell-completion-string-code
   "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
;; END config python-mode

  • Tips:
    • from the office computer (desktop), log interactively to a cluster node, launch emacs --daemon and keep the terminal open indefinitely; then access this session from any computer, e.g. a laptop, with emacsclient -t
    • especially useful with PuTTY on Windows, launch emacs so that its window is the terminal itself, via emacs -nw


Personal tools