A Fork of QEmacs that hacks a native Vim/Neovim inspired modal state machine directly into it
  • C 94.9%
  • Shell 1.4%
  • Python 1.1%
  • C++ 0.9%
  • Makefile 0.6%
  • Other 1%
Find a file
Charlie Gordon 6fb16e1cc2 Simplify and improve qe_check_buffer_file
* pass `QEmacsState` to key grab functions
* clear `grab_key_opaque` when freeing windows, buffers, mode_data
* add checks on window and buffer pointers in key grab functions
* this should fix a crash bug when deleting unsynched buffers from bufed
* fix `reload_buffer` to update buffer `file_size` and `mtime` fields
* check buffer file before invoking commands that modify the buffer
* check buffer file after command that changes the current window
  or the current window's buffer
2026-06-24 00:44:18 +02:00
.github/workflows Improve Makefile, github CI and TODO.md 2026-06-05 15:53:10 -04:00
cp Update mapping tables 2020-11-07 17:51:16 +01:00
fonts Initial revision 2004-05-29 10:17:37 +00:00
kmap kmap: support the entire Arabic keybord 2026-05-19 23:09:24 +02:00
lang Simplify mode probing 2026-06-05 18:42:56 -04:00
libqhtml use FALLTHROUGH instead of fallthrough to avoid clash with x11 2026-03-14 21:55:25 +01:00
modes Simplify and improve qe_check_buffer_file 2026-06-24 00:44:18 +02:00
plugins Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
tests Fixed color handling 2024-09-08 01:06:17 +02:00
tools fix clang 17 compilation warnings 2026-03-14 21:33:53 +01:00
.gitignore cosmetics: remove trailing spaces, add trailing newline 2025-02-05 00:21:24 +01:00
arabic.c Change license to MIT 2023-03-05 02:04:02 +01:00
buffer.c Simplify and improve qe_check_buffer_file 2026-06-24 00:44:18 +02:00
cfb.c Change license to MIT 2023-03-05 02:04:02 +01:00
cfb.h Change license to MIT 2023-03-05 02:04:02 +01:00
charset.c bufed/dired: fix layout for non printing characters 2026-05-18 12:31:06 +02:00
charset.h Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
charsetjis.c Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
charsetjis.def Improve completion system 2020-10-27 08:38:12 +01:00
charsetmore.c Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
color.c Colorization: improve colorization of diff and process output 2026-06-09 14:19:28 -04:00
color.h Simplify mode probing 2026-06-05 18:42:56 -04:00
config.eg Initial post on github 2020-10-24 23:59:54 +02:00
configure Buffer/file: add diff-buffer-file 2026-06-04 15:08:24 +02:00
cutils.c Add utility functions 2024-08-31 13:49:00 +02:00
cutils.h Simplify mode probing 2026-06-05 18:42:56 -04:00
display.c Simplify mode probing 2026-06-05 18:42:56 -04:00
display.h Fix put_status/put_error behavior (#47) 2024-12-03 22:52:55 +01:00
extras.c shell: improve shell mode 2026-06-23 09:12:37 +02:00
fbfrender.c Change license to MIT 2023-03-05 02:04:02 +01:00
fbfrender.h Change license to MIT 2023-03-05 02:04:02 +01:00
haiku.cpp Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
html2png.c Update README.md, VERSION and copyrights 2025-02-10 07:51:29 +01:00
indic.c Change license to MIT 2023-03-05 02:04:02 +01:00
input.c input: add select-input-method command 2026-05-20 20:35:56 +02:00
kmap.c Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
kmaps added more Hebrew keymaps 2007-12-09 23:31:38 +00:00
libfbf.c Change license to MIT 2023-03-05 02:04:02 +01:00
libfbf.h Change license to MIT 2023-03-05 02:04:02 +01:00
libregexp-opcode.h Add regex support for search and replace 2023-03-05 13:34:19 +01:00
libregexp.c use FALLTHROUGH instead of fallthrough to avoid clash with x11 2026-03-14 21:55:25 +01:00
libregexp.h Add regex support for search and replace 2023-03-05 13:34:19 +01:00
libunicode-table.h Add regex support for search and replace 2023-03-05 13:34:19 +01:00
libunicode.c Fix linux compilation problems 2023-03-05 14:36:44 +01:00
libunicode.h Add regex support for search and replace 2023-03-05 13:34:19 +01:00
LICENSE Improve C-like language colorizers (#53) 2024-12-14 20:27:25 +01:00
ligatures Add charset probing functions 2014-03-01 22:37:26 +00:00
Makefile Shell: improve current directory traking 2026-06-13 18:12:57 +02:00
qe-doc.html typo fix 2025-02-06 11:56:36 +01:00
qe-doc.texi typo fix 2025-02-06 11:56:36 +01:00
qe-manual.c Improve documentation, configure and CI(#31) 2024-05-20 19:43:01 +02:00
qe-manual.md Help: improve describe-xxx functions and help popups 2026-06-18 23:30:17 +02:00
qe.1 Initial revision 2004-05-29 10:17:37 +00:00
qe.c Simplify and improve qe_check_buffer_file 2026-06-24 00:44:18 +02:00
qe.h Simplify and improve qe_check_buffer_file 2026-06-24 00:44:18 +02:00
qe.tcc Initial revision 2004-05-29 10:17:37 +00:00
qemacs.rdef haiku: add qemacs.rdef icon 2017-03-28 20:11:55 +00:00
qemacs.spec fixed typos, comments 2006-12-09 19:02:07 +00:00
qescript.c Simplify mode probing 2026-06-05 18:42:56 -04:00
qestyles.h improve colors and styles 2026-06-12 15:41:07 +02:00
README.md docfix: fix LICENCE file name in README.md 2026-04-28 18:25:12 +02:00
search.c Simplify and improve qe_check_buffer_file 2026-06-24 00:44:18 +02:00
TODO.md Simplify and improve qe_check_buffer_file 2026-06-24 00:44:18 +02:00
tqe.c Default to is_player mode: qe starts dired when invoked with no arguments 2022-08-28 00:40:58 +02:00
tty.c describe-screen: fix small issues in popup window 2026-06-19 09:06:44 +02:00
unicode_join.c Fix asan crash bug (#49) 2024-12-05 12:04:58 +01:00
unicode_join.h Update copyrights 2024-07-28 00:00:03 +02:00
unifont.lig Initial revision 2004-05-29 10:17:37 +00:00
unix.c Fix compile warning on macOS (#107) 2026-05-04 08:29:43 +02:00
util.c Help: improve describe-xxx functions and help popups 2026-06-18 23:30:17 +02:00
util.h Help: improve describe-xxx functions and help popups 2026-06-18 23:30:17 +02:00
variables.c Help: improve describe-xxx functions and help popups 2026-06-18 23:30:17 +02:00
variables.h Fix compilation warning 2026-06-15 14:00:49 +02:00
VERSION Update README.md, VERSION and copyrights 2025-02-10 07:51:29 +01:00
wcwidth.c Update glyph width methodology 2022-09-27 22:30:05 +02:00
wcwidth.h add include guard in wcwidth.h 2022-09-27 22:38:29 +02:00
win32.c Remove references to global qe_state (#45) 2024-12-01 23:34:00 +01:00
x11.c Help: improve describe-xxx functions and help popups 2026-06-18 23:30:17 +02:00

Quick Emacs (QEmacs)

Welcome to QEmacs! A small but powerful UNIX editor with many features that even big editors lack.

Quick Description

QEmacs is a small text editor targeted at embedded systems or debugging. Although it is very small, it has some very interesting features that even big editors lack:

  • Full screen editor with an Emacs look and feel with all common Emacs features: multi-buffer, multi-window, command mode, universal argument, keyboard macros, config file with C-like syntax, minibuffer with completion and history.

  • Can edit huge files (hundreds of megabytes) without delay, using a highly optimized internal representation and memory mapping for large files.

  • Full Unicode support, including multi charset handling (8859-x, UTF8, SJIS, EUC-JP, ...) and bidirectional editing respecting the Unicode bidi algorithm. Arabic and Indic scripts handling (in progress). Automatic end of line detection.

  • C mode: coloring with immediate update, auto-indent, automatic tags.

  • Shell mode: full color VT100 terminal emulation so your shell works exactly as you expect. Compile mode with colorized error messages, automatic error message parser jumps to next/previous error, works with grep too. The shell buffer is a fully functional terminal: you can run qemacs, vim or even emacs recursively!

  • Input methods for most languages, including Chinese (input methods descriptions come from the Yudit editor).

  • Binary and hexadecimal in place editing mode with insertion and block commands. Unicode hexa editing of UTF-8 files also supported. Can patch binary files, preserving every byte outside the modified areas.

  • Works on any VT100 terminal without termcap. UTF-8 VT100 support included with double width glyphs.

  • X11 support. Supports multiple proportional fonts at the same time (like XEmacs). X Input methods supported. Xft extension supported for anti-aliased font display.

  • Bitmap images are displayed on graphics displays and as colored text on text terminals, which is handy when browsing files over an ssh connection. (QEmacs uses the public domain stb_image package for image parsing.

Building QEmacs

  • Launch the custom configuration script ./configure. You can list the available options by typing ./configure --help.

  • Type make to compile qemacs and its associated tools.

  • Type make install as root to install it in /usr/local.

QEmacs Documentation

Read the file qe-doc.html.

Licensing

QEmacs is released under the MIT license. (read the accompanying LICENSE file).

Contributing to QEmacs

QEmacs official repository is available on Github. You are welcome to contribute by opening an issue or submitting a Pull Request. Older discussions are archived on the qemacs-devel mailing list.

Authors

QEmacs was started in 2000. The initial version was developped by Fabrice Bellard and Charlie Gordon, who since then, has been maintaining and extending it.