On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
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: 2351
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.19 23:54. Заголовок: alkresin Привычно ..


alkresin
Привычно
Ctrl+Home - на начало, в hbedit Ctrl+PgUp
Ctrl+End - в конец, в hbedit Ctrl+PgDn
Ctrl+Z восстановить изменения, сделанные ранее, в hbedit вкл. какой то режим отличный от текущего
Может есть таблица соответствия для клавиш и процедур, для управления ?

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


Пост N: 1181
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.19 09:45. Заголовок: SergKis пишет: 1. Н..


SergKis пишет:

 цитата:
1. Не определяет автоматом файлы utf-8 с BOM


Теперь определяет.

 цитата:
3. F3 нажимаем выделяем данные в строке, жмем F3, получаем список Clipboard (так понимаю ситуацию), жму Esc и apps.err:


Исправлено. Бинарники на сайте обновлены.
Кстати, чтобы пояснить: F3 как завершение выделения с копированием выделенного в один из буферов по выбору может быть нажато и в том случае, если выделение начиналось без F3, а любым другим способом.

 цитата:
2. Нет выделения вертикального блока Shift+Alt+ стрелки


Да, пока нет. Буду делать.

 цитата:
4. Как при запуске уст. позицию каретки <строка>, <колонка>


Как и другие опции редактора, это можно сделать между вызовами :New() и :Edit() - для этого эти методы и разделены:
oEdit := TEdit():New( cText, cFileName ) 
oEdit:nRow := 10
oEdit:nCol := 18
oEdit:Edit()

Здесь :nRow и :nCol - абсолютная позиция курсора на экране, так что если окно редактора выведено не с 0,0, то надо сделать соответствующие вычисления ( + ::y1, + ::x1 ). Можно установить также :nyFirst, :nxFirst - смещение текста, если его вывод начинается не с самого начала.

 цитата:
5. Понял, что параметры экрана ставим через ini. Если вариантов параметров несколько (внешний запуск)
25, 80
25, 40
25, 120


Не понял, в чем вопрос, но на всякий случай поясню:
у нас есть класс TEdit(), который можно встроить в свое приложение, и редактор hbedit, как самостоятельное приложение (в исходниках это один файл hbedit.prg, в котором содержится обработка параметорв, чтение ini и вызов TEdit().Hbedit читает и использует только секцию screen из hbedit.ini, TEdit - все остальные. Было бы странно, если бы встроенный редактор вдруг менял настройки экрана. Т.е., количество строк/колонок экрана и пр. устанавливает вызывающее TEdit() приложение (hbedit, например). Координаты окна редактора на экране могут быть заданы при вызове :New():

oEdit := TEdit():New( cText, cFileName, y1, x1, y2, x2, cColor )

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


Пост N: 1182
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.19 09:50. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как получить вариант виндосовской раскраски белый фон, черный\синий текст ?


Если речь о TEdit(), то установкой :cColor, :cColorSel цвет выделенного текста), :cColorPane (цвет панели состояния).
Если об HbEdit - я этот момент как-то упустил, надо будет добавить опции в ini-файл.

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


Пост N: 1183
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.19 09:56. Заголовок: Vlad04 пишет: 1)А н..


Vlad04 пишет:

 цитата:
1)А насчёт возможности закоментировать ( снять комент ) строку, блок типа
Желательно, чтобы была возможность ?


Не понял, о чем вы. Если о поддержке выделения другим цветом комментариев, то она есть.

 цитата:
2)История сохраненных файлов вроде сохраняется в файле hbedit.his, а как
к ней получить доступ из программы ?


"Open file" из меню, или F4 - появляются опции "New file", "Open file" - вызывает диалог для ввода имени файла с возможностью выбора из дерева каталогов, и список из hbedit.his.

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


Пост N: 1184
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.19 10:06. Заголовок: SergKis пишет: Прив..


SergKis пишет:

 цитата:
Привычно
Ctrl+Home - на начало, в hbedit Ctrl+PgUp
Ctrl+End - в конец, в hbedit Ctrl+PgDn


Вообще-то в Far и Ctrl+PgUp, Ctrl+PgDn аналогично работают, я ими и пользуюсь обычно. Впрочем, можно и Ctrl+Home, Ctrl+End

 цитата:
Ctrl+Z восстановить изменения, сделанные ранее, в hbedit вкл. какой то режим отличный от текущего

