Форум » [x]Harbour » Hbedit - текстовый редактор (продолжение) » Ответить

Hbedit - текстовый редактор (продолжение)

alkresin: Довел, наконец, свой текстовый редактор до того состояния, когда можно показать его общественности. Я начал писать его сначала как замену 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: alkresin При выделенном блоке Shift+стрелки, Ctrl+C и вставка в Far этого блока, происходит искажение данных, при тех же действиях из Far в hbedit аналогично искажаются данные, т.е.[pre2] Far выделенный блок kod provodki na pribilj LV kod provodki na pribilj ES kod provodki na pribilj OT kod provodki Pvn hbedit строки LOCAL cProvPr := gProp( ProvPr ) // LOCAL cProvPrE := gProp( ProvPrE ) // LOCAL cProvPrO := gProp( ProvPrO ) // LOCAL cProvPvn := gProp( ProvPvn ) // блок из Far по Ctrl+V вставляем за первым // и получаем LOCAL cProvPr := gProp( ProvPr ) // kod provodki na pribilj LV kod provodki na pribilj ES kod provodki na pribilj OT kod provodki Pvn LOCAL cProvPrE := gProp( ProvPrE ) // LOCAL cProvPrO := gProp( ProvPrO ) // LOCAL cProvPvn := gProp( ProvPvn ) // из hbedit в Far аналогично Между Akelpad, Notepad3 этого не происходит + из них и в Far переносится правильно [/pre2] Можно ли привести к такому же поведению hbedit, как Akelpad и Notepad3 ?

SergKis: PS На окне "Open file" может есть клавиши, для вызова списка файлов ? Как то удобно хвататься за мышь. Если нет назначенной клавиши, может, сделать как у combobox кл. F4 - развертка списка

SergKis: PPS По F4 и через меню F9 вкл. режим списка файлов истории. Пожелания: - сделать, как где то уже делали, если длина массива <= 3, то список с ключом слева (как сейчас), при > 3 список с поиском. - увеличить правую границу с 67 (стоит в некоторых местах кода) до MaxCol() - x1 - 1, тогда больше файлов (возможно все) пойдут с нормальным именем, а не с укороченным через функцию


Andrey: alkresin Большое пожелание сделать удобное меню по правому Ctrl+Enter. Как писал в Пост N: 6442 Заранее большое спасибо !

alkresin: Andrey пишет: Файлы проекта в хХарборе имеют расширение .bc Тогда в том же командном режиме: !z:\xHarbour\bin\hbmake MyPrj4.bc Исполненные команды сохраняются, так что в следующий раз жмете стрелку вверх для выбора команды из истории.

alkresin: SergKis пишет: defmode=-1 Vim режим отключен и не будет командной строки Ну так включите, ничего плохого с вами не случится - он же не по умолчанию будет. "Хорошо бы пива", что бы окошечко было, т.к. консоли нет, есть wvt совсем чуть-чуть и hmg Согласитесь, это более чем странно - добавлять альтернативный интерфейс для уже реализованной функции. В крайнем случае, если не можете жить с мыслью о том, что при нажатии Ctrl-Q может появиться Vim-режим, в ваш обработчик :bOnKey добавьте клавишу какую-нибудь, чтобы напрямую в командный режим переходить. В принципе, я могу сделать, чтобы при defmode=-1 Ctrl-Q переключала в командный режим. Можно добавить, п о ж а л у й с т а ? Раскрасил hmg команды (получилось хорошо), но не хватает цвета поярче от #define ..., #include ..., т.е. startline для некоторых слов Ok.

alkresin: SergKis пишет: Вот сборка моя https://TransFiles.ru/50low на ней видно разные значения... Прямо сейчас transfiles.ru не отзывается, может позже. сделать список his по F4 с поиском, а не с ключом слева Пожалуй, да. Сам подумывал об этом. вынести меню с текстами и тексты с запросов окон в hbedit.prg для языковых вариантов Не получится. Hbedit используется и как встроенный редактор для других приложений, а hbedit.prg туда не включается. Если нужно свое меню, сажайте его на F9 в своем :bOnKey.

SergKis: alkresin пишет Ну так включите, ничего плохого с вами не случится - он же не по умолчанию будет. Vim режим надо отключать, при включенном, что то нажал, случайно и попал в него и он начинает жить ..., т.е. пытаешься делать одно, а он что то свое, пока не выключишь. По поводу командной строки, по мне она не нужна (есть и хорошо для кого то), т.к. bat\cmd файлов, как правило, несколько и подходит, скорее, вариант от Андрея Ctrl+Enter ( меню запусков ) больше нравится для работы. Я просил (ранее) сделать для функции edi_SeleFile( oEdit, cPath, y1, x1, y2, x2 ) сделать cPath параметр и массивом именно с целью масками самому собирать список, к примеру, cmd+bat файлов (есть еще варианты списков) и его отрабатывать в :bOnKey.

alkresin: SergKis пишет: Vim режим надо отключать, при включенном, что то нажал, случайно Довольно сложно, мне кажется, случайно нажать Ctrl-Q. подходит, скорее, вариант от Андрея Ctrl+Enter Я еще не добрался до варианта от Андрея, но мое предложение переключаться в командный режим по Ctrl-Q напрямую при defmode=-1 остается в силе. Учитывая, что можно ходить по истории команд, это то же самое меню, к тому же пополняемое в процессе эксплуатации.

