php-kilo/kilo

50 lines
1.0 KiB
PHP
Executable File

#!/usr/bin/php
<?php declare(strict_types=1);
namespace Kilo;
// -----------------------------------------------------------------------------
// ! App Constants
// -----------------------------------------------------------------------------
define('KILO_VERSION', '0.0.1');
define('KILO_TAB_STOP', 4);
define('KILO_QUIT_TIMES', 3);
// Set up autoloading
require_once __DIR__ . '/src/functions.php';
spl_autoload_register(static function ($class) {
$parts = explode('\\', $class);
$file = __DIR__ . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . $parts[1] . '.php';
if (file_exists($file))
{
require_once $file;
}
});
// ! Init with an IIFE
return (static function (int $argc, array $argv): int {
enable_raw_mode();
$editor = Editor::new();
if ($argc >= 2)
{
$editor->open($argv[1]);
}
$editor->setStatusMessage('HELP: Ctrl-S = save | Ctrl-Q = quit | Ctrl-F = find');
// Input Loop
while (true)
{
$editor->refreshScreen();
$char = $editor->processKeypress();
if ($char === NULL)
{
break;
}
}
return 0;
})($argc, $argv);