Skip to content
/ glemax Public

A modern, hardware-accelerated rewrite of Emacs in C and Guile

Notifications You must be signed in to change notification settings

laluxx/glemax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A modern, hardware-accelerated rewrite of Emacs in C and OpenGL

License: GPL v3 Build Status OpenGL

InstallationFeaturesDocumentation

Overview

Screenshot

Features

🚀 Modern Architecture

  • Hardware-accelerated rendering powered by OpenGL through the Lume engine
  • Blazing-fast performance with native C implementation
  • Runtime extensibility using C without VM overhead
  • Tree-sitter integration for robust syntax analysis

🎨 Advanced Text Editing

  • Smart Cursor Behavior

    • Crystal cursor mode that adapts to syntax context
    • Customizable blinking with configurable intervals
    • Emacs-style intelligent cursor movement
  • Sophisticated Buffer Management

    • Independent window scrolling
    • Per-window cursor positions (not true TODO)
  • Emacs-Compatible Features

    • Kill ring for advanced cut/paste operations
    • Mark and region
    • Incremental search (I-search)
    • Electric pair and rainbow mode
    • Tree-sitter powered syntax highlighting
    • Flexible window management

Key Bindings

NOTE: They are still hardcoded in the callback functions

Universal argument

  • C-0..9 - Digit argument

File Operations

  • C-x C-f - Find file
  • C-x C-s - Save buffer
  • C-x C-q - Read only mode

Navigation

  • C-n - Next line
  • C-p - Previous line
  • M-n - Forward paragraph
  • M-p - Backward paragraph
  • M-b - Backward word
  • C-f - Forward character
  • C-b - Backward character
  • M-f - Forward word
  • C-e - Move to end of line
  • C-a - Move to beginning of line
  • M-> - End of buffer
  • M-< - Beginning of buffer

Editing

  • C-space - Set mark
  • C-d - Delete character/kill region
  • C-k - Kill line/kill region
  • C-y - Yank
  • M-w - Kill ring save
  • C-w - Kill region
  • C-o - Open line
  • C-O - Duplicate line
  • M-c - Capitalize word

Extension

  • C-j - Eval last sexp
  • C-v - Eval Expression
  • M-: - Eval Expression
  • R-e - Eval region

Search

  • C-s - Incremental search forward
  • C-r - Incremental search backward

Window Management

  • M-q / C-x 0 - Delete window
  • M-j / C-x 2 - Split window below
  • M-k - Split window above
  • M-h - Split window left
  • M-l / C-x 3 - Split window right
  • C-x o - Other Window

Customization

  • M-= - Next theme
  • M-- - Previous theme
  • C-= - Increase font size
  • C-- - Decrease font size

For the complete list of keybindings, start reading the keyCallback() function in main.c.

Installation

Prerequisites

  • FreeType
  • Tree-sitter
  • OpenGL 4.6+
  • GLFW
  • Lume engine

Build Instructions

  1. Clone and install the Lume library:
git clone https://github.com/laluxx/lume.git
cd lume
make && sudo make install
  1. Clone build and run Glemax:
git clone https://github.com/laluxx/glemax.git
cd glemax
make && ./glemax

TODO

  • Iedit mode
  • Rainbow delimiters mode
  • Undo system
  • Dired and wdired
  • Proced
  • Org-mode support
  • Runtime variable/function inspection
  • Integrated debugger
  • Eshell
  • EWW
  • C evaluation

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

About

A modern, hardware-accelerated rewrite of Emacs in C and Guile

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages