Автор | Сообщение |
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: 1393
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 12:33. Заголовок: SergKis пишет: Може..
SergKis пишет: цитата: | Может, :OnKey, сможет определить возврат (команды) из :bOnKey и выполнить плагины и др. не исполняемые сейчас команды ? |
| :onKey() отрабатывает после того, как будет разобран hKeyMap и переопределенные клавиши преобразуются в предопределенные. :onKey() получает предопределенные в программе клавиши - такова логика программы. Alt-L и прочие определены в ini-файле, :onKey() о них ничего не знает.
|
|
|
alkresin
|
| moderator
|
Пост N: 1394
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 12:41. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно сделать переход на редактирование сразу в меню ? |
| Не понял, что означает "переход на редактирование" ? "Попасть в редактирование этой настройки" - тоже не понял, что имеется ввиду. цитата: | Ещё по умолчанию хотелось бы иметь выход из редактора по Alt+X и Alt+Q (с сохранением всех файлов) как в ME7. |
| Вы можете переопределить клавиши в ini-файле: Alt-X=>F10
|
|
|
alkresin
|
| moderator
|
Пост N: 1395
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 12:46. Заголовок: Andrey пишет: В ME7..
Andrey пишет: цитата: | В ME7 очень удобное меню по правому Ctrl+Enter В нём можно сделать свои настройки по компиляции и запуску проекта. ... |
| В hbedit для таких вещей есть плагины. Напишите свой плагин, который реализует такое меню (помогу, если надо) и пропишите его в ini-файле с нужной горячей клавишей.
|
|
|
alkresin
|
| moderator
|
Пост N: 1396
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 12:56. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно сделать, чтобы edi_SeleFile() понимала массив на входе ? |
| Я так понимаю, что нужен массив масок, а не путей?
|
|
|
alkresin
|
| moderator
|
Пост N: 1397
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 12:57. Заголовок: SergKis пишет: При ..
SergKis пишет: цитата: | При выделенном блоке Shift+стрелки, Ctrl+C и вставка в Far этого блока, происходит искажение данных, |
| А что искажается? Я из вашего примера ничего не увидел.
|
|
|
alkresin
|
| moderator
|
Пост N: 1398
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 12:59. Заголовок: SergKis пишет: На о..
SergKis пишет: цитата: | На окне "Open file" может есть клавиши, для вызова списка файлов ? Как то удобно хвататься за мышь |
| Ctrl+стрелка вниз.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2899
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.09.19 13:56. Заголовок: alkresin пишет Я так..
alkresin пишет цитата: | Я так понимаю, что нужен массив масок, а не путей? |
| Со списком масок не надо, т.к. кроме строк от масок, можно подсунуть ключевые слова и после меню их отрабатывать. Скорее, общий вариант вызова меню на массив с поиском, какой это будет массив, от путей полученный или др. способом, это не важно. Надо что бы он формировался по координатам от max длины строк и кол-ва строк массива, не выходя за пределы MaxRow(), MaxCol(). К примеру у меня будет (если дойдет до этого по планам) hbedit.cfg формата ini utf8 кодировки, с языковыми секциями и секциями, которые хочет Андрей на Ctrl+Enter, т.е. Название пункта меню и что выполнить (bat,cmd,...) и как выполнить типа RunWait или Run цитата: | В hbedit для таких вещей есть плагины. Напишите свой плагин, который реализует такое меню (помогу, если надо) и пропишите его в ini-файле с нужной горячей клавишей. |
| По мне, плагин тут не нужен, нужно просто меню выше описанное, команда меню и гор. клавиша. Понял, а то жму все время стрелку вверх (типа получить пред. значение) или F4. По стрелке вниз идет переключение фокуса (это еще надо увидеть - не очень наглядно) на [^] и надо еще жать SPACE для получения списка, по мне лишнее тело движение. В задачах делаю Enter на пустом поле или F5 -> сразу список. цитата: | А что искажается? Я из вашего примера ничего не увидел |
| Искажалась подсветка Row, Col при первом входе и переключении окон Crtl-Tab. После любого перемещения подсветка становилась правильной. Сейчас это исправлено, новыми вариантами из WriteTopPane (у меня был вариант из первых версий) цитата: | Вы можете переопределить клавиши в ini-файле: Alt-X=>F10 |
| Имеется ввиду алгоритм выхода из всех загруженных окон сразу цитата: | :onKey() отрабатывает после того, как будет разобран hKeyMap и переопределенные клавиши преобразуются в предопределенные. :onKey() получает предопределенные в программе клавиши - такова логика программы. Alt-L и прочие определены в ini-файле, :onKey() о них ничего не знает. |
| Может можно перестроить, сначала исполнить :bOnKey и потом возврат и исполнение того о чем написали.
|
|
|
alkresin
|
| moderator
|
Пост N: 1400
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 14:04. Заголовок: Обновлен hbedit. Доб..
Обновлен hbedit. Добавлена опция keywords5 и еще разные исправления и улучшения, сделанные за прошедшее время.
|
|
|
alkresin
|
| moderator
|
Пост N: 1401
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.19 14:17. Заголовок: SergKis пишет: Имее..
SergKis пишет: цитата: | Имеется ввиду алгоритм выхода из всех загруженных окон сразу |
| В vim-режиме для этого есть команды ZZ (выход из всех окон с сохранением) и ZQ (без сохранения). Можно добавить в keymap в ini, например: Alt-F10=>Ctrl-Q|Z|Z Ну и разрешить активацию vim-режима, конечно.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2902
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.09.19 16:10. Заголовок: alkresin пишет Добав..
alkresin пишет цитата: | Добавлена опция keywords5 |
| Спасибо, работает
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2903
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.09.19 17:02. Заголовок: alkresin Поправьте ..
alkresin Поправьте у себя METHOD WriteTopPane( lClear ) CLASS TEdit LOCAL y := ::y1 - 1, nCol := Col(), nRow := Row(), nF9 := 0 LOCAL cLen := Ltrim(Str(Len(::aText))), nchars := Len(cLen) SetColor( ::cColorPane ) IF ::lTopPane Scroll( y, ::x1, y, ::x2 ) ENDIF IF ::oParent != Nil .AND. ::x1 == ::oParent:x2 + 2 Scroll( ::y1, ::x1-1, ::y2, ::x1-1 ) ENDIF IF ::bWriteTopPane != Nil Eval( ::bWriteTopPane, Self, lClear, y ) ELSE IF ::lTopPane DispBegin() // Scroll( y, ::x1, y, ::x2 ) IF Empty( lClear )
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2904
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.09.19 22:26. Заголовок: PS или так IF ::b..
PS или так IF ::bWriteTopPane != Nil IF ::lTopPane Scroll( y, ::x1, y, ::x2 ) ENDIF Eval( ::bWriteTopPane, Self, lClear, y ) ELSE
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2905
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.09.19 00:36. Заголовок: alkresin SergKis пи..
alkresin SergKis пишет: цитата: | При выделенном блоке Shift+стрелки, Ctrl+C и вставка в Far этого блока, происходит искажение данных, |
| alkresin пишет цитата: | А что искажается? Я из вашего примера ничего не увидел. |
| 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 ) // должно быть LOCAL cProvPr := gProp( ProvPr ) // kod provodki na pribilj LV LOCAL cProvPrE := gProp( ProvPrE ) // kod provodki na pribilj ES LOCAL cProvPrO := gProp( ProvPrO ) // kod provodki na pribilj OT LOCAL cProvPvn := gProp( ProvPvn ) // kod provodki Pvn синим цветом искажение, строки вставки справа за // разорвали последовательность 4х строк, образовав новые строки
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2906
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.09.19 00:42. Заголовок: PS Akelpad, Notepad3..
PS Akelpad, Notepad3 делают операцию правильно + в Far блок выделенный, как выше, из них переносится тоже правильно, т.е. получаем строки как "должно быть" без искажений
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2907
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.09.19 00:53. Заголовок: PPS Far между собой,..
PPS Far между собой, по F4 делает правильно, в hbedit, akelpad, notepad3 переносит искажая hbedit искажает и между собой, 2а запуска hbedit, и в akelpad, notepad3, far переносит искажая
|
|
|
alkresin
|
| moderator
|
Пост N: 1402
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.12.19 09:54. Заголовок: Обновлен hbedit. Нес..
Обновлен hbedit. Несколько мелких правок. Добавлено два плагина, игра Сокобан (передвигаем ящики по лабиринту в конечные позиции) и игра StarTrek (помнится, лет 35 назад мы резались в нее еще на СМ-4).
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3006
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.01.20 15:28. Заголовок: SergKis пишет F..
SergKis пишет цитата: | 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 ) // должно быть LOCAL cProvPr := gProp( ProvPr ) // kod provodki na pribilj LV LOCAL cProvPrE := gProp( ProvPrE ) // kod provodki na pribilj ES LOCAL cProvPrO := gProp( ProvPrO ) // kod provodki na pribilj OT LOCAL cProvPvn := gProp( ProvPvn ) // kod provodki Pvn |
| синим цветом искажение, строки вставки справа за // разорвали последовательность 4х строк, образовав новые строки Такая правка в fedit.prg FUNCTION cb2Text( oEdit, nReg, lToText, s, lVert ) ... IF Chr(13) $ s s := Strtran( s, Chr(13), "" ) ENDIF lVert := lVert .or. oEdit:nPos > 1 IF lVert oEdit:Undo( oEdit:nLine, oEdit:nPos,,, UNDO_OP_START ) ... исправила ситуацию. Из Far так же правильно столбиком переносит.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3007
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.01.20 13:46. Заголовок: PS Правка небольшая ..
PS Правка небольшая lVert := lVert .or. ( oEdit:nPos > 1 .and. chr(10) $ s )
|
|
|
alkresin
|
| moderator
|
Пост N: 1409
Зарегистрирован: 06.07.06
|
|
Отправлено: 10.02.20 16:44. Заголовок: Выделяю Far'ом в..
Выделяю Far'ом вертикальный блок, вставляю в Akelpad и в Notepad3 (взял тексты из вашего примера) - и вставляется как обычный блок, не как вертикальный. Или я что-то не так понял? В предложенной вами правке есть та проблема, что любой многострочный блок будет вставляться как вертикальный, если он вставляется не с первой позиции, что в общем случае неправильно. Возможно, стоит еще посчитать количество символов в каждой строке блока - если оно одинаково, то считать блок вертикальным.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3048
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.02.20 19:08. Заголовок: alkresin пишет Выдел..
alkresin пишет цитата: | Выделяю Far'ом вертикальный блок, вставляю в Akelpad и в Notepad3 |
| То же происходит и из hbedit в Akelpad и в Notepad3, а между Akelpad и Notepad3 и Notepad2 вставки вертикальных блоков происходят нормально, без эффекта как из Far. Сделанные мной изменения, работаю с того времени и решили проблему, для меня на все 100%, т.е. Если курсор в позиции > 1 - вставка вертикального блока от позиции курсора и ниже, даже если явзял не вертикальный блок, а блок строк, главное, нет искажения, типа с середины строки пошла первая строка вставки, а остальные прыгнули с первой позиции в след. строках, которые в большинсве случаев надо исправлять.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|