Отправлено: 04.04.19 14:37. Заголовок: Hbedit - текстовый редактор (продолжение)
Довел, наконец, свой текстовый редактор до того состояния, когда можно показать его общественности. Я начал писать его сначала как замену Memoedit(), но потом увлекся) и решил сделать что-то помощнее, как нормальный редактор для повседневного использования. Мне приходится в течение дня работать и под виндами, и под Линуксом - использую Far и mc, соответственно. Иногда Vim - но к некоторым вещам в нем так и не привык. Но хочется иметь что-то одно для всех платформ - не слишком навороченный, но чтоб было все что надо. Сегодня выложил на github: https://github.com/alkresin/hbedit. F9 (или мышкой по соответствующей надписи) - главное меню. В ближайших планах: - Lower/Upper для utf8 - новые режимы подсветки ( директивы препроцессора и пр. ) - скобки - подсветка парных и переход на парные - undo - решить проблемы с табуляцие - сохранение истории открытых файлов, поиска - написать help (hbedit.help)
Если есть идеи для реализации - буду рад услышать.
Переключаетесь в командный режим, нажав два раза 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 меню с одной строкой вываливается
на ней видно разные значения row, col после загруженного (через параметры командной строки) файла и при организации под окон Ctrl-w,s\v Подскажите, как правильно исправить ситуацию ?
Отправлено: 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 := ... постом выше. Исходный текст обработки тут Скрытый текст
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 в обработчик, не срабатывает Как правильно надо ?
Можно сделать переход на редактирование сразу в меню ?
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 ) в цикле
Оказалось не везде работает. Обработка сообщений меню Скрытый текст
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
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() тоже, все заработало Блин столько времени ... УРА!
Все даты в формате GMT
3 час. Хитов сегодня: 51
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет