e: Trình soạn thảo Emacs-like tự nhận thức viết bằng Chez Scheme

29 tháng 8, 2026·3 phút đọc

e là một trình soạn thảo văn bản console nhỏ gọn viết bằng Chez Scheme, lấy cảm hứng từ Emacs nhưng tập trung vào sự đơn giản. Điểm đặc biệt là toàn bộ hệ thống được xây dựng như một thư viện R6RS, có khả năng tự mở rộng, hot-reload module ngay trong phiên làm việc, và tích hợp sẵn trình thông dịch Scheme để người dùng có thể tùy biến mọi thứ trực tiếp.

e: Trình soạn thảo Emacs-like tự nhận thức viết bằng Chez Scheme

e: Trình soạn thảo Emacs-like tự nhận thức viết bằng Chez Scheme

e là một trình soạn thảo văn bản console tí hon được viết hoàn toàn bằng Chez Scheme. Khác với các bản clone Emacs truyền thống, e chỉ vay mượn những ý tưởng cốt lõi như buffer, window, kill ring, tìm kiếm tăng dần, và top level Scheme, nhưng dừng lại ở đó để giữ cho hệ thống gọn nhẹ và dễ hiểu.

Kiến trúc Scheme thuần túy

Điểm nổi bật nhất của e là toàn bộ editor được tổ chức như một hệ thống thư viện R6RS. Phần lõi tối thiểu có API bất biến được công bố công khai, còn các module mở rộng (syntax modes, bracket matching, editing helpers, M-x) được xây dựng trên đó. Ranh giới giữa các module được đảm bảo bằng chính ngôn ngữ lập trình, không phải bằng kỷ luật: nội bộ không thể nhìn thấy từ bên ngoài, export không thể bị gán lại.

Hot-reload và phát triển từ chính bên trong

Một trong những tính năng ấn tượng nhất là khả năng hot-reload module. Khi bạn lưu một file module .e bên trong editor, module đó sẽ được nạp lại ngay lập tức vào phiên làm việc. Các module phụ thuộc sẽ được biên dịch lại, buffer giữ nguyên vị trí. Điều này có nghĩa là e được phát triển từ chính bên trong nó – một trải nghiệm tương tự như Emacs nhưng gọn gàng và hiện đại hơn.

M-x: Đánh giá Scheme trực tiếp

Cửa sổ M-x không chỉ là nơi gõ lệnh, mà còn là top level Scheme trực tiếp của editor. Bạn có thể gõ (buffer-name (current-buffer)) để xem tên buffer hiện tại, hoặc gọi bất kỳ hàm API nào. Tính năng này hỗ trợ:

  • Hoàn thành tên symbol
  • Gợi ý tham số khi gõ
  • Lịch sử lệnh
  • Buffer transcript riêng

Tùy biến không giới hạn

Mọi phím tắt đều có thể được gán lại trong file config.e – một file Scheme thuần túy, không cần library hay shebang. Ví dụ:

(bind-key! "C-c s" save!!)
(unbind-key! "C-v")

Cấu hình được nạp lại ngay khi lưu file, không cần khởi động lại.

Trải nghiệm chỉnh sửa thông minh

  • Undo có mô tả: Undo hiển thị chính xác những gì nó hoàn tác, ví dụ "Undo insert 'hello'" hay "Undo (replace-all! "xx" "yy")"
  • Kill ring thông minh: Các lệnh kill liên tiếp được gộp lại, dán lại nguyên khối
  • Bracketed paste: Dán từ clipboard là một thao tác duy nhất, không lo ký tự điều khiển
  • Tìm kiếm tăng dần: Gấp chữ hoa/thường thông minh như Emacs
  • Pretty parens: Hiển thị cặp ngoặc theo ngữ cảnh với các ký tự Unicode đẹp mắt

Hoạt động như một hệ thống thống nhất

Toàn bộ e là một hệ thống Scheme thống nhất:

  • Không dependency ngoài Chez Scheme và terminal Unix-like
  • Không cần cài đặt: Clone repo là chạy được ngay
  • Khởi động nhanh: Lần đầu biên dịch, các lần sau chỉ ~100ms
  • Tích hợp hệ thống log: Mọi thông báo đều được ghi vào buffer *log* với timestamp nano giây

Phù hợp cho ai?

e không phải là Emacs thay thế cho lập trình viên Việt Nam đang quen với Visual Studio Code hay Neovim. Nhưng nếu bạn là người yêu thích Scheme, muốn hiểu sâu về hoạt động bên trong của editor, hoặc muốn một công cụ có thể tùy biến đến từng ký tự bằng chính ngôn ngữ lập trình hàm, e là một lựa chọn tuyệt vời để học hỏi và khám phá.

Với giấy phép MIT, dự án mở cho mọi đóng góp từ cộng đồng. Bạn có thể clone về và bắt đầu khám phá ngay hôm nay.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