добавить.
Здесь используется Alt-Backspace, я его в большинстве известных мне редакторов использую, в том числе и в Far.
А этот "какой-то" режим - попытка реализовать некоторые возможности Vim. Если предложите какое-нибудь другое достаточно удобное сочетание клавиш для него, можно пообсуждать. Я сначала хотел Ctrl-Space, но потом обнаружил, что в Линукс-системах это сочетание недоступно, т.к. используется чем-то другим.

 цитата:
Может есть таблица соответствия для клавиш и процедур, для управления ?


Так в hbedit.help все есть (вызывается по F1), и в меню (F9) расписаны многие клавиши.

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




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


alkresin пишет
 цитата:
Как и другие опции редактора, это можно сделать между вызовами :New() и :Edit() - для этого эти методы и разделены


То, что можно сделать свою сборку, встроить в прогу - понятно, но, скажу так, не хочется, т.к. вполне достаточно, у клиента, run редактора. У Far есть возможность запускать редактор с параметрами уст. каретки. Ранее выкладывал Notepad3, в нем целый список полезных параметров командной стоки (см. в "Справке").
 
Использование:
Notepad3 [/?] […[Кодировка]] […[Окончания строк]] [/e] [/g] [/m] [/l]
[/q] [/d] [/h] [/x] [/c] [/n] [/r| [/p] [/t] [/o]
[/f] [/v] [/vd] [/z] [[диск:][путь]имя[…]]

файл Должен быть последним аргументом, изначально без пробелов.
+ Несколько аргументов файлов (с кодированными пробелами).
- Один аргумент файла (без кодированнных пробелов).

Параметры:
/? Показать это окно.
… Кодировка (/ansi, /unicode, /unicodebe, /utf8, /utf8sig).
… Формат окончаний строк (/crlf, /cr, /lf).
/e Исходная кодировка файла.
/g Перейти к указанной позиции (/g -1 конец файла).

/m Найти указанный текст (/m- последний, /mr regex,
/mb обратная косая черта).
/l Автообновление измененных файлов.
/q Форсировать создание новых файлов без запроса.
/s Выбрать схему синтаксиса.
/d Выбрать схему текста по умолчанию.
/h Выбрать схему Web Source Code.
/x Выбрать схему XML Document.
/c Открыть новое окно и вставить содержимое буфера обмена.
/b Открыть новое окно для сбора изменений буфера обмена.
/n Всегда открывать новое окно (/ns один экземпляр файла).

/r Переиспользовать окно (/rs один экземпляр файла).
/p Задать положение и размер окна (/p0, /ps, /pf,l,t,r,b,m).
/t Задать заголовок окна.

/i Запустить иконкой в области уведомлений.
/o Поверх других окон.
/f Указать ini-файл (/f0 без ini-файла).

/u Запуск с повышенными полномочиями.
/v Распечатать файл немедленно и выйти.
/vd Распечатать файл (открыть диалог печати).

/z Пропустить следующий (применимо для поиска
с регулярным выражением).

Примеры:
Notepad3 /utf8sig /crlf d:\temp\Test.txt
… Новый файл: "Test.txt" Кодировка=UTF-8-BOM, Окончания=CRLF.
Notepad3 /v d:\temp\Test.txt
… Распечатать: "Test.txt" немедленно.

Выделенное очень полезно.

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




Пост N: 2354
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 10:21. Заголовок: SergKis пишет 5. Пон..


SergKis пишет
 цитата:
5. Понял, что параметры экрана ставим через ini. Если вариантов параметров несколько (внешний запуск)
25, 80
25, 40
25, 120


alkresin пишет
 цитата:
Не понял, в чем вопрос


Вопрос установки Mode(...) для экрана, т.к. для небольших данных достаточно 15 row height, 40 Col width и нужна позиция окна Y, X

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




Пост N: 2355
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 10:34. Заголовок: alkresin пишетКстати..


alkresin пишет
 цитата:
Кстати, чтобы пояснить: F3 как завершение выделения с копированием выделенного в один из буферов по выбору может быть нажато и в том случае, если выделение начиналось без F3, а любым другим способом.


Возможно, для кого то, 10 Clipboard очень нужная опция, но по мне, она лишняя, т.к. в списке буферов текст не определяет однозначно что там (видно ~ 30-40 символов). Потом надо заниматься постоянной очисткой номерного Clipboard, что тоже удовольствия не доставляет, еще раз подчеркну, для меня.
Режим Notepd3 /b Открыть новое окно для сбора изменений буфера обмена.
Лучше решает поставленную задачу по 10 Clipboard
По мне

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




Пост N: 2356
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 10:51. Заголовок: alkresin пишет А это..


alkresin пишет
 цитата:
А этот "какой-то" режим - попытка реализовать некоторые возможности Vim


Даже не знаю, что это за возможности. Может через ini уст. есть такой режим или нет.
Для аналога MemoEdit() у клиента, наверно, это не нужно

 цитата:
Так в hbedit.help все есть (вызывается по F1), и в меню (F9) расписаны многие клавиши.


Я о таблице Hash в hbedit, где код нажатой клавиши соответствует, к примеру, блоку кода исполнения.
Что бы можно было переставить под себя те же Ctrl+PgUp\PgDn на Ctrl+Home\End
Норошо бы иметь и цвета в Hash, чтобы отсылаться на них (задавать в ini)

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




Пост N: 2357
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 11:17. Заголовок: alkresin пишет у нас..


alkresin пишет
 цитата:
у нас есть класс TEdit(), который можно встроить в свое приложение


Не куда встраивать - все Windows hmg. Разговор о использовании вместо EDITBOX.
Сейчас исп. Notepat3 (ранее был Notepad2). Минус у него, надо делать изменения в текстах и сборку, для изменения цветов и ключевых слов (не вынесено в ini) + прыгание каретки по концам строк+клавиши не привычно, приходится переназначать в текстах (Вы тоже предлагаете такой же механизм пересборки в основе).
Плюс у него большая скорость при работе с большими файлам log. Клиенту нравится работать с одним большим файлом лог за год и больше (фрагментация по кварталам\месяцам не нравится), выбирая оттуда данные для разных справок в Excel\Word ...

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




Пост N: 2358
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 12:35. Заголовок: alkresin пишет Бинар..


alkresin пишет
 цитата:
Бинарники на сайте обновлены.


Бяка при вводе новой строки из первой (позиции до текста в текущей line) позиции
 
до
:Excel := upper(gIniC(:cCfg, [COM], 'Excel', 'Yes'))
:Lang := upper(gIniC(:cCfg, [COM], 'Lang' , 'LV'))
If ! :Lang $ 'LV,EN'; :Lang := 'LV'
после Enter перед :Lang
:Excel := upper(gIniC(:cCfg, [COM], 'Excel', 'Yes'))

:Lang := upper(gIniC(:cCfg, [COM], 'Lang' , 'LV'))
If ! :Lang $ 'LV,EN'; :Lang := 'LV'
должно быть
:Excel := upper(gIniC(:cCfg, [COM], 'Excel', 'Yes'))

:Lang := upper(gIniC(:cCfg, [COM], 'Lang' , 'LV'))
If ! :Lang $ 'LV,EN'; :Lang := 'LV'


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




Пост N: 2359
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 12:40. Заголовок: PS Вопрос\замеча..


PS
Вопрос\замечание. Зачем снимать выделение после Ctrl+C ?
Если переключусь на др. текст, там сделаю (поправлю себя) Ctrl+C, вставлю в др. текст,
вернусь в самый первый для повтора Ctrl+C, а он сброшен.
Снимать предлагаю по клавишам перемещения или исключая Ctrl+C

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




Пост N: 2362
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 14:43. Заголовок: PS К Ctrl+C Если сде..


PS
К Ctrl+C
Если сделал Ctrl+C и обнаружил, что не дотянул 1,2 строки, а все сбросилось, начинай сначала выделять - не айс

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


Пост N: 1185
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.19 16:22. Заголовок: Пожалуй, соглашусь, ..


Пожалуй, соглашусь, что Ctrl-Z лучше оставить для Undo. Переключение режима переведу на Ctrl-Q.
SergKis пишет:

 цитата:
У Far есть возможность запускать редактор с параметрами уст. каретки.


Как? Разве Far'овский редактор запускается отдельно из командной строки?

 цитата:
/g Перейти к указанной позиции (/g -1 конец файла)


Под позицией понимается номер строки?

 цитата:
Вопрос установки Mode(...) для экрана, т.к. для небольших данных достаточно 15 row height, 40 Col width и нужна позиция окна Y, X


Номер строки, размер - это все нетрудно сделать, а вот позиция окна - это вряд ли возможно сделать средствами gt - редактор-то консольный. Да и зачем?

 цитата:
в списке буферов текст не определяет однозначно что там (видно ~ 30-40 символов). Потом надо заниматься постоянной очисткой номерного Clipboard, что тоже удовольствия не доставляет, еще раз подчеркну, для меня.
Режим Notepd3 /b Открыть новое окно для сбора изменений буфера обмена.
Лучше решает поставленную задачу по 10 Clipboard


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

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


Пост N: 1186
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.04.19 16:55. Заголовок: SergKis пишет: Даже..


SergKis пишет:

 цитата:
Даже не знаю, что это за возможности. Может через ini уст. есть такой режим или нет.


Vim - редактор по умолчанию в Линукс консоли, редактор отличный, хоть и своеобразный). Но менеджеру/экономисту это действительно не нужно - так что опция в ini, отключающая его, вполне уместна.

 цитата:
