4.2 KiB
4.2 KiB
How to build an editor with Emacs Lisp
- Episode 1 - Introduction
- Episode 2 - Survive on the first day
- Episode 3 - Lisp Basics
- Episode 4 - Conditionals
DONE Episode 1 - Introduction
CLOSED: [2022-01-09 Sun 19:03]
What is it all about?
- Create an editor, development environment and Window Manager (yeah window manager) and …
- GNU/Emacs is amazing
- Spread the joy
- Guide for contributors
- A guide for people who wants to learn some Lisp
The Plan
- Parallel video series to How to build a compiler with LLVM and MLIR
- Git branches
- No live coding
- Start from Emacs and Jump to FG42
- Feel free to contribute
FG42 and a bit of history
-
It's my:
- Editor/IDE
- Email client
- Window Manager
- File Manager
- Terminal Emulator
- IRC client (at some point)
- TODO manager
- "Office suit" (air qoute)
- ….
- Started on 2010 in a train
- I'm working on the V3
-
Requirements
- Emacs >= 27.1
- Website: https://fg42.org/
- Repository: https://devheroes.codes/FG42
- Website: https://lxsameer.com
- Email: lxsameer@gnu.org or lxsameer@lxsameer.com
DONE Episode 2 - Survive on the first day
CLOSED: [2022-02-11 Fri 10:28]
Why bother?
Why GNU/Emacs?
People might say because of
- Org-mode
- LSP support
- Support for many many languages
- It's lightweight
- Tons of plugins
- …
I'd say
- Coz it's a lisp environment with an editor attached to it
-
Lisp is the difference
- It's super easy to extend/hack emacs
- In compare to other editors
- You can do pretty much whatever your like in ELisp
- It's like a framework for building an editor
FAQ
What is the difference between Doom, Spacemacs, FG42 and …?
Different editors based on Emacs
Which one should I use?
How to install Emacs packages?
UI Basics & Basic Concepts
- Window
- Frame
- Mode line
- Buffers
- Mini buffer/Echo area
- Point
- Major mode
- Minor mode
Basic Keybindings
How to read key bindings? Here is an example C-x M-e 4
, it means press x
key while
holding Control
and then press e
key while pressing down Alt
and finally press 4
.
- Emacs tutorial
C-h t
(or https://www.gnu.org/software/emacs/tour/) - Quit emacs
C-x C-c
- Abort
C-g
-
Get Help
C-h
familyC-h f
C-h v
C-h m
C-h k
C-h a
- Run a command (function)
M-x
- Visit a file
C-x C-f
- Search in Buffer
C-s
- Save buffer
C-x C-s
- Select region
C-SPC
- Copy
M-w
- Cut(killing)
C-w
- Paste(yanking)
C-y
- Kill buffer
C-x k
- Switch buffer
C-x b
- Undo
C-/
- Eval expression
C-x C-e
describe-mode
Lisp basics
- Expressions everywhere
- Code a data structure
-
Almost everything in Lisp evaluates to themselves except:
- lists
- Symbols
- …
-
Lisp laws:
- Everything in Lisp is an expression and evaluation of an expression means replacing it with its value
-
Almost everything in Lisp evaluates to themselves except:
- Lists
- Symbols
- Quotes
-
…
- List evaluation
DONE Episode 3 - Lisp Basics
CLOSED: [2022-03-12 Sat 18:38]
FAQ:
-
How to install Emacs?
- Just make sure to have Emacs >= 27.1
-
What's the routine to use Emacs ?
- Don't use Emacs like how you use other Editors.
- There is no limits(Almost).
-
How evaluate forms?
- C-x C-e at the end of any expression and anywhere
- ielm
- Batch mode
So Fare:
Lisp rules:
- Lisp is made of Expressions and they evaluate to a value.
- All the expression types evaluates to themselves with some exceptions.
- List evaluation
We will continue with Lisp basics for few episodes
Variables
- How to define variables and constants
- Set the value of a variable
- Global and local scope
-
Lexical bindings vs Dynamic bindings
-*- lexical-binding: t; -*-
Functions
- How to define functions
- vs macros
- vs special forms
Episode 4 - Conditionals
What we learned so far
what is true and what's not
Let & prog family
Conditional special forms
- if
- when
- unless
- cond
Useful forms and functions
- eq
- equal
- and
- not
- or
- …
Type Predicts
- numberp
- stringp
- listp
- boundp
- More at https://www.gnu.org/software/emacs/manual/html_node/elisp/Type-Predicates.html