Best emacs modes
The lisp init codes must be inserted in your ~/.emacs.
Enable melpa
I will need some community package.
;; package
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
Pretty emacs (both in melpa)
My favourite emacs theme is in melpa: leuven-theme. For vim powerline bar, I use spaceline (a spin-off of spacemacs without the vim keys settings)
M-x list-packages
Then click to:
- install leuven-theme
- install spaceline
;; spaceline config
(require 'spaceline-config)
(spaceline-emacs-theme)
org-mode settings
For your journal and gtd
(global-set-key "\C-cc" 'org-capture)
(setq org-directory "~/org")
(setq org-capture-templates
'(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
"* TODO %?\n %i\n %a" :prepend t)
("j" "Journal" entry (file+datetree "~/org/journal.org")
"* %?\nEntered on %U\n %i\n %a")))
Minted for code formating
pdf production by org-mode export
Minted is a latex package using pigmentize for rendering code. As it needs to run external program in the latex compilation, some settings are necessary pdf production.
(setq org-latex-listings 'minted)
(add-to-list 'org-latex-packages-alist '("" "minted"))
(setq org-latex-minted-options
'(("frame" "lines")
;; ("fontsize" "\\scriptsize")
("linenos" "")))
;; at least two compilations for the toc
(setq org-latex-pdf-process
’(“pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f”
“PDFLATEX=\”pdflatex -shell-escape -interaction nonstopmode -output-directory %o\" texi2dvi -p %f")
I prefer to use latex-make with custom pdflatex options
I export in latex and compile with latex-make. My Makefile is thus
PDFLATEX_OPTIONS=-shell-escape
include LaTeX.mk
It is possible to combine org-mode export and pdflatex compilation.
My makefile look like:
PDFLATEX_OPTIONS= -shell-escape
LU_MASTER= mydocument
include LaTeX.mk
mydocument.tex: mydocument.org
emacs --visit=$< --batch -f org-latex-export-to-latex --kill
Grammar correcion with languagetool
LangagueTool must be installed (in /usr/local/ if not available in your distribution)
(require 'langtool)
(setq langtool-language-tool-jar "/PATH/TO/languagetool-commandline.jar"
langtool-mother-tongue "fr"
langtool-disabled-rules '("WHITESPACE_RULE"
"EN_UNPAIRED_BRACKETS"
"COMMA_PARENTHESIS_WHITESPACE"
"EN_QUOTES"))
My favorite standard packages
- auctex (latex)
- ede (programmation in C/C++)
- semantic (programmation in C/C++)
- ido
- recentf
- auto-complete
- magit
- helm
- pdf-view
and of course
(setq c-default-style "linux")
Why this page anyway ?
I am very happy when my students use vim. But some of my students write programs with under-powered text editors (The names of some of them end with “edit”). I want to write why I am annoyed by this situation.
You are mising some subtle help you do not even know about
search and replace
Let us look at the search and replace. Nothing can surprise you there. Really ?
Let us change some “toto” string with “tata” string (toto → tata).
toto toto toto Toto toto TOTO toto
Using the standard search-and-replace, you got in emacs
tata tata tata Tata tata TATA tata
Search-and-replace keeps the upper-lower case by defaut !.
Semantic format and decoration
Emacs (vim too), knows your programming langage syntax. Thus it is able to indent the code correctly, even when displacing a bloc, even when adding a new loop or a branch.
You have thus an immediate feedback on mis-inserting anything (comma, parenthesis, square or curly bracket). You gain time at writing, and compiling, and debuging.
Emacs: open mind text editor
I am an emacs user for years. In fact, I start my unix journey by using vi in the terminal application of some aging Atari 520ST of my university. The terminal were connected to some SQL databases on UNIX servers elsewhere on the campus. Then I used emacs, Xemacs, axe, textedit and never stop to try among the time plenty of great editors like qtcreator, code block, eclipse, netbeans, atom…
After some time, I always turn back to emacs. I never really understand why before Arnaud Legrand demonstrates org-mode usage in a team seminar.
Emacs power has not the up-to-date fancy graphics of SublimeText, neither the large set of helpers in Java programming of Eclipse. It has the amazing support of numerous languages.
How many programming languages are useful ?
In my humble opinion, all of them: programming language, like human language, formats the way of thinking. Using different languages allows variability in the way to express the solution of a problem. One of them is better for one problem. None of them is better for all problems. And, of course, there are numerous “better” utility functions with different results.
My daily languages are:
- C
- Latex
- R (with ggplot2)
- bash
- numerous Unix stuff: awk, grep, sed, git
- org-mode
- Rust
- C++
- Perl
- Raku
- Python
- Ruby
- x86 Assembly
- ditaa
- TikZ
- OpenMP
- dplyr (R package)
- Emacs LISP :-)
But I also need on a monthly/yearly basis:
- Ada
- Go
- D
- textile
- markdown
- html
- javascript
- Scheme
- Cilk plus
- SQL
- LP
- Mathprog
I would like to learn more some languages:
- Haskell
- Clojure
- Zimpl
I learned and I would like to forget some others:
- Ocaml
- Fortran
Few editors will really help you in all of them. Vim is the other one
I practice.
How many programming languages are useful for an Ensimag student?
At Ensimag, the first year students (L3, last year of Graduation, in Bologne system) will meet at least:
- Python 3
- Bash
- C
- VHDL
- LaTeX
- R
- Java
- Octave/Matlab/scilab (at least one of them)
- x86 assembly
- MIPS assembly
- few Unix stuff like grep, sed, awk
- few tools like git
Emacs provides a nice environment for all of them.
Org-mode: literate programming
org-mode allows to use all the emacs support for all the languages in
the same document. It is the literate programming of Knuth with two
major additions:
1. document translation/export in various format
2. auto-execution of code and insertion of the results in the document
Use emacs as you use other editors !
- To open a file: in the menu File, click on Open file…
- To save file: in the menu File, click on Save
- To quit: in the meu File, click on Quit
With time, you learn more and more stuff. Emacs will help you to use efficiently all those knowledge in all your langages.