Emacs as a programming IDE

Marie-Hélène Burle

November 14, 2023


I am not trying to start an editor war here

https://cube-drone.com

Particularly as there are now excellent IDEs for Python, Julia, and R without Emacs learning curve (think VS Code, RStudio, or JupyterLab)

Why I still use (and love) Emacs

Bookmarking

Fully customizable

Kbd for everything

Org mode (org tables!)

Organization of windows

Search and replace with regexp

Ediff

Macros

Emacs everywhere (emails, Slack, Telegram with mu4e, emacs-slack, telega)

Helm

Searching in buffer

Navigating open buffers and recent files

Navigating file sections

Selecting from kill ring

Moving in mark ring

Looking at active modes

Completion

company-mode

yasnippet

Dynamic abbrev expansion

Undoing/redoing with undo-tree

Linear systems: classic undo/redo



Have some file

Linear systems: classic undo/redo



Make some edits

Linear systems: classic undo/redo



Make more edits

Linear systems: classic undo/redo



Make more edits

Linear systems: classic undo/redo



Can undo

Linear systems: classic undo/redo



Undo some more

Linear systems: classic undo/redo



Can redo

Linear systems: classic undo/redo



Make new edits

Linear systems: classic undo/redo



Can still undo

Linear systems: classic undo/redo



Can still undo

Linear systems: classic undo/redo



And can redo

Linear systems: classic undo/redo



But some edits are forever lost

Linear systems: Emacs

1

Linear systems: Emacs

1

2


Make some edits

Linear systems: Emacs

1

2

3


Make more edits

Linear systems: Emacs

1

2

3

4


Make more edits

Linear systems: Emacs

1

2

3

4

3


The first undo adds a new point to the chain of edits

Linear systems: Emacs

1

2

3

4

3

2


More undoing keeps adding points to the chain

Linear systems: Emacs

1

2

3

4

3

2

3


There is no redo: you stop undoing, then start again to undo the undo

Linear systems: Emacs

1

2

3

4

3

2

3

5


You can make new edits

Nothing ever gets lost, but you might get headaches

Example: let’s go back to the starting point

Linear systems: Emacs

1

2

3

4

3

2

3

5

3

2

3

4

3

2

1

Non linear system: undo-tree


Non linear system: undo-tree



Make some edits

Non linear system: undo-tree



Make some edits

Non linear system: undo-tree



Make some edits

Non linear system: undo-tree



Undo

Non linear system: undo-tree



Undo

Non linear system: undo-tree



Redo

Non linear system: undo-tree



Make new edits

Non linear system: undo-tree



Undo

Non linear system: undo-tree



Switch branch and redo the old version

Non linear system: undo-tree



Nothing gets lost and it is more sane to navigate the history

Emacs with Python

Emacs comes with a Python mode that provides syntax highlighting. For a full IDE experience, there are multiple options, the most popular of which being the elpy package

Code from matplotlib

Emacs with R

R is—as Emacs—GNU software and has been integrated with Emacs via the ESS (Emacs Speaks Statistics) package for a very long time

Emacs with Julia

The julia-mode package provides syntax highlighting and the julia-repl package implements a fully functional Julia REPL, optionally with the emacs-libvterm package

Code from Beautiful Makie

ESS also provides an IDE for Julia, but it does not allow for the funky Julia-specific REPL

Another sophisticated option is to use julia-mode with the julia-snail package

 Back to webinar page

Emacs as a programming IDE Marie-Hélène Burle November 14, 2023

  1. Slides

  2. Tools

  3. Close
  • Emacs as a programming IDE
  • I am not trying to...
  • Particularly as there...
  • Why I still use (and love) Emacs
  • Bookmarking Fully...
  • Helm
  • Completion
  • Undoing/redoing with undo-tree
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: classic undo/redo
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Linear systems: Emacs
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Non linear system: undo-tree
  • Emacs with Python
  • Emacs comes with...
  • Emacs with R
  • R is—as Emacs—GNU...
  • Emacs with Julia
  • The julia-mode package...
  • ESS also provides...
  • f Fullscreen
  • s Speaker View
  • o Slide Overview
  • e PDF Export Mode
  • r Scroll View Mode
  • ? Keyboard Help