Форум » [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 пишет Я добавил функцию edi_RunPlugin( xPlugin ) т.е. делать так (в тек. версии функции нет) ElseIf n == 30105; edi_RunPlugin( xName ); n := -1 Как узнать имя или номер плагина ? Номер это из общего списка или списка на LANG_... тип ?

SergKis: PS Понял, номер берем из общего списка. Что является именем ключ ini p1 = ... или элемент значения до первой запятой ?

alkresin: SergKis пишет: Что является именем ключ ini p1 = ... или элемент значения до первой запятой ? Второе. Например, plug_prg_spis.hrb


SergKis: Спасибо. Еще вопрос. Кол-во окон определяем Len( oEdit:aWindows ) Как получить номер текущего окна ? Думаю подсветить в Statusbar, может и в строку с F9-Menu это надо сделать, что бы понимать где находимся при Ctrl+TAB При поиске, на окне в поле текст selected, вставляю из clipboard, что искать и текст вставляется перед текстом, который selected, т.е. имеем оба текста При выбора загружаемого, при пустом поле, по Enter получаем работу в новом пустом окне - типа режим new file, лучше открыть список файлов для выбора Заметил, при повторном выборе того же файла для загрузки, загрузка не производится, переключаемся на загруженный ранее. Мне думается, это не правильно. Лучше загрузить повторно, но вкл. режим readonly. Повторные загрузки удобны тем, что можно работать в разных местах текста, используя во всех список функций, имея возможность править первый загруженный. То же можно делать при групповой загрузке одного и того же файла (такой режим сейчас работает)

alkresin: SergKis пишет: Как получить номер текущего окна ? oEdit:nCurr Заметил, при повторном выборе того же файла для загрузки, загрузка не производится, переключаемся на загруженный ранее. Мне думается, это не правильно. Наверное, здесь надо поставить вставить вопрос (edi_Alert) с выбором вариантов: переключиться на открытое окно, создать новое окно, создать новое в readonly.

SergKis: alkresin пишет oEdit:nCurr Спасибо. Уже нашел и вывел в item к режиму как Wiin. Nr [ Max ] Наверное, здесь надо поставить вставить вопрос (edi_Alert) с выбором вариантов: переключиться на открытое окно, создать новое окно, создать новое в readonly. По мне, это лишнее, т.к. если произведена повторная загрузка, то она в view и не мешает, Заранее не знаю какие доп. файлы надо подгружать и сколько раз, определяется во время работы. К примеру, h_tbrowse.prg (~750 entity) беру в AkelPad для правки, по мере надобности загружаю 1 или 2 Far для просмотра в др. местах кода, если не хватает запускаю notepsd3, бывает еще доп. Far запускаю. Если переложить на hbedit, то лишние вопросы alert будут мешать. Вот цвет фона поменять для view режима, было бы хорошо

SergKis: PS Пометить первый экземпляр загруженного файла в readony (edit->view) не с команды, а динамически - это надо, т.к. уже работаешь с каким то, а нужно с др. проекта подгрузить и закрыть от изменений

SergKis: PPS Такие операции как переключить окно, поставить readonly, ... хорошо делать па правый клик повесив меню. Не смотрел, есть в TEdit блок кода аналогичный :bOnKey

alkresin: SergKis пишет: По мне, это лишнее, т.к. если произведена повторная загрузка, то она в view и не мешает Может случиться (со мной случается), что пользователь повторно открывает файл, просто забыв, что он уже открыт - в этом случае такой alert будет полезен. Вот цвет фона поменять для view режима, было бы хорошо Сейчас для readonly в панели статуса написано в правом углу View.

alkresin: Обновил hbedit (только на github) - добавил сохранение макросов в his, bWriteTopPane и еще что-то по мелочи. Сейчас придется переписать отдельные части для нормальной поддержки табуляции.

SergKis: alkresin Перенес назад вызов блока, т.к. у меня режим ::lTopPane := .F.[pre2] 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 ... [/pre2]

SergKis: alkresin Как узнать, какой LANG_... (тип синтаксиса) у конкретного oEdit ?

SergKis: PS Как получить список плагинов на конкретный oEdit, т.е. LANG_... (тип синтаксиса) ?

SergKis: SergKis пишет Как узнать, какой LANG_... (тип синтаксиса) у конкретного oEdit ? Как получить список плагинов на конкретный oEdit, т.е. LANG_... (тип синтаксиса) ? Разобрался: 1. oEdше:cSyntaxType, подсветил у режима 2. надо получать на базе ф-ии mnu_Plugins( oEdit )

alkresin: SergKis пишет: т.к. у меня режим ::lTopPane := .F. А смысл?

SergKis: alkresin пишет А смысл? Нет строки отображения по :lTopPane == .T. Есть Main menu и StatusBar Пример тут https://TransFiles.ru/esw5h

SergKis: PS Еще, по возможности максимально переведутся режимы hbedit на меню по правой кнопке мыши

SergKis: PPS Имеется ввиду меню виндосовское по wvt_TrackPopupMenu( hMnu )

SergKis: alkresin пишет А смысл? 1. Что бы линии с F9-Menu не было никогда, сейчас она появляется после загрузки Open file 2. Кол-во строк на экране можно было сделать на строку меньше, т.е. MaxRow()-1, т.к. StatusBar съедает от клиентской области 1 строку

SergKis: alkresin 1. Поставил значение DATA lTopPane INIT .F. // .T. строка с F9-Menu не прорисовывается, в параметрах для :New(..., .F.) указывать не надо. Все как хотелось. Осталось найти, как\где уменьшить кол-во строк на экране. Подозреваю, что это oEdit:y2, пока не проверял. 2. Ctrl+Y удаляет строку но перескакивает на несколько строк ниже, к примеру, удаляем 59, перескок на 62 и т.д. 3. Ставлю на входе в hbedit.prg[pre2] 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 [/pre2] С загруженными все работает. Делаю 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) } Или не стоит так делать ?



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