q -> выйти, но если файл был изменен, то возможен выход без сохранения только через q!
parent
7cd502a806
commit
0dc325466e
|
@ -14,7 +14,7 @@ class VimModel:
|
||||||
def __init__(self, displayLinesCount: int, displayColsCount: int):
|
def __init__(self, displayLinesCount: int, displayColsCount: int):
|
||||||
self.displayLinesCount = displayLinesCount
|
self.displayLinesCount = displayLinesCount
|
||||||
self.displayColsCount = displayColsCount
|
self.displayColsCount = displayColsCount
|
||||||
self.showLineNumbers = False
|
self.showLineNumbers = True
|
||||||
self.displayBuffer = [] # буфер для хранения всех строк
|
self.displayBuffer = [] # буфер для хранения всех строк
|
||||||
self.dump = []
|
self.dump = []
|
||||||
self.currentLine = 0 # текущий индекс строки
|
self.currentLine = 0 # текущий индекс строки
|
||||||
|
@ -157,7 +157,8 @@ class VimModel:
|
||||||
self.commandBuffer.clear()
|
self.commandBuffer.clear()
|
||||||
match cmd:
|
match cmd:
|
||||||
case "q": # Выход из программы
|
case "q": # Выход из программы
|
||||||
return ReturnCode.EXIT_CODE
|
if self.displayBuffer == self.dump:
|
||||||
|
return ReturnCode.EXIT_CODE
|
||||||
case "q!": # Выход без сохранения
|
case "q!": # Выход без сохранения
|
||||||
return ReturnCode.EXIT_CODE
|
return ReturnCode.EXIT_CODE
|
||||||
case "wq!" | "x": # Записать в текущий файл + выйти
|
case "wq!" | "x": # Записать в текущий файл + выйти
|
||||||
|
@ -288,6 +289,7 @@ class VimModel:
|
||||||
with open(file_path, "w") as file:
|
with open(file_path, "w") as file:
|
||||||
for line in self.displayBuffer:
|
for line in self.displayBuffer:
|
||||||
file.write(''.join(line) + '\n')
|
file.write(''.join(line) + '\n')
|
||||||
|
self.Dump()
|
||||||
print(f"In file '{file_path}' written successfully.")
|
print(f"In file '{file_path}' written successfully.")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error writing file: {str(e)}")
|
print(f"Error writing file: {str(e)}")
|
||||||
|
|
|
@ -34,6 +34,7 @@ class CursesAdapter:
|
||||||
curses.curs_set(1) # Make cursor visible
|
curses.curs_set(1) # Make cursor visible
|
||||||
curses.start_color()
|
curses.start_color()
|
||||||
curses.init_pair(1, curses.COLOR_MAGENTA, curses.COLOR_BLACK) # Фиолетовый текст на черном фоне
|
curses.init_pair(1, curses.COLOR_MAGENTA, curses.COLOR_BLACK) # Фиолетовый текст на черном фоне
|
||||||
|
self.colorPair = curses.color_pair(1)
|
||||||
|
|
||||||
def Refresh(self) -> None:
|
def Refresh(self) -> None:
|
||||||
"""Apply changes"""
|
"""Apply changes"""
|
||||||
|
@ -84,7 +85,7 @@ class VimView:
|
||||||
if show_line_numbers:
|
if show_line_numbers:
|
||||||
line_number = f"{i + scrollY + 1:6} " # 6 символов на номер строки
|
line_number = f"{i + scrollY + 1:6} " # 6 символов на номер строки
|
||||||
# Выводим номер строки фиолетовым цветом
|
# Выводим номер строки фиолетовым цветом
|
||||||
self.curses_adapter.screen.addstr(i, 0, line_number, curses.color_pair(1))
|
self.curses_adapter.screen.addstr(i, 0, line_number, self.curses_adapter.colorPair)
|
||||||
|
|
||||||
# Выводим текст с учетом прокрутки и ширины нумерации
|
# Выводим текст с учетом прокрутки и ширины нумерации
|
||||||
visible_text_start = scrollX # Начало видимой части текста
|
visible_text_start = scrollX # Начало видимой части текста
|
||||||
|
|
Loading…
Reference in New Issue