📝 Quality & Cursor changes
This commit is contained in:
parent
dd2e5a49af
commit
4721cee438
@ -1,7 +1,7 @@
|
|||||||
import curses
|
import curses
|
||||||
|
|
||||||
|
|
||||||
def cursor_mode(mode):
|
def cursor_mode(mode: str):
|
||||||
if mode == "block":
|
if mode == "block":
|
||||||
print("\033[2 q")
|
print("\033[2 q")
|
||||||
|
|
||||||
@ -15,26 +15,36 @@ def cursor_mode(mode):
|
|||||||
curses.curs_set(1)
|
curses.curs_set(1)
|
||||||
|
|
||||||
|
|
||||||
def cursor_push(cursor: list, direction: (int, str)) -> list:
|
def cursor_push(instance, direction: (int, str)):
|
||||||
if direction in (0, "up", "north"):
|
if direction in (0, "up", "north"):
|
||||||
# Decrease the y position
|
# Decrease the y position
|
||||||
cursor[0] -= 1
|
instance.cursor[0] -= 1
|
||||||
|
|
||||||
elif direction in (1, "right", "east"):
|
elif direction in (1, "right", "east"):
|
||||||
# Increase the x position
|
# Increase the x position
|
||||||
cursor[1] += 1
|
instance.cursor[1] += 1
|
||||||
|
|
||||||
elif direction in (2, "down", "south"):
|
elif direction in (2, "down", "south"):
|
||||||
# Increase the y position
|
# Increase the y position
|
||||||
cursor[0] += 1
|
instance.cursor[0] += 1
|
||||||
|
|
||||||
elif direction in (3, "left", "west"):
|
elif direction in (3, "left", "west"):
|
||||||
# Decrease the x position
|
# Decrease the x position
|
||||||
cursor[1] -= 1
|
instance.cursor[1] -= 1
|
||||||
|
|
||||||
|
|
||||||
|
def check_cursor(instance, cursor: list):
|
||||||
|
cursor[1] = max(2, cursor[1])
|
||||||
|
cursor[1] = min(instance.width - 1, cursor[1])
|
||||||
|
cursor[0] = max(0, cursor[0])
|
||||||
|
cursor[0] = min(instance.height - 2 - len(instance.components.components["bottom"]), cursor[0])
|
||||||
|
|
||||||
return cursor
|
return cursor
|
||||||
|
|
||||||
|
|
||||||
def cursor_move(screen, cursor: list):
|
def cursor_move(instance):
|
||||||
|
# Run a final check to see if the cursor is valid
|
||||||
|
instance.cursor = check_cursor(instance, instance.cursor)
|
||||||
|
|
||||||
# Moves the cursor to anywhere on the screen
|
# Moves the cursor to anywhere on the screen
|
||||||
screen.move(cursor[0], cursor[1])
|
instance.screen.move(instance.cursor[0], instance.cursor[1])
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from core.colors import Codes as c
|
||||||
|
import traceback
|
||||||
import curses
|
import curses
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@ -107,3 +109,16 @@ def error(instance, message: str):
|
|||||||
|
|
||||||
# Clear the bottom of the screen
|
# Clear the bottom of the screen
|
||||||
clear(instance, instance.height - 1, 0)
|
clear(instance, instance.height - 1, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def fatal_error(exception: Exception):
|
||||||
|
# Clean up the screen
|
||||||
|
curses.endwin()
|
||||||
|
|
||||||
|
# Print the error message and traceback
|
||||||
|
print(f"{c.red}FATAL ERROR:{c.end} "
|
||||||
|
f"{c.yellow}{exception}{c.end}\n")
|
||||||
|
print(traceback.format_exc())
|
||||||
|
|
||||||
|
# Exit, with an error exit code
|
||||||
|
sys.exit(0)
|
||||||
|
22
main.py
22
main.py
@ -1,7 +1,6 @@
|
|||||||
from core import colors, cursors, buffers, modes, utils
|
from core import colors, cursors, buffers, modes, utils
|
||||||
from core.buffers import Buffer
|
from core.buffers import Buffer
|
||||||
from core.components import Components
|
from core.components import Components
|
||||||
import traceback
|
|
||||||
import argparse
|
import argparse
|
||||||
import curses
|
import curses
|
||||||
import sys
|
import sys
|
||||||
@ -35,9 +34,13 @@ class Lambda:
|
|||||||
self.components.render(self)
|
self.components.render(self)
|
||||||
|
|
||||||
# Move the cursor
|
# Move the cursor
|
||||||
cursors.cursor_move(self.screen, self.cursor)
|
cursors.cursor_move(self)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
|
# Change the escape key delay to 25ms
|
||||||
|
# Fixes an issue where the "esc" key takes way too long to press
|
||||||
|
os.environ.setdefault("ESCDELAY", "25")
|
||||||
|
|
||||||
# Initialise colors
|
# Initialise colors
|
||||||
colors.init_colors()
|
colors.init_colors()
|
||||||
|
|
||||||
@ -86,10 +89,6 @@ def main():
|
|||||||
# Load the file into a Buffer object
|
# Load the file into a Buffer object
|
||||||
buffer = buffers.load_file(args.file)
|
buffer = buffers.load_file(args.file)
|
||||||
|
|
||||||
# Change the escape delay to 25ms
|
|
||||||
# Fixes an issue where esc takes way too long to press
|
|
||||||
os.environ.setdefault("ESCDELAY", "25")
|
|
||||||
|
|
||||||
# Load lambda with the buffer object
|
# Load lambda with the buffer object
|
||||||
screen = Lambda(buffer)
|
screen = Lambda(buffer)
|
||||||
|
|
||||||
@ -107,16 +106,7 @@ def main():
|
|||||||
|
|
||||||
# Excepts *any* errors that occur
|
# Excepts *any* errors that occur
|
||||||
except Exception as exception:
|
except Exception as exception:
|
||||||
# Clean up the screen
|
utils.fatal_error(exception)
|
||||||
curses.endwin()
|
|
||||||
|
|
||||||
# Print the error message and traceback
|
|
||||||
print(f"{colors.Codes.red}FATAL ERROR:{colors.Codes.end} "
|
|
||||||
f"{colors.Codes.yellow}{exception}{colors.Codes.end}\n")
|
|
||||||
print(traceback.format_exc())
|
|
||||||
|
|
||||||
# Exit, with an error code
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -6,19 +6,19 @@ from mode import command
|
|||||||
def execute(instance, key):
|
def execute(instance, key):
|
||||||
if key == ord("j"):
|
if key == ord("j"):
|
||||||
# Move the cursor down
|
# Move the cursor down
|
||||||
instance.cursor = cursors.cursor_push(instance.cursor, "down")
|
cursors.cursor_push(instance, "down")
|
||||||
|
|
||||||
elif key == ord("k"):
|
elif key == ord("k"):
|
||||||
# Move the cursor up
|
# Move the cursor up
|
||||||
instance.cursor = cursors.cursor_push(instance.cursor, "up")
|
cursors.cursor_push(instance, "up")
|
||||||
|
|
||||||
elif key == ord("l"):
|
elif key == ord("l"):
|
||||||
# Move the cursor right
|
# Move the cursor right
|
||||||
instance.cursor = cursors.cursor_push(instance.cursor, "right")
|
cursors.cursor_push(instance, "right")
|
||||||
|
|
||||||
elif key == ord("h"):
|
elif key == ord("h"):
|
||||||
# Move the cursor left
|
# Move the cursor left
|
||||||
instance.cursor = cursors.cursor_push(instance.cursor, "left")
|
cursors.cursor_push(instance, "left")
|
||||||
|
|
||||||
elif key == ord("i"):
|
elif key == ord("i"):
|
||||||
# Activate insert mode
|
# Activate insert mode
|
||||||
@ -26,7 +26,7 @@ def execute(instance, key):
|
|||||||
|
|
||||||
elif key == ord("I"):
|
elif key == ord("I"):
|
||||||
# Move the cursor to the right
|
# Move the cursor to the right
|
||||||
instance.cursor = cursors.cursor_push(instance.cursor, "right")
|
cursors.cursor_push(instance, "right")
|
||||||
|
|
||||||
# Then activate insert mode
|
# Then activate insert mode
|
||||||
modes.activate(instance, "insert")
|
modes.activate(instance, "insert")
|
||||||
|
Loading…
Reference in New Issue
Block a user