Я о таблице Hash в hbedit, где код нажатой клавиши соответствует, к примеру, блоку кода исполнения.


В Harbour консоли это не так просто, поскольку с возвращаемыми inkey() кодами надо еще работать - они могут быть одинаковыми для разных сочетаний клавиш. Но я буду иметь ввиду такой вариант.

 цитата:
Бяка при вводе новой строки из первой (позиции до текста в текущей line) позиции


Да, вижу - autoindent некорректно срабатывает, надо будет исправить.

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




Пост N: 2363
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 16:58. Заголовок: alkresin пишет Разв..


alkresin пишет
 цитата:
Разве Far'овский редактор запускается отдельно из командной строки?


Раньше точно было, использовал для просмотра aef файлов VO без установленного VO, причем можно уст. и line и col

 цитата:
Полностью текст в списке и не нужен - вы же знаете, что туда помещали


К сожалению нужен, был в работе такой редактор (прям очень похоже список давал), т.к. как прваило идут тексты
If ... elseIf ... Else или DO CASE ... CASE ... и если учесть windows словоблудие и длину слов, то имея 10 похожих строк, фиг поймешь что где лежит и куда хотел деть. В реале работал с одним Clipboard.

 цитата:
Под позицией понимается номер строки?


Да, номер строки, позиция 1 всегда

 цитата:
