121 lines
3.0 KiB
Org Mode
121 lines
3.0 KiB
Org Mode
#+TITLE: How to build an editor with Emacs Lisp
|
|
#+SEQ_TODO: TODO(t/!) NEXT(n/!) BLOCKED(b@/!) | DONE(d%) CANCELLED(c@/!) FAILED(f@/!)
|
|
#+TAGS: READER(r) MISC(m)
|
|
#+STARTUP: logdrawer logdone logreschedule indent content align constSI entitiespretty overview
|
|
|
|
* 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
|
|
* Episode 2 - Survive on the first day
|
|
** 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= family + =C-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:
|
|
1. Everything in Lisp is an expression and evaluation of an expression
|
|
means replacing it with its value
|
|
|
|
2. Almost everything in Lisp evaluates to themselves except:
|
|
- Lists
|
|
- Symbols
|
|
- Quotes
|
|
- ...
|
|
-
|
|
3. List evaluation
|