SergKis: PS Вот тестовый вариант, правда, только для одной маски, но получил, что хотел [pre2] STATIC FUNCTION bkDir( o, n, cMask ) LOCAL cDir := hb_DirBase()+cMask LOCAL y1 := 2 LOCAL x1 := 6 LOCAL y2 := o:aRectFull[3]-2 LOCAL x2 := 67 LOCAL i := y2 - y1 - 1 LOCAL aDir := edi_Directory( cDir ) LOCAL xFil, cWnd, k, l := 0, m := 12 AEval(aDir, {|a,p| l := Max( Len(a[1]), l ) }) l := Max( m, l ) l += 4 * 2 + 1 k := iif( Len(aDir) < i, Len(aDir), i ) + 1 y2 := iif( y1 + k > y2, y2, y1 + k ) x2 := iif( x1 + l > x2, x2, x1 + l ) cWnd := sv_wnd( y1-1, x1-1, y2+1, x2+1 ) xFil := edi_SeleFile( o, cDir, y1, x1, y2, x2 ) rs_wnd(cWnd) RETURN Nil [/pre2]

alkresin: SergKis пишет: Можно сделать при выделении текста F3 и блоковом по Ctrl+F3 при повторном нажатии (конец выделения) не выбрасывать меню с предложением выбрать буфер клавиатуры Нет необходимости повторно нажимать F3/Ctrl-F3. Закончили выделение - забираете в буфер (Ctrl-C, Ctrl-Ins) и все.

SergKis: alkresin пишет Учитывая, что можно ходить по истории команд, это то же самое меню, к тому же пополняемое в процессе эксплуатации. У меня в базовом варианте работы уже стоит 100 строк истории и это не предел, потому просил увеличить ширину окна списка до MaxCol()-x1-1 или до самой правой границы (по коротким именам файлов ничего не понять по проектам одинаково организованным). Стоят настройки окна hbedit fontheight=21 fontwidth=10 screen_width=129 screen_height=32 по размеру шрифта и размерам очень близко к Akelpad и Notepad3.

SergKis: alkresin пишет Нет необходимости повторно нажимать F3/Ctrl-F3. Закончили выделение - забираете в буфер (Ctrl-C, Ctrl-Ins) и все. Без повторного нажатия продолжает красить блок, нажав esc вылетаешь из окна с текстом.

alkresin: SergKis пишет: При создании под окна Ctrl-w,s и Ctrl-w,o (полное окно) меняется поведение клавиши Esc и не переключаются окна по Ctrl-w,w. После Ctrl-w,o окно перестает быть дочерним, это обычное, равноправное окно, переключение по Ctrl-Tab. А Ctrl-w,w - только для дочерних окон.

alkresin: SergKis пишет: Без повторного нажатия продолжает красить блок, нажав esc вылетаешь из окна с текстом. Хм... Действительно, после Ctrl-C продолжает красить, а после Ctrl-Ins (я им обычно пользуюсь) - все нормально. Проверю, в чем дело.

SergKis: alkresin пишет После Ctrl-w,o окно перестает быть дочерним, это обычное, равноправное окно, переключение по Ctrl-Tab. А Ctrl-w,w - только для дочерних окон. Да, увидел по текстам. Только возникает "визуальная" путаница окна Edit и копии View. В моем полно экранном варианте при горизонтальном делении и перевода доч. окна в полный экран, остается в 0 строке полоса разделения, что очень хорошо для понимания доч.окна.

SergKis: alkresin пишет Не получится. Hbedit используется и как встроенный редактор для других приложений, а hbedit.prg туда не включается. Если нужно свое меню, сажайте его на F9 в своем :bOnKey. Я имел ввиду ваши меню + тексты вынести, к примеру, в PUBLIC (hbedit.prg) STATIC переменные в каждом своем prg файле с функциями получения адреса, чтобы в своеем варианте, ключи (значения) "родных" значений можно было подменить языковыми данными из языковых файлов utf8 кодировки. Т.е. нужен доступ к данным, чтобы не трогать базовые тексты hbedit Прямо сейчас transfiles.ru не отзывается, может позже. С ситуацией неправильной подсветки разобрался. В WriteTopPane поменялся вариант отображения row, col, а у меня остался старый, расчетный. Смотрел, но глаз замылился и не как не мог увидеть изменения. Сейчас поправил и все ok!

SergKis: alkresin пишет Я еще не добрался до варианта от Андрея, но мое предложение переключаться в командный режим по Ctrl-Q напрямую при defmode=-1 остается в силе Привычнее, Notepad3, Ctrl+R => окно запроса запуска, но лучше список запусков без окна, Ctrl+Q будет занята, наверно, списком проекта, т.к. hbp не использую

alkresin: SergKis пишет: Как вызвать из подключаемого блока кода плагин, вызываемый по Alt-L (Function list) ? Горячие клавиши для плагинов хранятся в hKeyMap - там же, где переназначения клавиш, и обрабатываются в :Edit() до вызова :onKey(), поэтому ваши варианты не сработают. Надо просто напрямую запустить нужный плагин.

SergKis: alkresin пишет Горячие клавиши для плагинов хранятся в hKeyMap - там же, где переназначения клавиш, и обрабатываются в :Edit() до вызова :onKey(), поэтому ваши варианты не сработают. Надо просто напрямую запустить нужный плагин. Возможно, это не очень хорошо, т.к. я повторил (ф-я Window_OnKey()) для Ctrl-w,.. (они тоже не срабатывают замену на Alt-1,.. по той же причине) часть кода из меню mnu_Windows() по обработке, т.е. я повторяю ваши алгоритмы обработчика и если, в какой то, версии hbedit они изменятся, то будет "мило", с начала определить изменения и потом перенести\перестроить алгоритмы в свою часть. Может, :OnKey, сможет определить возврат (команды) из :bOnKey и выполнить плагины и др. не исполняемые сейчас команды ?



полная версия страницы