а вот позиция окна - это вряд ли возможно сделать средствами gt - редактор-то консольный. Да и зачем


Если пойдет консольный, то wvt, наверно, сделать можно. Там использовать Main menu и StatusBar.
На замену Notepad3, hb править легче, чем C с прибамбасами.

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




Пост N: 2364
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 17:28. Заголовок: alkresin пишетОкно д..


alkresin пишет
 цитата:
Окно для сбора изменений - идея интересная, но вот насколько это удобно? Впрочем, не пробовал, не знаю.


Очень удобно. Запускаем Notepad3 /f0 /b _Tmp.txt
Теперь запускаем prg Farом, другой prg Akelpadом, Notepad3 и ходим по prg, помечаем строки и при Ctrl+C
строки появляются в окне сборщике, дописываясь в конец.
Так можно программу новую набрать или куски и потом из этого окна применить.
Ctrl+A, Ctrl+X и все по новой
Отлавливает текст в Clipboard и из др. программ

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




Пост N: 2365
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 17:44. Заголовок: alkresin пишетgt - р..


alkresin пишет
 цитата:
gt - редактор-то консольный. Да и зачем?


Возможность запустить данные с карточек (нескольких) по координатам, к примеру, справа друг под другом.
Если координат нет, только ини, в который запоминаются координаты, размеры где работали, то 2а, 3и таких ини и 3 запуска с параметром ини, так же позволит смотреть одновременно несколько данных вместо EditBox.
Параметр /t задаст заголовок окна. В итоге - все прекрасно

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


Пост N: 824
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 15.04.19 18:01. Заголовок: SergKis Так, вроде,..


SergKis

 цитата:
Так, вроде, ставятся\снимаются коменты // и /* */



Как ? Ручками каждую строку ?
Я имею ввиду - выделил блок и какой -то командой закоментировал
или снял коментарии, как в Far е (и в 1с) , где можно поставить или убрать для блока

 цитата:
//



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




Пост N: 2366
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.19 18:15. Заголовок: Vlad04 пишет Я имею ..


Vlad04 пишет
 цитата:
Я имею ввиду - выделил блок и какой -то командой закоментировал
или снял коментарии, как в Far е (и в 1с) , где можно поставить или убрать для блока


Поставить вначале /* и в конце */ проще, чем тащить пометкой блок и вспоминать "какую то" команду.
А ставить автоматом в выделенном блоке в каждую стоку // ? Зачем ?
Но это по мне, как другим ... на любителя.

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