Автор | Сообщение |
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
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 2867
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.19 17:03. Заголовок: alkresin пишет: Пере..
alkresin пишет: цитата: | Переключаетесь в командный режим, нажав два раза Ctrl-Q |
| defmode=-1 Vim режим отключен и не будет командной строки цитата: | Не помню такого окошечка. Внешние программы запускаются из командного режима, как в Vim). |
|
. "Хорошо бы пива", что бы окошечко было, т.к. консоли нет, есть wvt совсем чуть-чуть и hmg цитата: | Надо менять hilight.prg, класс Hili - там определены 4 набора keywords. |
| Можно добавить, п о ж а л у й с т а ? Раскрасил hmg команды (получилось хорошо), но не хватает цвета поярче от #define ..., #include ..., т.е. startline для некоторых слов
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2868
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.19 17:54. Заголовок: alkresin пишет Прове..
alkresin пишет цитата: | Проверял без плагина (просто переместил его временно из plugins/) - все нормально. |
| У меня убран из ini (убирал hrb), результат одинаков. Вот сборка моя https://TransFiles.ru/50low на ней видно разные значения row, col после загруженного (через параметры командной строки) файла и при организации под окон Ctrl-w,s\v Подскажите, как правильно исправить ситуацию ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2869
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 10:15. Заголовок: alkresin Еще просьб..
alkresin Еще просьба - сделать список his по F4 с поиском, а не с ключом слева - добавить в edi_SeleFile() маску для файлов, тогда без доп. окна можно организовать запуск bat\cmd файлов не только компиляции (hbp у меня нет, кроме hmg, есть местами), но и др. вариантов, например, запуск notepad3 в режиме сбора инф. буфера клавиатуры - вынести меню с текстами и тексты с запросов окон в hbedit.prg для языковых вариантов, сейчас для своей сборки меняется только hbedit.prg, хотелось бы сохранить эту традицию
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2870
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 10:23. Заголовок: PSдобавить в edi_Sel..
PS цитата: | добавить в edi_SeleFile() маску для файлов |
| Просмотрел, параметр маски есть в функции. Снимается вопрос.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2871
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 11:06. Заголовок: PS Можно сделать при..
PS Можно сделать при выделении текста F3 и блоковом по Ctrl+F3 при повторном нажатии (конец выделения) не выбрасывать меню с предложением выбрать буфер клавиатуры (к примеру, по переменной в TEdit .T.\.F.) ? Режим удобен при работе одной рукой
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2872
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 11:12. Заголовок: PPS даже если ставлю..
PPS даже если ставлю #define MAX_CBOARDS 1 #define MAX_EDIT_CBOARDS 1 #define CBOARD_MINUS 1 меню с одной строкой вываливается
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2873
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 11:44. Заголовок: alkresin SergKis пи..
alkresin SergKis пишет цитата: | на ней видно разные значения row, col после загруженного (через параметры командной строки) файла и при организации под окон Ctrl-w,s\v Подскажите, как правильно исправить ситуацию ? |
| Исправил так TEdit():bNew := {|oe| iif( oe:y1 == oe:aRectFull[1]+1, ( oe:lTopPane := .F., oe:y1-- ), ), ; oe:bOnKey := {|o,n| EdOnKey(o, n) }, ; oe:bWriteTopPane := {|o,l,y| StbLine(o,l,y,cExe) }, ; __KeyBoard( chr(K_RIGHT)+chr(K_LEFT) ) } Может не очень красиво, но работает.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2874
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 13:36. Заголовок: alkresin При создан..
alkresin При создании под окна Ctrl-w,s и Ctrl-w,o (полное окно) меняется поведение клавиши Esc и не переключаются окна по Ctrl-w,w. Так должно быть ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2875
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 14:56. Заголовок: alkresin Как вызват..
alkresin Как вызвать из подключаемого блока кода плагин, вызываемый по Alt-L (Function list) ? TEdit():bNew := ... постом выше. Исходный текст обработки тут Скрытый текст
STATIC FUNCTION h_KeyInit() h_Key := { ; 1004 => {| | Nil }, ; // K_RBUTTONDOWN 30101 => {| | edi_KeyCToN( "Shift-F4" ) }, ; // New file 30102 => {| | edi_KeyCToN( "Ctrl-F4" ) }, ; // Open file 30103 => {| | edi_KeyCToN( "F2" ) }, ; // Save 30104 => {| | edi_KeyCToN( "Shift-F4" ) }, ; // Save as 30105 => {| | edi_KeyCToN( "Shift-F8" ) }, ; // Code page 30109 => {| | edi_KeyCToN( "F9" ) }, ; // F9-Menu 30201 => {| | edi_KeyCToN( "F7" ) }, ; // Find... 30202 => {| | edi_KeyCToN( "Shift-F7" ) }, ; // Find Next 30203 => {| | edi_KeyCToN( "Alt-F7" ) }, ; // Find Prev 30204 => {| | edi_KeyCToN( "Ctrl-F7" ) }, ; // Replace... 30205 => {| | edi_KeyCToN( "Alt-F8" ) }, ; // Goto... 30206 => {| | edi_KeyCToN( "Alt-B" ) }, ; // Goto the previous position 30207 => {| | edi_KeyCToN( "Alt-L" ) }, ; // Function list 30301 => {| | edi_KeyCToN( "F12" ) }, ; // List of open files 30302 => {|o,n| Window_OnKey(o, n) }, ; // Split window horizontally 30303 => {|o,n| Window_OnKey(o, n) }, ; // Split window vertically 30304 => {|o,n| Window_OnKey(o, n) }, ; // Switch window 30305 => {|o,n| Window_OnKey(o, n) }, ; // Open window fully 30306 => {|o,n| Window_OnKey(o, n) }, ; // Close window 30999 => {| | (-1) } ; // dummy } RETURN Nil STATIC FUNCTION Window_OnKey( o, n ) LOCAL r := -1 IF n == 30302 // Split window horizontally j := edi_AddWindow( o, MemoRead(o:cFileName), o:cFileName, 2, Int( (o:y2-o:y1)/2 ) ) j:lReadOnly := .T. ELSEIF n == 30303 // Split window vertically j := edi_AddWindow( o, MemoRead(o:cFileName), o:cFileName, 3, Int( (o:x2-o:x1)/2 ) ) j:lReadOnly := .T. ELSEIF n == 30304 // Switch window IF Len(o:aWindows) > 1 r := edi_KeyCToN( "Ctrl-Tab" ) // mnu_ToBuf( o, edi_FindWindow( o, .T. ) ) ENDIF ELSEIF n == 30305 // Open window fully IF o:oParent != Nil edi_CloseWindow( o, .F. ) o:oParent := Nil o:y1 := o:aRect[1] := o:aRectFull[1] o:x1 := o:aRect[2] := o:aRectFull[2] o:y2 := o:aRect[3] := o:aRectFull[3] o:x2 := o:aRect[4] := o:aRectFull[4] IF o:lTopPane o:y1 ++ ENDIF o:TextOut() edi_SetPos( o ) __KeyBoard( chr(K_RIGHT)+chr(K_LEFT) ) ENDIF ELSEIF n == 30306 // Close window ( fully window ) IF o:oParent != Nil mnu_Exit( o ) ELSEIF Len(o:aWindows) > 1 r := K_ESC ENDIF ENDIF RETURN r FUNCTION EdOnKey( o, n ) LOCAL m := n, b, i, j, k LOCAL s := hb_BitAnd( n, SHIFT_PRESSED ) != 0 LOCAL a := hb_BitAnd( n, ALT_PRESSED ) != 0 LOCAL c := hb_BitAnd( n, CTRL_PRESSED ) != 0 LOCAL p := hb_keyStd( n ) LOCAL r := -1 // ToLog(.T., n, s, a, c, p) IF p == K_F1 // help RETURN r ELSEIF p == K_F8 // colored syntaxis enabled\disabled RETURN r ELSEIF p == K_F10 // exit RETURN r ENDIF b := hb_HGetDef( h_Key, n, Nil ) If b != Nil If HB_ISBLOCK( b ) .and. ( k := EVal( b, o, n ) ) != Nil n := k Else n := b EndIf EndIf RETURN n
| Цветом выделена попытка вернуть Alt+L в обработчик, не срабатывает попытка через __Keyboard(chr(K_ALT_L)) и возврат -1 в обработчик, не срабатывает Как правильно надо ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6439
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.09.19 17:56. Заголовок: SergKis пишет: Раск..
SergKis пишет: цитата: | Раскрасил hmg команды (получилось хорошо), но не хватает цвета поярче от #define ..., #include ..., т.е. startline для некоторых слов |
| Я посмотрел раскраску под МиниГуи. Что то блеклая она какая то ... А поярче нельзя ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2876
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 17:59. Заголовок: alkresin При работе..
alkresin При работе с xml, html файлами, возможно, надо читать кодировку и при Utf-8 включать автоматом utf8 в hbedit
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6440
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.09.19 18:20. Заголовок: https://i.imgur.com/..
Можно сделать переход на редактирование сразу в меню ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2877
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 18:22. Заголовок: Andrey пишет Я посмо..
Andrey пишет цитата: | Я посмотрел раскраску под МиниГуи. Что то блеклая она какая то ... А поярче нельзя ? |
| В ini Александр уже подготовил несколько вариантов раскраски секции [PALETTE_0],[PALETTE_1],[PALETTE_2],[PALETTE_3],[PALETTE_4]. Я взял готовый [PALETTE_4] (для моих глаз хорошо), про добавку еще цвета, который поярче и есть, я просил выше. В hbedit можно создать палитру цветов свою и применить к keywords1-4 самостоятельно и довольно не трудно.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6441
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.09.19 18:25. Заголовок: Ещё по умолчанию хот..
Ещё по умолчанию хотелось бы иметь выход из редактора по Alt+X и Alt+Q (с сохранением всех файлов) как в ME7.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2878
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 18:25. Заголовок: Andrey пишет Можно с..
Andrey пишет цитата: | Можно сделать переход на редактирование сразу в меню ? |
| Стремлюсь к мах возможному переносу в меню windows режимов hbedit. То что кидал теме и выкладывал тут выше - состояние на сегодня
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6442
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.09.19 18:52. Заголовок: В ME7 очень удобное ..
В ME7 очень удобное меню по правому Ctrl+Enter В нём можно сделать свои настройки по компиляции и запуску проекта. Всё сразу сохраняется в настройках и при переносе ничего заново настраивать не надо. Вот такое меню по по правому Ctrl+Enter: Можно ли сделать такое же меню запуска ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2879
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.19 23:00. Заголовок: alkresin Можно сдел..
alkresin Можно сделать, чтобы edi_SeleFile() понимала массив на входе ? К примеру FUNCTION edi_SeleFile( oEdit, cPath, y1, x1, y2, x2 ) LOCAL aMenu := iif( HB_ISARRAY( cPath ), AClone( cPath ), edi_Directory( cPath ) ), i, nPos, arr для формирования массива из нескольких масок ф-ей edi_Directory( cPath ) в цикле
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2880
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.09.19 08:42. Заголовок: alkresin SergKis пи..
alkresin SergKis пишет цитата: | Исправил так TEdit():bNew := {|oe| iif( oe:y1 == oe:aRectFull[1]+1, ( oe:lTopPane := .F., oe:y1-- ), ), ; oe:bOnKey := {|o,n| EdOnKey(o, n) }, ; oe:bWriteTopPane := {|o,l,y| StbLine(o,l,y,cExe) }, ; __KeyBoard( chr(K_RIGHT)+chr(K_LEFT) ) } Может не очень красиво, но работает. |
| Оказалось не везде работает. Обработка сообщений меню Скрытый текст
STATIC FUNCTION Window_OnKey( o, n ) LOCAL r := -1 IF n == 30302 // Split window horizontally j := edi_AddWindow( o, MemoRead(o:cFileName), o:cFileName, 2, Int( (o:y2-o:y1)/2 ) ) j:lReadOnly := .T. // работает показ координат правильно ELSEIF n == 30303 // Split window vertically j := edi_AddWindow( o, MemoRead(o:cFileName), o:cFileName, 3, Int( (o:x2-o:x1)/2 ) ) j:lReadOnly := .T. // работает показ координат правильно ELSEIF n == 30304 // Switch window IF Len(o:aWindows) > 1 // r := edi_KeyCToN( "Ctrl-Tab" ) mnu_ToBuf( o, edi_FindWindow( o, .T. ) ) __KeyBoard( chr(K_RIGHT)+chr(K_LEFT) ) // переключение работает правильно из меню. Ctrl+Tab, Ctrl+w,w - показ // неверный координат после переключения, после стрелки - все правильно ENDIF ELSEIF n == 30305 // Open window fully IF o:oParent != Nil edi_CloseWindow( o, .F. ) o:oParent := Nil o:y1 := o:aRect[1] := o:aRectFull[1] o:x1 := o:aRect[2] := o:aRectFull[2] o:y2 := o:aRect[3] := o:aRectFull[3] o:x2 := o:aRect[4] := o:aRectFull[4] IF o:lTopPane o:y1 ++ ENDIF o:TextOut() edi_SetPos( o ) __KeyBoard( chr(K_RIGHT)+chr(K_LEFT) ) // работает показ координат правильно ENDIF ELSEIF n == 30306 // Close window ( fully window ) IF o:oParent != Nil mnu_Exit( o ) ELSEIF Len(o:aWindows) > 1 r := K_ESC ENDIF ENDIF RETURN r
| Как это побороть ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2881
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.09.19 11:09. Заголовок: PS Показ неверных ко..
PS Показ неверных координат по колонке ошибка. Row = 184, Col = 4 . Создаем под окно Ctrl-w,s, значение Row = 184, Col = 4 в под окне. Переходим в позицию Row = 192, Col = 7 Переключение по Ctrl-w,w пошаговое - жмем Ctrl-w => Row = 192, Col = 7 добавляем w, Row = 184, Col = 8 жмем -> Row = 184, Col = 5 жмем <- Row = 184, Col = 4 - жмем Ctrl-w => Row = 184, Col = 4 (правильно) добавляем w, Row = 192, Col = 29 (должна быть Col = 7) - жмем Ctrl-w => Row = 192, Col = 7 (правильно) добавляем w, Row = 184, Col = 8 (должна быть Col = 4) - жмем Ctrl-w => Row = 184, Col = 4 (правильно) добавляем w, Row = 192, Col = 29 (должна быть Col = 7) и т.д. При нажатии Ctrl-Tab получаем сразу конечные значения Row = 192, Col = 29 (должна быть Col = 7) и Row = 184, Col = 8 (должна быть Col = 4)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2882
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.09.19 12:09. Заголовок: SergKis пишет Как эт..
SergKis пишет Ларчик просто открывался Поменялись способы добычи Row, Col в :WriteTopPane() (еле высмотрел) Перенес в свою процедуру. Убрал добавки с __keyBoard() тоже, все заработало Блин столько времени ... УРА!
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|