On-line: MIKHAIL, Alex_Cher, гостей 1. Всего: 3 [подробнее..]
АвторСообщение
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)

Если есть идеи для реализации - буду рад услышать.

Спасибо: 0 
Профиль
Ответов - 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() о них ничего не знает.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1394
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.09.19 12:41. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно сделать переход на редактирование сразу в меню ?


Не понял, что означает "переход на редактирование" ? "Попасть в редактирование этой настройки" - тоже не понял, что имеется ввиду.

 цитата:
Ещё по умолчанию хотелось бы иметь выход из редактора по Alt+X и Alt+Q (с сохранением всех файлов) как в ME7.


Вы можете переопределить клавиши в ini-файле:
Alt-X=>F10

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1395
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.09.19 12:46. Заголовок: Andrey пишет: В ME7..


Andrey пишет:

 цитата:
В ME7 очень удобное меню по правому Ctrl+Enter
В нём можно сделать свои настройки по компиляции и запуску проекта.
...


В hbedit для таких вещей есть плагины. Напишите свой плагин, который реализует такое меню (помогу, если надо) и пропишите его в ini-файле с нужной горячей клавишей.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1396
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.09.19 12:56. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно сделать, чтобы edi_SeleFile() понимала массив на входе ?


Я так понимаю, что нужен массив масок, а не путей?

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1397
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.09.19 12:57. Заголовок: SergKis пишет: При ..


SergKis пишет:

 цитата:
При выделенном блоке Shift+стрелки, Ctrl+C и вставка в Far этого блока, происходит искажение данных,


А что искажается? Я из вашего примера ничего не увидел.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1398
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.09.19 12:59. Заголовок: SergKis пишет: На о..


SergKis пишет:

 цитата:
На окне "Open file" может есть клавиши, для вызова списка файлов ?
Как то удобно хвататься за мышь


Ctrl+стрелка вниз.

Спасибо: 0 
Профиль
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-файле с нужной горячей клавишей.


По мне, плагин тут не нужен, нужно просто меню выше описанное, команда меню и гор. клавиша.

 цитата:
Ctrl+стрелка вниз.


Понял, а то жму все время стрелку вверх (типа получить пред. значение) или F4.
По стрелке вниз идет переключение фокуса (это еще надо увидеть - не очень наглядно) на [^] и надо еще жать SPACE для получения списка, по мне лишнее тело движение. В задачах делаю Enter на пустом поле или F5 -> сразу список.

 цитата:
А что искажается? Я из вашего примера ничего не увидел


Искажалась подсветка Row, Col при первом входе и переключении окон Crtl-Tab. После любого перемещения подсветка становилась правильной. Сейчас это исправлено, новыми вариантами из WriteTopPane (у меня был вариант из первых версий)

 цитата:
Вы можете переопределить клавиши в ini-файле:
Alt-X=>F10


Имеется ввиду алгоритм выхода из всех загруженных окон сразу

 цитата:
:onKey() отрабатывает после того, как будет разобран hKeyMap и переопределенные клавиши преобразуются в предопределенные. :onKey() получает предопределенные в программе клавиши - такова логика программы. Alt-L и прочие определены в ini-файле, :onKey() о них ничего не знает.


Может можно перестроить, сначала исполнить :bOnKey и потом возврат и исполнение того о чем написали.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1400
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.09.19 14:04. Заголовок: Обновлен hbedit. Доб..


Обновлен hbedit.
Добавлена опция keywords5 и еще разные исправления и улучшения, сделанные за прошедшее время.

Спасибо: 0 
Профиль
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-режима, конечно.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2902
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.09.19 16:10. Заголовок: alkresin пишет Добав..


alkresin пишет
 цитата:
Добавлена опция keywords5


Спасибо, работает

Спасибо: 0 
Профиль
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 )


Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
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х строк, образовав новые строки

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2906
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.09.19 00:42. Заголовок: PS Akelpad, Notepad3..


PS
Akelpad, Notepad3 делают операцию правильно + в Far блок выделенный, как выше, из них переносится тоже правильно, т.е. получаем строки как "должно быть" без искажений

Спасибо: 0 
Профиль
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 переносит искажая

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1402
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.12.19 09:54. Заголовок: Обновлен hbedit. Нес..


Обновлен hbedit.
Несколько мелких правок.
Добавлено два плагина, игра Сокобан (передвигаем ящики по лабиринту в конечные позиции) и игра StarTrek (помнится, лет 35 назад мы резались в нее еще на СМ-4).

Спасибо: 0 
Профиль
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 так же правильно столбиком переносит.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 3007
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.01.20 13:46. Заголовок: PS Правка небольшая ..


PS
Правка небольшая
lVert := lVert .or. ( oEdit:nPos > 1 .and. chr(10) $ s )

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1409
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 10.02.20 16:44. Заголовок: Выделяю Far'ом в..


Выделяю Far'ом вертикальный блок, вставляю в Akelpad и в Notepad3 (взял тексты из вашего примера) - и вставляется как обычный блок, не как вертикальный. Или я что-то не так понял?

В предложенной вами правке есть та проблема, что любой многострочный блок будет вставляться как вертикальный, если он вставляется не с первой позиции, что в общем случае неправильно. Возможно, стоит еще посчитать количество символов в каждой строке блока - если оно одинаково, то считать блок вертикальным.

Спасибо: 0 
Профиль
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 - вставка вертикального блока от позиции курсора и ниже, даже если явзял
не вертикальный блок, а блок строк, главное, нет искажения, типа с середины строки пошла первая строка
вставки, а остальные прыгнули с первой позиции в след. строках, которые в большинсве случаев надо
исправлять.

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 169
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет