Important goals:
- Ease of configuring, building and use.
- Fast movement and editing.
- The middle ground between readable code and a small code base.
- No dependencies.
- Extensibility.
Examples of what may be in separate patches:
- Line numbers on the left.
- Automatic saving.
- Syntax highlighting.
- Key macros.
- Regular expressions.
- Configuring using
~/.config/se/se.conf
or something like that.
Open a file:
$ se <path>
Normal mode keys:
a
- start of line.d
- end of line.e
- go to begin of next word.h
orLeft arrow
- go left.i
- switch to inserting mode.j
,Down arrow
or by moving the mouse wheel down - go down.k
orUp arrow
or by moving the mouse wheel up - go up.l
orRight arrow
- go right.n
- create a line below the current line and move to it.q
- go to begin of previous word.- (X)
r
- redo last undo; s
- go to end of file.- (X)
u
- undo last change. w
- go to begin of file./
- switch to searching mode.Ctrl+d
- delete current line.Ctrl+n
- create a line above the current line and move to it.Ctrl+s
- save.Ctrl+q
- quit. If you changed the file, you will need to either save it or press this key several times.Ctrl+x
- save to spare directory. Useful if no privilege to write to opened file.Enter
- Search forward if a query was previously entered in the search mode.Tab
- Search backward if a query was previously entered in the search mode.
You can also repeat a key by pressing <number><key>
. For example, 5n
will create 5 lines below the cursor.
Inserting mode keys:
Esc
- switch to normal mode.Backspace
- delete character before cursor.Enter
- break line.- Otherwise, if character is printable, the character is inserted.
Searching mode keys:
Esc
- Cancel searching and switch to normal mode.Backspace
- delete last character in search query.Enter
- End query input, switch to normal mode and search forward once.- Otherwise, if character is printable, the character is inserted to search query.
You can set up convenient key bindings and convenient colors in src/cfg.h
. Note that after changes you need to build and install again.
You can set up convenient building flags in cfg.mk
. For example, if you want to debug, you need to add -g
to flags and remove optimizations. Or, if you want to build editor for OpenBSD, you need to uncomment some lines in cfg.mk
.
Build binary:
$ make
Install. Most likely you will need sudo
, doas
or something like that before the command:
$ make install
Build and use valgrind:
$ make valgrind
Clean all build files:
$ make clean
Regenerate README.md. Requires awk to collect todos:
$ make gen-readme
Trying to follow a combination of OpenBSD and Linux styles with priority given to the OpenBSD style.
Path | Line | Description |
---|---|---|
src/main.c | 1 | v0.4: Create Cell struct to handle all symbols including UTF-8. Create structs Win->Renders->Render->Cells->Cell. Rerender lines on window side |
src/main.c | 2 | v0.4: Use linked list for lines array and line's content parts. |
src/main.c | 3 | v0.4: Remember last position per line. |
src/main.c | 4 | v0.5: Undo operations. Also rename "del" to "remove" where needed. |
src/main.c | 5 | v0.5: Add key settings for escape sequences. For example, CFG_KEY_MV_UP_2 = "..." |
src/main.c | 6 | v0.5: Add local clipboard. Use it in functions. |
src/main.c | 7 | v0.5: Xclip patch to use with local clipboard. |
src/main.c | 8 | v0.6: Support huge files: read chunks or try mmap |
src/main.c | 9 | v0.6: Add tests. |
src/main.c | 10 | v0.7: Make code patching easier. |
src/main.c | 11 | v0.7: Add more error codes in docs. |
src/main.c | 12 | v0.7: Save to spare dir on error. |