On-line: гостей 3. Всего: 3 [подробнее..]
АвторСообщение
moderator


Пост N: 1174
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.04.19 14:37. Заголовок: Hbedit - текстовый редактор


Довел, наконец, свой текстовый редактор до того состояния, когда можно показать его общественности. Я начал писать его сначала как замену Memoedit(), но потом увлекся) и решил сделать что-то помощнее, как нормальный редактор для повседневного использования. Мне приходится в течение дня работать и под виндами, и под Линуксом - использую Far и mc, соответственно. Иногда Vim - но к некоторым вещам в нем так и не привык. Но хочется иметь что-то одно для всех платформ - не слишком навороченный, но чтоб было все что надо.
Сегодня выложил на github: https://github.com/alkresin/hbedit.
F9 (или мышкой по соответствующей надписи) - главное меню.
В ближайших планах:
- Lower/Upper для utf8
- новые режимы подсветки ( директивы препроцессора и пр. )
- скобки - подсветка парных и переход на парные
- undo
- решить проблемы с табуляцие
- сохранение истории открытых файлов, поиска
- написать help (hbedit.help)

Если есть идеи для реализации - буду рад услышать.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 275 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All [только новые]


moderator


Пост N: 1252
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 08.05.19 12:06. Заголовок: Есть еще кодоблок :b..


Есть еще кодоблок :bNew - это CLASS VAR, отрабатывает при открытии каждого файла. Можно (и лучше) устанавливать bonkey и bWriteTopPane там.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2536
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.05.19 13:09. Заголовок: alkresin пишет Есть ..


alkresin пишет
 цитата:
Есть еще кодоблок :bNew - это CLASS VAR, отрабатывает при открытии каждого файла. Можно (и лучше) устанавливать bonkey и bWriteTopPane там.


Это верно для 2го oEdi и далееt, для первого bNew не установить, т.к. выполняется он в :New(...) и больше нигде.
Если выделить установки и расчет координат в др. метод, к примеру :Def(), то тогда да
oE :=TEdit():New(...)
oE:bOnKey := ...
oE:bWriteTopPane := ...
oE:lTopPane := .F.
oE:Def()

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1253
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 08.05.19 15:21. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это верно для 2го oEdi и далееt, для первого bNew не установить,


Почему?
Это же CLASS VAR, я специально отметил. Просто пишете до появления первых объектов редактора:
TEdit():bNew := ...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2537
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.05.19 18:34. Заголовок: alkresin пишет Прост..


alkresin пишет
 цитата:
Просто пишете до появления первых объектов редактора


Спасибо, почти все получилось
 
DATA lTopPane INIT .T.
hbedit.prg
...
TEdit():bNew := {|oe| oe:lTopPane := .F., ;
oe:bOnKey := {|o,n| EdOnKey(o, n) }, ;
oe:bWriteTopPane := {|o,n| StBline(o, n) } }
nScreenH -= 1

FOR i := 1 TO Len( aFiles )
TEdit():New( Iif(!Empty(aFiles),Memoread(aFiles),""), aFiles, 0, 0, nScreenH-1, nScreenW-1, , .F. )
IF lRO
ATail(TEdit():aWindows):lReadOnly := .T.
ENDIF
NEXT

IF Empty( TEdit():aWindows )
TEdit():New( "", "", 0, 0, nScreenH-1, nScreenW-1, , .F. )
IF lRO
ATail(TEdit():aWindows):lReadOnly := .T.
ENDIF
ENDIF
...

Загруженные сразу при запуске hbedit.exe 3и файла перемещение курсора вверх\вниз - все ok
New file + добавляем строки, перемещение курсора вверх\вниз до 1ой строки, т.е курсор во 2ой
Open file перемещение курсора вверх\вниз до 1ой строки, т.е курсор во 2ой
Ctrl+TAB на загруженные при старте,New file + добавляем строки, перемещение курсора вверх\вниз - все ok
Ставлю
DATA lTopPane INIT .F.
Все ok во всех режимах выше

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2538
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.05.19 18:38. Заголовок: PS читать Ctrl+TAB ..


PS
читать
Ctrl+TAB на загруженные при старте,New file + добавляем строки, перемещение курсора вверх\вниз - все ok

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2539
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.05.19 19:06. Заголовок: PPS сделал так T..


PPS
сделал так
 
TEdit():bNew := {|oe| oe:lTopPane := .F., oe:y2 := MaxRow()-1, oe:y1 := 0, ;
oe:bOnKey := {|o,n| EdOnKey(o, n) }, ;
oe:bWriteTopPane := {|o,n| StBline(o, n) } }

his удалил.
На сразу загруженных файлах - все ok.
New file, Open file ставят курсор во 2ую строку, причем New file при стрелке вверх ставит в 1ю строку курсор и больше не перемещается - строка 1, позиция 1

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1254
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.05.19 09:15. Заголовок: Обновлен hbedit. Реа..


Обновлен hbedit.
Реализована поддержка табуляции.
Оптимизирован движок подсветки.
Кое-что исправлено.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2540
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.05.19 15:51. Заголовок: alkresin 1. Заменяю..


alkresin
1.
Заменяю на "свои" окна (из MiniGui.lib подошло подключением) Скрытый текст

Можно ли в этом месте поставить переменную с блоком кода, если задана, то выполнять блок кода из переменной, иначе код функции ? Что бы не лазить для правки каждый раз в текст edi_Alert()

2.
Загружаю текст prg hbedit.exe fedit.prg , курсор на строке, к примеру 2153
 
RETURN Nil

FUNCTION mnu_F3( oEdit )

между RETURN Nil и FUNCTION ... на пустой строке
Смещаем курсор вправо стрелкой на n позиций, т.е. Col > 1
Делаем Backspace, строка пустая пропадает и имеем
 
RETURN Nil
FUNCTION mnu_F3( oEdit )

Это не правильно.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2541
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.05.19 16:11. Заголовок: PS К пункту 1. Хотел..


PS
К пункту 1.
Хотел edi_Alert() перевести на #translate, но т.к. нет файла hbedit.ch с #include "hbedit.ch" в каждом *.prg, а заводить свой, это править все файлы prg, что по мне, хуже, то предложил переменную с блоком кода.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1255
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 14.05.19 09:39. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно ли в этом месте поставить переменную с блоком кода, если задана, то выполнять блок кода из переменной


Не понял. А откуда предполагается брать кодоблок, как он будет задан?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1256
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 14.05.19 09:40. Заголовок: Обновил hbedit. Расш..


Обновил hbedit.
Расширена поддержка макросов (см. help).
Всякие мелкие правки.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2544
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.19 10:38. Заголовок: alkresin пишет Не п..


alkresin пишет
 цитата:
Не понял. А откуда предполагается брать кодоблок, как он будет задан?


К примеру так
 
FUNCTION edi_Alert( cText, cAns1, cAns2, cAns3 )
...
STATIC b_Alert

IF Valtype(cText) == 'B'
b_Alert := cText
RETURN Nil
ENDIF
IF empty( b_Alert )
... как сейчас
ELSE
i := EVal( b_Alert, cText, cAns1, cAns2, cAns3 )
ENDIF

RETURN i
тогда в своем prg делаю установку блока и происходит подмена кода выполнения.
Хорошо бы в oEdit добавить пару переменных CLASS VAR ... для блоков кода подмены запроса Open file и Save as ...
Т.к. используем (у себя в работе) в gtwvt windows варианты запросов.
Конечно и для окон запроса Search и Search&Replace такой механизм не помешал бы, но пока не так актуально.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2545
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.19 10:48. Заголовок: PS И совсем замечате..


PS
И совсем замечательно, если в oEdit добавить установку своего HB_GTI_PALETTE для каждого экземпляра окна.
К примеру через блок кода CLASS VAR ... и вызовом его при смене\установки окна редактирования.
Можно отработать разноцветность режимов, как минимум

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1257
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 14.05.19 12:39. Заголовок: SergKis пишет: К пр..


SergKis пишет:

 цитата:
К примеру так


Лучше я просто выделю edi_Alert() в отдельный файл.

 цитата:
Хорошо бы в oEdit добавить пару переменных CLASS VAR ... для блоков кода подмены запроса Open file и Save as ...


Вы же их все-равно вызываете из своего меню. Так вызывайте свои процедуры вместо них.

 цитата:
И совсем замечательно, если в oEdit добавить установку своего HB_GTI_PALETTE для каждого экземпляра окна.


Это вы можете сделать в кодоблоке bStartEdit, который вызывается каждый раз при вызове :Edit().

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2547
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.19 13:10. Заголовок: alkresin пишет Лучше..


alkresin пишет
 цитата:
Лучше я просто выделю edi_Alert() в отдельный файл.


Очень хорошо.

 цитата:
Так вызывайте свои процедуры вместо них.


Так и буду делать

 цитата:
Это вы можете сделать в кодоблоке bStartEdit


Увидел, что есть bStartEdit и bEndEdit - замечательно



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2558
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.19 10:59. Заголовок: alkresin Запуск hbe..


alkresin
Запуск hbedit.exe
New file
Ставлю кодировку Utf8
что то набираю
Save as ...
Esc
смотрим файл в Far F3, F4 -> у файла нет BOM

Наверно, нужна галочка\пункт меню, сохранять с BOM или нет.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1259
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.05.19 15:10. Заголовок: SergKis пишет: Наве..


SergKis пишет:

 цитата:
Наверно, нужна галочка\пункт меню, сохранять с BOM или нет.


Согласен, надо будет добавить в диалог по Save as. Плюс eol и, может быть, кодовую страницу.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2559
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.19 15:15. Заголовок: alkresin пишет и, мо..


alkresin пишет
 цитата:
и, может быть, кодовую страницу.


Желательно, иметь режим, сменить кодировку текста, к примеру, RU866 -> Utf8 и т.д.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1260
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.05.19 16:22. Заголовок: Ну, кодировка менятс..


Ну, кодировка менятся просто как и в Far'е:
Выделяем все (Ctrl-A), вырезаем, меняем кодировку и вставляем.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2561
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.19 16:32. Заголовок: alkresin пишет Выдел..


alkresin пишет
 цитата:
Выделяем все (Ctrl-A), вырезаем, меняем кодировку и вставляем.


Не самый удобный механизм. В Notepad3.exe есть режим переоткрыть в кодировке, кл. F8 (меню есть) -> табличка кодировок.
Т.е. в файле Utf8, в работе RU1251, или RU866, или LV866.
Просто и удобно

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 275 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 57
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет