Автор | Сообщение |
alkresin
|
| 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) Если есть идеи для реализации - буду рад услышать.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
alkresin
|
| moderator
|
Пост N: 1358
Зарегистрирован: 06.07.06
|
|
Отправлено: 29.08.19 08:53. Заголовок: не изменило от пред...
цитата: | не изменило от пред. поста, т.е. нет горизонтальной полосы-разделителя |
| Точно, oParent устанавливается после вызова TEdit():New(), по нему нельзя проверить. Значит, сработает другое условие: o:y1 == o:aRectFull[1]+1 цитата: | Такое сочетание работает, а через Ctrl-1 или Ctrl-~ нет. |
| Ctrl-1, Ctrl-2,... в Harbour в консоли вообще не работают - нет реакции на эти нажатия, не генерируется событие.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2780
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.08.19 21:03. Заголовок: alkresin пишет Ctrl-..
alkresin пишет цитата: | Ctrl-1, Ctrl-2,... в Harbour в консоли вообще не работают - нет реакции на эти нажатия, не генерируется событие. |
| Понятно. А в WVT ? цитата: | Значит, сработает другое условие: o:y1 == o:aRectFull[1]+1 |
| Горизонтальная строка появляется со смещением (где должно, в обычном режиме, находится "F9-Menu" ) и лишней информацией "Harbour plugins: Alt-D ...". Хотелось бы пустую полосу в ширину окна
|
|
|
alkresin
|
| moderator
|
Пост N: 1361
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.08.19 09:00. Заголовок: А в WVT ? Да. Моя ..
Да. Моя сборка hbedit в нем построена. Сделаю gt hwgui - там будет работать). цитата: | Горизонтальная строка появляется со смещением (где должно, в обычном режиме, находится "F9-Menu" ) и лишней информацией "Harbour plugins: Alt-D ...". |
| Горизонтальная разделительная строка появляется на месте строки статуса, потому что это она и есть. Какое это смещение? "Harbour plugins: Alt-D ..." появляется только вначале, потом там пусто - это предупреждение, что для открытого в окне файла подключен Harbour плагин. Вы можете это отключить, если в :bNew пропишете o:bStartEdit := Nil или установите свой bStartEdit.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2781
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.08.19 11:08. Заголовок: alkresin пишет Вы м..
alkresin пишет цитата: | Вы можете это отключить, если в :bNew пропишете o:bStartEdit := Nil или установите свой bStartEdit. |
| Сделал TEdit():bNew := {|oe| iif( oe:y1 == oe:aRectFull[1]+1, ( oe:lTopPane := .F., oe:y1-- ), ), ; oe:bStartEdit := Nil , ; oe:bWriteTopPane := {|o,l,y| StbLine(o,l,y) } } результат такой же, как был описан ранее. Пример, своя сборка, тут (смещение вправо линии на длину "F9-Menu", так понимаю) https://my-files.ru/zn3jdl Если убираю в ini ;plugin=plug_prg_init.hrb то горизонтальная линия разделения окна пропадает совсем А можно сделать, что то типа oEdit:lStatusLine := .T.\.F. ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2782
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.08.19 11:19. Заголовок: PS Разговор о команд..
PS Разговор о командах Ctrl-w,v - нормальное разделение Ctrl-w,s - не нормальное разделение
|
|
|
alkresin
|
| moderator
|
Пост N: 1363
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.08.19 13:11. Заголовок: SergKis пишет: Прим..
SergKis пишет: Файл по ссылке удален - пишут, вредоносное ПО)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2783
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.08.19 13:35. Заголовок: alkresin пишет Файл ..
alkresin пишет цитата: | Файл по ссылке удален - пишут, вредоносное ПО) |
| Да, удалили, но не сразу, я сначала проверил ссылку. Тут https://TransFiles.ru/pzqj9
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2784
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.08.19 13:42. Заголовок: PS в bkInit я убрал ..
PS в bkInit я убрал oe:bStartEdit := Nil, т.к. с ним при Ctrl-w,s совсем нет горизонтальной разд. строки, а так она есть, но из plugin init. Если комментируем в ini (как выше), то опять совсем нет горизонтальной разд. строки
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2785
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.08.19 13:47. Заголовок: PPS И как для меня, ..
PPS И как для меня, plugin=plug_prg_init.hrb в таком виде, нужен как пример, т.е. в работе ( Far Alt+F4 ) он отключен
|
|
|
alkresin
|
| moderator
|
Пост N: 1364
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.08.19 14:04. Заголовок: Ну так вы же сами уб..
Ну так вы же сами убрали из :bWriteTopPane отрисовку разделительной линии. Надо, чтоб было: IF ::lTopPane DispBegin() SetColor( ::cColorPane ) Scroll( y, ::x1, y, ::x2 ) IF ::oParent != Nil .AND. ::x1 == ::oParent:x2 + 2 Scroll( ::y1, ::x1-1, ::y2, ::x1-1 ) ENDIF DispEnd() ENDIF
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2786
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.08.19 14:56. Заголовок: alkresin пишет Ну та..
alkresin пишет цитата: | Ну так вы же сами убрали из :bWriteTopPane отрисовку разделительной линии. |
| Да, убрал, т.к. если делать прорисовку в :bWriteTopPane (в том виде как в StbLine(...), была ваша рекомендация), то начинает появляться и жить закраска в 0ой строке, при вертикальном разделении Ctrl-w,v Если сделать по последней рекомендации, то все хорошо, как хотелось и при ;plugin=plug_prg_init.hrb Спасибо. Может тогда вынести прорисовку вертикальной\горизонтальной строки разделения до :bWriteTopPane < сюда, к примеру > IF ::bWriteTopPane != Nil Eval( ::bWriteTopPane, Self, lClear, y ) ELSE IF ::lTopPane DispBegin() SetColor( ::cColorPane ) Scroll( y, ::x1, y, ::x2 ) IF ::oParent != Nil .AND. ::x1 == ::oParent:x2 + 2 Scroll( ::y1, ::x1-1, ::y2, ::x1-1 ) ENDIF
|
|
|
|
alkresin
|
| moderator
|
Пост N: 1365
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.08.19 15:48. Заголовок: SergKis пишет: Може..
SergKis пишет: цитата: | Может тогда вынести прорисовку вертикальной\горизонтальной строки разделения до :bWriteTopPane |
| Можно.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2805
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.09.19 16:32. Заголовок: alkresin Можно доба..
alkresin Можно добавить в hbedit ? - если имя плагина (без расширения .hrb) есть как функция, выполнить ее (плагин перенесен в тело hbedit), что бы не править базовый текст при смене модификации hbedit - в плагин plug_prg_spis.prg включить определения INIT WINDOW ... и DEFINE WINDOW ..., что бы не править плагин базовый, т.к. до этих определений, после FUNCTION, может находится достаточно строк
|
|
|
alkresin
|
| moderator
|
Пост N: 1371
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.09.19 10:49. Заголовок: SergKis пишет: если..
SergKis пишет: цитата: | если имя плагина (без расширения .hrb) есть как функция, выполнить ее (плагин перенесен в тело hbedit), |
| Проблематично. Надо менять логику работы в нескольких местах - многое заточено под номер плагина в массиве, сформированном из секции [PLUGINS], в т.ч. - назначение горячих клавиш. И, честно говоря, не вижу смысла в переносе плагина в тело основной программы - впрочем, мы об этом уже говорили. цитата: | в плагин plug_prg_spis.prg включить определения INIT WINDOW ... и DEFINE WINDOW |
| Тогда уж лучше завести ini-файл для этого плагина, который будет располагаться рядом с hrb - чтобы там можно было определить все ключевые слова, которые вам захочется отловить для списка функций.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2811
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.09.19 11:12. Заголовок: alkresin пишет Надо ..
alkresin пишет цитата: | Надо менять логику работы в нескольких местах - многое заточено под номер плагина в массиве, сформированном из секции [PLUGINS], в т.ч. - назначение горячих клавиш |
| Потому и поднял вопрос, т.к. придется каждый раз менять свой код при смене версии hbedit. Из всех плагинов нужно максимум 3 и без изменений, каталог plugins, как бы, лишний, а иногда мешающий, при уст. на разных местах (pc) цитата: | Тогда уж лучше завести ini-файл для этого плагина, который будет располагаться рядом с hrb - чтобы там можно было определить все ключевые слова, которые вам захочется отловить для списка функций. |
| Это хорошее решение, но уже несколько лет в своем проекте работает набор определений как у вас и плюс 2а про которые написал. Есть ли смысл усложнять с доп. ini ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2812
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.09.19 11:27. Заголовок: PS FUNCTION edi_Run..
PS цитата: | FUNCTION edi_RunPlugin( oEdit, xPlugin ) LOCAL i, cPlugin, cFullPath IF Valtype( xPlugin ) == "N" i := xPlugin ELSEIF Valtype( xPlugin ) == "C" i := Ascan( TEdit():aPlugins, {|a|a[1]==xPlugin} ) ENDIF IF i > 0 IF Empty( TEdit():aPlugins[i,4] ) cPlugin := TEdit():aPlugins[i,1] IF !Empty( cFullPath := edi_FindPath( "plugins" + hb_ps() + cPlugin ) ) TEdit():aPlugins[i,4] := hb_hrbLoad( cFullPath ) TEdit():aPlugins[i,5] := cFullPath ENDIF ENDIF IF !Empty( TEdit():aPlugins[i,4] ) hb_hrbDo( TEdit():aPlugins[i,4], oEdit, hb_fnameDir( TEdit():aPlugins[i,5] ) ) ENDIF ENDIF RETURN Nil |
| Может достаточно изменить выделенное цветом, остальное не трогать, т.к. в ini список плагинов будет и нужно перед выполнением проверть наличие ф-ии и выполнить, если есть. И работа с номером плагина в др. местах останется
|
|
|
alkresin
|
| moderator
|
Пост N: 1372
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.09.19 13:08. Заголовок: Недостаточно. В масс..
Недостаточно. В массив TEdit():aPlugins добавляются не все плагины, перечисленные в ini, а только те, для которых найдены соответствующие hrb - иначе в меню по F11 могут попасть несуществующие плагины.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2813
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.09.19 13:30. Заголовок: alkresin пишет Недос..
alkresin пишет цитата: | Недостаточно. В массив TEdit():aPlugins добавляются не все плагины... |
| Понял. Тогда можно перенести edi_RunPlugins() к edi_Alert() в falert.prg. В реальной работе нет F11 (меню плагинов, будет блокирована или исп. для другого), т.к. используется только 1 плагин (мах будет 3) и все на клавишах. Каталог Plugins с фиктивными hrb можно оставить.
|
|
|
alkresin
|
| moderator
|
Пост N: 1373
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.09.19 14:49. Заголовок: Что-то запутали вы м..
Что-то запутали вы меня). Проблема для вас была в наличии каталога plugins, который "как бы, лишний, а иногда мешающий" - из-за этого вы хотели перенести плагин в основной текст. А теперь пишете, что для обеспечения работы схемы "каталог Plugins с фиктивными hrb можно оставить"... Впрочем, если перенос edi_RunPlugins() в falert.prg вас выручит, я не сильно против.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2814
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.09.19 20:10. Заголовок: alkresin пишет Что-т..
alkresin пишет Совершенно не хотел этого делать. Если плагины уходят в текст hbedit, то каталог plugins, как бы лишний, но если отсутствие каталога мешает нормальной работе hbedit в др. кусках кода, то пусть каталог остается для меню, индекса и т.д., а hrb плагинов пусть лежат. Если текст плагина включен в код hbedit выполнится он, нет - выполнится плагин, если назначен в ini. У себя в работе с prg, надолго, нужен только 1 плагин, возможно, в дальнейшем еще +2а и все. С последней сборки (вашими рекомендациями) на Alt+F4 в Far повесил hbedit и практически перестал использовать Notepad3 на Enter и F4 (фаровский edit). Работа вся на клавишах, никакое меню (кроме уст. кодовой страницы) не вызывал не разу. При смене версии правится только hbedit.prg и очень немного. Как бы все устаканивается с исп. LV866 и др. кодовых страниц. Спасибо.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|