Page 1 of 2

Neon - текстовый редактор.

Posted: Tue Jun 19, 2018 1:04 am
by JohnXenox
Делаю удобный текстовый редактор. Но, как я написал в чатике - прошу не обнадёживаться (не уверен, что осилю).
Писать тестовый редактор очень сложно, когда толком не знаешь язык, да и опыта нет, практически никакого.
Редактор пишу на языке С.

Уже сделал кое-какие шаги, но ещё много чего не сделано, поэтому показывать нечего.
Есть только, разрозненный рабочий код и простой абстракный граф. концепт (см. рисунок).
Концепт не окончательный, и возможно, что программа, когда выйдет в альфу, будет выглядеть немного по-другому или совсем по-другому.
Вообще, я нацеливаюсь сделать, что-то на подобии: Visual Studio Code, Geany, Sublime или что-то среднее (эти редакторы, как образец, не более), но пока до этого очень далеко и возможно, что этого никогда не случится.

Рисунок концепта.

Image

Список дел:
- Дописать минимально необходимые граф. элементы для комфортного управления редактором.
- Отрефакторить текстовое поле.
- Сделать текстовое поле редактируемым.
- Разработать концепцию общей схемы подсветки синтаксиса.
- Написать схему подсветки синтаксиса для языка С.
- Написать код обработки для схемы.
- Скомпоновать все элементы в единую программу.

Re: Neon - текстовый редактор (пока только концепт).

Posted: Sat Jun 23, 2018 1:36 am
by paulcodeman
попробуй подцепить kf шрифты

Re: Neon - текстовый редактор (пока только концепт).

Posted: Tue Jun 26, 2018 11:19 pm
by JohnXenox
pavelyakov wrote:попробуй подцепить kf шрифты
Я б сделал бы, но пока знаний не хватает. :mrgreen:

Re: Neon - текстовый редактор (пока только концепт).

Posted: Thu Jun 28, 2018 9:35 pm
by GerdtR
Пишешь на С? Компилятор какой?
upd: KTCC, увидел уже :)

Re: Neon - текстовый редактор (пока только концепт).

Posted: Wed Mar 25, 2020 3:00 pm
by JohnXenox
Текстовый редактор я пока не осилил полностью. Он работает, но очень хреново.
Пока времени нет им заниматься. Очень с ним намучился, даже не знаю, буду ли продолжать им заниматься дальше. Но, как будет время выложу.

Что сделано:
* Вывод и редактирование текста (пока только Клавой);
* Поддержка кодировок (UTF-16LE (основная), UTF-8 (не полностью), cp866, cp1251);
* Подсветка синтаксиса (C, C++, C--, Oberon07, FASM и др.);
* Открытие текстового файла через командную строку. Как сделать через opendial - пока не знаю.

Re: Neon - текстовый редактор (пока только концепт).

Posted: Wed Mar 25, 2020 3:53 pm
by Leency
Ммм C--...
Выкладывай :)
Как сделать через opendial - пока не знаю.
Очень просто

Code: Select all

RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
См. http://board.kolibrios.org/viewtopic.ph ... 86&p=53443

Re: Neon - текстовый редактор (пока только концепт).

Posted: Sat Apr 11, 2020 3:33 pm
by JohnXenox
Leency wrote:
Как сделать через opendial - пока не знаю.
Очень просто

Code: Select all

RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
См. http://board.kolibrios.org/viewtopic.ph ... 86&p=53443
Спс. :D Попробую прикрутить, как будет свободное время.

Re: Neon - текстовый редактор (пока только концепт).

Posted: Mon Apr 27, 2020 3:58 pm
by JohnXenox
Neon - Alpha 1 (NON-STABLE!)

Neon - простой текстовый редактор с подсветкой синтаксиса.

ВНИМАНИЕ! Программа очень сильно грузит ЦПУ(на больших файлах). Плохо работает с большим текстом. Использовать осторожно!

