Автор | Сообщение |
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: 2517
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.05.19 21:46. Заголовок: alkresin пишет Я доб..
alkresin пишет цитата: | Я добавил функцию edi_RunPlugin( xPlugin ) |
| т.е. делать так (в тек. версии функции нет) ElseIf n == 30105; edi_RunPlugin( xName ); n := -1 Как узнать имя или номер плагина ? Номер это из общего списка или списка на LANG_... тип ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2518
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.05.19 21:52. Заголовок: PS Понял, номер бере..
PS Понял, номер берем из общего списка. Что является именем ключ ini p1 = ... или элемент значения до первой запятой ?
|
|
|
alkresin
|
| moderator
|
Пост N: 1247
Зарегистрирован: 06.07.06
|
|
Отправлено: 03.05.19 22:29. Заголовок: SergKis пишет: Что ..
SergKis пишет: цитата: | Что является именем ключ ini p1 = ... или элемент значения до первой запятой ? |
| Второе. Например, plug_prg_spis.hrb
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2519
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.05.19 22:51. Заголовок: Спасибо. Еще вопрос...
Спасибо. Еще вопрос. Кол-во окон определяем Len( oEdit:aWindows ) Как получить номер текущего окна ? Думаю подсветить в Statusbar, может и в строку с F9-Menu это надо сделать, что бы понимать где находимся при Ctrl+TAB При поиске, на окне в поле текст selected, вставляю из clipboard, что искать и текст вставляется перед текстом, который selected, т.е. имеем оба текста При выбора загружаемого, при пустом поле, по Enter получаем работу в новом пустом окне - типа режим new file, лучше открыть список файлов для выбора Заметил, при повторном выборе того же файла для загрузки, загрузка не производится, переключаемся на загруженный ранее. Мне думается, это не правильно. Лучше загрузить повторно, но вкл. режим readonly. Повторные загрузки удобны тем, что можно работать в разных местах текста, используя во всех список функций, имея возможность править первый загруженный. То же можно делать при групповой загрузке одного и того же файла (такой режим сейчас работает)
|
|
|
alkresin
|
| moderator
|
Пост N: 1248
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.05.19 08:51. Заголовок: SergKis пишет: Как ..
SergKis пишет: цитата: | Как получить номер текущего окна ? |
| oEdit:nCurr цитата: | Заметил, при повторном выборе того же файла для загрузки, загрузка не производится, переключаемся на загруженный ранее. Мне думается, это не правильно. |
| Наверное, здесь надо поставить вставить вопрос (edi_Alert) с выбором вариантов: переключиться на открытое окно, создать новое окно, создать новое в readonly.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2521
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.05.19 09:30. Заголовок: alkresin пишет oEdit..
alkresin пишет Спасибо. Уже нашел и вывел в item к режиму как Wiin. Nr [ Max ] цитата: | Наверное, здесь надо поставить вставить вопрос (edi_Alert) с выбором вариантов: переключиться на открытое окно, создать новое окно, создать новое в readonly. |
| По мне, это лишнее, т.к. если произведена повторная загрузка, то она в view и не мешает, Заранее не знаю какие доп. файлы надо подгружать и сколько раз, определяется во время работы. К примеру, h_tbrowse.prg (~750 entity) беру в AkelPad для правки, по мере надобности загружаю 1 или 2 Far для просмотра в др. местах кода, если не хватает запускаю notepsd3, бывает еще доп. Far запускаю. Если переложить на hbedit, то лишние вопросы alert будут мешать. Вот цвет фона поменять для view режима, было бы хорошо
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2522
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.05.19 09:49. Заголовок: PS Пометить первый э..
PS Пометить первый экземпляр загруженного файла в readony (edit->view) не с команды, а динамически - это надо, т.к. уже работаешь с каким то, а нужно с др. проекта подгрузить и закрыть от изменений
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2523
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.05.19 09:56. Заголовок: PPS Такие операции к..
PPS Такие операции как переключить окно, поставить readonly, ... хорошо делать па правый клик повесив меню. Не смотрел, есть в TEdit блок кода аналогичный :bOnKey
|
|
|
alkresin
|
| moderator
|
Пост N: 1249
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.05.19 17:48. Заголовок: SergKis пишет: По м..
SergKis пишет: цитата: | По мне, это лишнее, т.к. если произведена повторная загрузка, то она в view и не мешает |
| Может случиться (со мной случается), что пользователь повторно открывает файл, просто забыв, что он уже открыт - в этом случае такой alert будет полезен. цитата: | Вот цвет фона поменять для view режима, было бы хорошо |
| Сейчас для readonly в панели статуса написано в правом углу View.
|
|
|
alkresin
|
| moderator
|
Пост N: 1250
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.05.19 17:51. Заголовок: Обновил hbedit (толь..
Обновил hbedit (только на github) - добавил сохранение макросов в his, bWriteTopPane и еще что-то по мелочи. Сейчас придется переписать отдельные части для нормальной поддержки табуляции.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2526
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.05.19 21:03. Заголовок: alkresin Перенес на..
alkresin Перенес назад вызов блока, т.к. у меня режим ::lTopPane := .F. METHOD WriteTopPane( lClear ) CLASS TEdit LOCAL y := ::y1 - 1, nCol := ::nCol, nRow := ::nRow LOCAL cLen := Ltrim(Str(Len(::aText))), nchars := Len(cLen) IF ::bWriteTopPane != Nil Eval( ::bWriteTopPane, Self, y ) ENDIF IF ::lTopPane DispBegin() SetColor( ::cColorPane ) Scroll( y, ::x1, y, ::x2 ) IF Empty( lClear ) // IF ::bWriteTopPane != Nil // Eval( ::bWriteTopPane, Self, y ) // ELSE ...
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2527
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.05.19 10:10. Заголовок: alkresin Как узнать..
alkresin Как узнать, какой LANG_... (тип синтаксиса) у конкретного oEdit ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2528
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.05.19 10:29. Заголовок: PS Как получить спис..
PS Как получить список плагинов на конкретный oEdit, т.е. LANG_... (тип синтаксиса) ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2529
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.05.19 17:35. Заголовок: SergKis пишет Как уз..
SergKis пишет цитата: | Как узнать, какой LANG_... (тип синтаксиса) у конкретного oEdit ? Как получить список плагинов на конкретный oEdit, т.е. LANG_... (тип синтаксиса) ? |
| Разобрался: 1. oEdше:cSyntaxType, подсветил у режима 2. надо получать на базе ф-ии mnu_Plugins( oEdit )
|
|
|
alkresin
|
| moderator
|
Пост N: 1251
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.05.19 09:14. Заголовок: SergKis пишет: т.к...
SergKis пишет: цитата: | т.к. у меня режим ::lTopPane := .F. |
| А смысл?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2530
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.19 10:36. Заголовок: alkresin пишет А смы..
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2531
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.19 10:47. Заголовок: PS Еще, по возможнос..
PS Еще, по возможности максимально переведутся режимы hbedit на меню по правой кнопке мыши
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2532
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.19 10:51. Заголовок: PPS Имеется ввиду ме..
PPS Имеется ввиду меню виндосовское по wvt_TrackPopupMenu( hMnu )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2533
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.05.19 12:16. Заголовок: alkresin пишет А смы..
alkresin пишет 1. Что бы линии с F9-Menu не было никогда, сейчас она появляется после загрузки Open file 2. Кол-во строк на экране можно было сделать на строку меньше, т.е. MaxRow()-1, т.к. StatusBar съедает от клиентской области 1 строку
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2534
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.05.19 10:12. Заголовок: alkresin 1. Постави..
alkresin 1. Поставил значение DATA lTopPane INIT .F. // .T. строка с F9-Menu не прорисовывается, в параметрах для :New(..., .F.) указывать не надо. Все как хотелось. Осталось найти, как\где уменьшить кол-во строк на экране. Подозреваю, что это oEdit:y2, пока не проверял. 2. Ctrl+Y удаляет строку но перескакивает на несколько строк ниже, к примеру, удаляем 59, перескок на 62 и т.д. 3. Ставлю на входе в hbedit.prg IF Empty( TEdit():aWindows ) TEdit():New( "", "", 0, 0, nScreenH-1, nScreenW-1, , lTopPane ) IF lRO ATail(TEdit():aWindows):lReadOnly := .T. ENDIF ENDIF FOR i := 1 TO Len( TEdit():aWindows ) TEdit():aWindows[ i ]:bOnKey := {|o,n| EdOnKey(o, n) } TEdit():aWindows[ i ]:bWriteTopPane := {|o,n| StBline(o, n) } NEXT IF nStartLine != Nil С загруженными все работает. Делаю Open file или New file для них, новых, не работает, нет установки этих блоков. Т.е. переключаю (Crtl+TAB) на загруженный ранее при входе - работают блоки, на новые переключаю - не работают, блоков кода у них нет. Это видно в представленном примере hbedit выше. Думаю поставить значения блоков в DATA bOnKey, bWriteTopPane т.е. DATA bOnKey INIT {|o,n| EdOnKey(o, n) } DATA bWriteTopPane INIT {|o,n| StBline(o, n) } Или не стоит так делать ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|