A rawmode CLI editor, in PHP, based on the C Kilo tutorial: https://viewsourcecode.org/snaptoken/kilo/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Timothy Warren eb3f7f848d Fix broken test 9 months ago
src Sort of get html and xml syntax highlighting working 9 months ago
tests Fix broken test 9 months ago
.editorconfig Add editorconfig 3 years ago
.gitignore Fix CTRL method 2 years ago
Dockerfile Try to fix CI with different docker image 1 year ago
Jenkinsfile Attempt to fix CI tests 1 year ago
README.md Refactor related class properties into their own objects 1 year ago
composer.json Minor refactors, fix some typos 9 months ago
composer.lock Minor refactors, fix some typos 9 months ago
kilo Fix more things that were broken 1 year ago
phpstan.neon More cleanup 1 year ago
phpunit.xml Fix more tests 1 year ago
test.php Some refactoring 1 year ago


PHP Kilo

Build Status

A reimplementation of the Kilo tutorial in PHP. Also has some inspiration from the Hecto text editor tutorial. Requires PHP 8 and FFI.


  • PHP 8
  • FFI enabled

Implementation notes:

  • The editor prefix has been removed from all the relevant functions, instead they are methods on one of the implementation classes.
  • Enums are faked with class constants
  • Composer is used for autoloading
  • Properties that must be manually updated in the C version (like counts/string length) are implemented with magic methods, so they are essentially calculated on read.
  • Generally, if a function exists in PHP, with the same name as the C function, the PHP version will be used.
  • Classes are used to modularize functionality, and reduce the amount of functions with global side effects