Что сделано:
* dom и двойная буферизация.
* покадровый вывод текста.
* открытие, вывод, редактирование (только клавишами) и сохранение текста;
* подсветка синтаксиса (Bash, Fasm, C, C++, C--, Forth, Java, JavaScript, Oberon07, PHP, Python, Ruby, SQL);
* открытия файла через командную строку;
* открытие файла через OpenDialog;
* кодировка в UTF-16LE, UTF-8 (чтение), CP866, CP1251.
* оповещение через @notify.
* поддержка файла .ini.
* добавлен toolbar.

Горячие клавиши:
CTRL + O - открыть файл.
CTRL + S - сохранить файл.

CTRL + X - вырезать текст.
CTRL + C - копировать текст.
CTRL + V - вставить текст.

CTRL + A - выделить весь текст.

SHIFT + ARROW - выделить символ.

BACKSPACE - удалить символ слева.
DELETE - удалить символ справа.
TAB - вставить таб.

ARROWS (UP, DOWN, LEFT, RIGHT) - перемещение курсора (вверх, вниз, влево, вправо).

Re: Neon - текстовый редактор.

Posted: Mon Apr 27, 2020 8:56 pm
by Leency
Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.

Re: Neon - текстовый редактор.

Posted: Tue Apr 28, 2020 4:22 pm
by JohnXenox
Leency wrote:Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.
Поторопился немного. Уже поправил. Перезалил в посте выше. А шрифт раздвинул на пиксель, чтобы с курсором не сливался.

Исправил баг с функцией движения курсора клавишами стрелками.
Добавил ввод русских символов.
Добавил запуск командных строк клавишами:
CTRL + 1, CTRL + 2, CTRL + 3, CTRL + 4, CTRL + 5.

Re: Neon - текстовый редактор.

Posted: Tue Apr 28, 2020 5:16 pm
by rgimad
Респект автору за проделанную работу. Подстветка просто супер!

Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает

Re: Neon - текстовый редактор.

Posted: Tue Apr 28, 2020 5:27 pm
by JohnXenox
rgimad wrote:Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
Принял.

Re: Neon - текстовый редактор.

Posted: Tue Apr 28, 2020 6:31 pm
by JohnXenox
Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
-Какой функцией можно убить родительское окно?

Re: Neon - текстовый редактор.

Posted: Tue Apr 28, 2020 6:37 pm
by Leency
1. Попроще - никак. Не попроще
Spoiler:

Code: Select all

struct od_filter
 {
 	dword size; //size = len(#ext) + sizeof(dword)
 	char ext[25];
 };

proc_info pr_inf;
char opendir_path[3072];
char openfile_path[4096];
char filename_area[1024];

opendialog o_dialog = {
	0,
	#pr_inf, 
	#communication_area_name, 
	0, 
	#opendir_path, 
	#default_dir, 
	#open_dialog_path,
	#draw_window, 
	0, 
	#openfile_path, 
	#filename_area, 
	#filter2, 

	420, 
	200, 

	320, 
	120
};

ДЛЯ СОХРАНИЯ

struct od_filter
 {
 	dword size; //size = len(#ext) + sizeof(dword)
 	char ext[25];
 };

proc_info pr_inf;
char opendir_path[3072];
char openfile_path[4096];
char filename_area[1024];

opendialog o_dialog = {
	0,
	#pr_inf, 
	#communication_area_name, 
	0, 
	#opendir_path, 
	#default_dir, 
	#open_dialog_path,
	#draw_window, 
	0, 
	#openfile_path, 
	#filename_area, 
	#filter2, 

	420, 
	200, 

	320, 
	120
};

2.

Code: Select all

inline fastcall int KillProcess( ECX) // ECX = process id from ProcInfo structure
{
	$mov eax,18;
	$mov ebx,18;
	$int 0x40
}

Re: Neon - текстовый редактор.

Posted: Tue Apr 28, 2020 6:59 pm
by punk_joker
JohnXenox wrote:Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
Посмотри C Layer, там вроде есть обертка