On-line: PSP, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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 [только новые]


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_... тип ?

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



Пост N: 2518
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.19 21:52. Заголовок: PS Понял, номер бере..


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

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


Пост N: 1247
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 03.05.19 22:29. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что является именем ключ ini p1 = ... или элемент значения до первой запятой ?


Второе. Например, plug_prg_spis.hrb

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

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


Пост N: 1248
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.05.19 08:51. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как получить номер текущего окна ?


oEdit:nCurr

 цитата:
Заметил, при повторном выборе того же файла для загрузки, загрузка не производится, переключаемся на загруженный ранее. Мне думается, это не правильно.


Наверное, здесь надо поставить вставить вопрос (edi_Alert) с выбором вариантов: переключиться на открытое окно, создать новое окно, создать новое в readonly.

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



Пост N: 2521
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.05.19 09:30. Заголовок: alkresin пишет oEdit..


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 режима, было бы хорошо

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



Пост N: 2522
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.05.19 09:49. Заголовок: PS Пометить первый э..


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

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



Пост N: 2523
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.05.19 09:56. Заголовок: PPS Такие операции к..


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

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


Пост N: 1249
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.05.19 17:48. Заголовок: SergKis пишет: По м..


SergKis пишет:

 цитата:
По мне, это лишнее, т.к. если произведена повторная загрузка, то она в view и не мешает


Может случиться (со мной случается), что пользователь повторно открывает файл, просто забыв, что он уже открыт - в этом случае такой alert будет полезен.

 цитата:
Вот цвет фона поменять для view режима, было бы хорошо


Сейчас для readonly в панели статуса написано в правом углу View.

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


Пост N: 1250
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.05.19 17:51. Заголовок: Обновил hbedit (толь..


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

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


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



Пост N: 2527
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.05.19 10:10. Заголовок: alkresin Как узнать..


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

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



Пост N: 2528
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.05.19 10:29. Заголовок: PS Как получить спис..


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

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



Пост N: 2529
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.05.19 17:35. Заголовок: SergKis пишет Как уз..


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


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

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


Пост N: 1251
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.05.19 09:14. Заголовок: SergKis пишет: т.к...


SergKis пишет:

 цитата:
т.к. у меня режим ::lTopPane := .F.


А смысл?

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



Пост N: 2530
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.19 10:36. Заголовок: alkresin пишет А смы..


alkresin пишет
 цитата:
А смысл?


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

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



Пост N: 2531
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.19 10:47. Заголовок: PS Еще, по возможнос..


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

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



Пост N: 2532
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.19 10:51. Заголовок: PPS Имеется ввиду ме..


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

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



Пост N: 2533
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.19 12:16. Заголовок: alkresin пишет А смы..


alkresin пишет
 цитата:
А смысл?


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

Спасибо: 0 
Профиль
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) }
Или не стоит так делать ?

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