On-line: i3t4j6, Pasha, Haz, гостей 2. Всего: 5 [подробнее..]
АвторСообщение
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: 2381
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 10:12. Заголовок: PS С текстами, приме..


PS
С текстами, примерно, так делаю
hText := { 1 => ..., 2 => ..., ... <полный набор текстов в EN (к примеру)>} в ini (utf8) секция [TEXT], в ней ключ = текст языковый.
Какие ключи есть, переносим в hText. Для меню массив или hash
01.00 = текст горизонтальный в main menu
01.01 = ... -> popup
...
02.01 = ... -> popup
...
Выполнение меню hash
01.01, {|..| ... }
...
это просто для информации

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




Пост N: 2382
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 11:18. Заголовок: alkresin Еще такая ..


alkresin
Еще такая фишка для ini his
- добавить в строку истории параметр текстовый, меняющий в меню имя файла на указанный текст
- вход в hbedit с отображением меню истории (с текстами)
Тогда можно делать шаблоны каких то данных под именами файлов и культурно предлагать сразу при запуске выбрать для работы нужный

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




Пост N: 2383
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 11:22. Заголовок: PS В hbedit.ini имет..


PS
В hbedit.ini иметь имя ini his для работы

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




Пост N: 2384
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 12:31. Заголовок: alkresin Еще предло..


alkresin
Еще предложение, пакетный поиск с заменой из ini
[REPL]
<ключ как написан>=<значение (в том числе и пустое)>
к примеру
[REPL]
^1=my text 1
^2=мой текст 1
$DokNr$=ABC 12345
...
в плагин, по мне, выносить не стоит, т.к. уже есть\будет режим поиск - замена, то использовать рекурсивно по ini
добавить команду -repl=<имя ini> и можно в ini his параметром к альтернативному тексту названия
все ini utf8

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


Пост N: 1194
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 17.04.19 13:32. Заголовок: SergKis пишет: У на..


SergKis пишет:

 цитата:
У нас подправлена, товарищем, wvt для работы с main menu и statusbar, ... а меню и выполнение пунктов надо перенести в main menu + тексты перевести в LV.


Ничего не понял). Какое wvt подправлено? Харборовский драйвер gtwvt? Что такое LV?

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


Пост N: 1195
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 17.04.19 13:45. Заголовок: По вашим предложения..


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

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




Пост N: 2385
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 14:39. Заголовок: alkresin пишет По ва..


alkresin пишет
 цитата:
По вашим предложениям с ini his и заменой, определенной в ini ( это ведь имеется ввиду, что в ini будет прописано что на что менять и hbedit должен при открытии любого файла производить пакетно такую замену, я правильно понял? )


В целом, да. Добавив опцию
Save = 0\1\2
0 - как есть по имени файла
1 - добавить к имени _дату_время
2 - добавить к имени (версия\номер)
Мы получаем без внешних программ рабочее место на базе шаблонов с "нормальным" названием в his
Если запросили в параметрах, то список his высветился, выбрали, если есть repl - выполнили
Если в параметрах не задавали, через ини, получаем his не автоматом, а через меню идем в his и т.д. по списку
Из программы из карточки создаем данные repl и по шаблону получаем письмо\справку\..., которую можно поправить\добавить и сохранить по режиму Save, Далее отослать куда надо полученное
Если предусмотреть в repl продолжение строк (как есть), то можно код программы набрать по шаблонам (заготовленным заранее label, button,...)

 цитата:
Я предлагаю более универсальное решение - это возможность прописать в ini-файле имя плагина


По мне, тут он лишний, в цикле прочитанного в hash [repl] прогнать существ. процедуру поиск-замена без сообщений
Да и ставить клиенту лишние файлы и следить за их целостностью, не всегда, целесообразно
Писать плагины, на данный момент, для экномич. работ не вижу смысла
[quote]`

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


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


SergKis пишет:

 цитата:
По мне, тут он лишний...


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

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




Пост N: 2386
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 19:46. Заголовок: alkresin пишетПрогра..


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


Вообще то были редактора\программы (даже в dos) с параметрами найти и заменить все.
Надо было писать записи в bat nn раз что бы выполнить замену.
Считать замену в тексте по картинке с запросом "Что найти" "На что поменять" с уточнениями
"Найти предыдущую", "Найти следующую", "Заменить", "Заменить все" + галочки с уточнениями.
Это считается нормальным. То же проделать "Заменить все" списком из файла (вместо 30 окон запросов) - узкоспециализированным. Странно по мне.
Плагины, сейчас представленные, относятся к prg типу файлов, по мне, это компоненты программы - не плагины, без них это обычный txt файл, как в notepad. Т.е. введенные типы файлов, кроме подсветки, автоматом, должны давать что то больше чем, к примеру, Notepad3

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




Пост N: 2387
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 20:10. Заголовок: alkresin пишет Вам о..


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


В программе все так и делается, выгружается в txt, заменяется, подается в notepad3 с ini в размерное окно и полученный файл после, если надо, переименовывается и перекидывается куда нибудь, если надо. Таскается это все из проги в прогу через либы.

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




Пост N: 2388
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.04.19 20:36. Заголовок: alkresin пишет По ва..


alkresin пишет
 цитата:
По вашим предложениям с ini his и заменой, определенной в ini ( это ведь имеется ввиду, что в ini будет прописано что на что менять и hbedit должен при открытии любого файла производить пакетно такую замену, я правильно понял? ).


Если задан файл и -repl в параметрах - выполняется замена при запуске
Если задан his, то при запуске активируется меню his (как меню F2 в Far, может активироваться при запуске) для выбора пункта, если у выбранного стоит repl, то выполнить этот repl перед загрузкой

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


Пост N: 1197
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 18.04.19 09:26. Заголовок: SergKis пишет: Вооб..


SergKis пишет:

 цитата:
Вообще то были редактора\программы (даже в dos) с параметрами найти и заменить все.


Программы были и есть - например, моя snr), но для редактора это все же нетипичная функция.

 цитата:
Странно по мне.


А мне странно, что вы не хотите себе, для своих же нужд, написать маленький плагин.

 цитата:
Если задан файл и -repl в параметрах - выполняется замена при запуске
Если задан his, то при запуске активируется меню his...


Все это легко реализуется с помощью плагина. Помещаете hrb в plugins/, прописываете его имя в ini - и дело сделано.

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


Пост N: 1198
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 18.04.19 09:31. Заголовок: Обновлен hbedit Тепе..


Обновлен hbedit
Теперь для подсветки вместо commands, funcs указываются keywords1, keywords2, keywords3, keywords4.
Добавлена возможность указать в ini плагин, запускаемый автоматически при старте программы (секция START).
Еще какие-то мелочи - уже не помню).

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




Пост N: 2390
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.04.19 10:33. Заголовок: alkresin пишет Все э..


alkresin пишет
 цитата:
Все это легко реализуется с помощью плагина. Помещаете hrb в plugins/, прописываете его имя в ini - и дело сделано.


Этого мало. Для эксплуатации этого мало. Надо в меню "культурно" назвав вставить, не в список плагинов, это внутреннее дело программы, а клиенту надо только его и на его языке.
Вы отказались от строки меню и строки статуса\подсветки - это уже лишнее нажатие F9\мыши. Все запищат от такого.
Потом для редактора mode 24 row, 80 col ... это не используется давно, 32x120 как минимум (точно не помню соотношения, т.к. давно не использую консоль\wvt, товарищ wvt использует).
Наличие меню, дает возможность набирать пункты - для клиента это важно.
Подсветка полного имени файла, как правило не нужно (опционно) достаточно имени, т.к. большинство работ с выбранным ini в одном каталоге.
Сравниваю с Notepad3, который устанавливаем с программами у всех клиентов + сами используем, правда с оболочкой проекта, пока тенденция не в пользу hbedit, к сожалению.

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




Пост N: 2391
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.04.19 11:16. Заголовок: SergKis пишет Потом ..


SergKis пишет
 цитата:
Потом для редактора mode 24 row, 80 col


Извините, ошибся, стоит 30x100.
Подумал 24x80 т.к. на своих текстах много не видно и совмещение меню со статус строкой показалось экономия строк рабочих.

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


Пост N: 1199
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 18.04.19 12:55. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо в меню "культурно" назвав вставить, не в список плагинов, это внутреннее дело программы, а клиенту надо только его и на его языке.


Не понял. Что надо вставлять в меню? Вы говорили о стартовом меню: "вход в hbedit с отображением меню истории (с текстами)". Т.е., пользователь запускает hbedit, сразу выскакивает меню с алиасами имен файлов и он выбирает нужный для редактирования. Я предлагаю вам написать плагин, который выведет это меню на экран и прописать его в ini - файле в секции {START] - так что его не надо будет вызывать, он будет запускаться при старте hbedit автоматически. При необходимости повторного вызова его можно прописать и в списке плагинов ([PLUGINS], который выводится на экран по F11 - это пользователю нетрудно запомнить.
SergKis пишет:

 цитата:
Извините, ошибся, стоит 30x100.


Стоит то, что прописано в ini, хоть 30х100, хоть 50х200...

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




Пост N: 2392
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.04.19 13:46. Заголовок: alkresin пишет Не по..


alkresin пишет
 цитата:
Не понял. Что надо вставлять в меню?


Это меню, как было в дос программах, сверху строка меню, снизу строка состояния (или наоборот).
Применительно к hbedit это не F9-menu надпись\кнопка, а сразу развернутое горизонтально главное меню, сразу видно, что там (не надо лишний раз нажимать\кликать F9-menu). Вставлять\набирать надо это меню (только те пункты, которые нужны) и подменю набирать. Использовать языковые тексты.
В notepad main menu "File" "Edit" "Format" "View" "Help". В notepad3 похоже. Надписи EN, клиентов это устраивает, т.к. системная программа. Любая другая должна иметь "обоснование", почему не на государственном (hbedit собранная под wvt в тек. виде не подойдет никак)

 цитата:
Я предлагаю вам написать плагин, который выведет это меню


hrb хорошо, но у клиента хорошо, если он хотя бы в ресурсах программы. LetoDb v.m.1.0 все hrb функции убрал в exe после случая с "добрым" admin, который в тихаря удалил его несколько раз.
Потом, если вводятся типы файлов LANG_PRG, LANG_C,..., LANG_TXT, ... то должен быть набор свойств\функций для работы с ним. Набор должен работать в автомате - не через меню плагин (это доп. режим). Так по мне.
his - это история работы с файлом или применительно к prg - это список файлов проекта, т.е. в каталоге может быть куча файлов, но файлами his раскладываются на проекты. Зачем тут писать plugin, достаточно иметь галочку, как в Far на меню F2. Нужно запустить hbedit с галочкой или именем his. В том же Far создаем несколько пунктов для проектов, с параметром file.his.
Альтернативное имя пункта меню. К примеру, у меня в проекте, она берется из первой строки // ... или /* ... */ и добавляется к имени prg (без путей)
Для сборки проекта надо запускать cmd, желательно именно на данный список his prg или hbmk2 с hbp

 цитата:
по F11 - это пользователю нетрудно запомнить


Вот пользователю это совсем не нужно (даже запоминать не будет, будет звонить). Ему надо кнопку, tooltip, меню ...

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


Пост N: 1200
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 18.04.19 18:32. Заголовок: SergKis пишет: hrb ..


SergKis пишет:

 цитата:
hrb хорошо, но у клиента хорошо, если он хотя бы в ресурсах программы. LetoDb v.m.1.0 все hrb функции убрал в exe после случая с "добрым" admin, который в тихаря удалил его несколько раз.


Ну это несерьезно. А если admin удалит ini файлы, или exe? А если он в Program Files покуролесит? Или он только hrb удаляет ? Тогда поставьте другое расширение файлу - dll, например.

 цитата:
если вводятся типы файлов LANG_PRG, LANG_C,..., LANG_TXT, ... то должен быть набор свойств\функций для работы с ним. Набор должен работать в автомате - не через меню плагин


Типы файлов вводятся извне программы, в ini. Поэтому и функции, специфичные для них, реализованы внешними модулями. Если мне понадобится добавить еще один тип, то что, программу для этого менять?

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


Пост N: 1201
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 18.04.19 18:50. Заголовок: Если вам так нужно с..


Если вам так нужно свое постоянное меню, то есть еще вот такое решение - я планировал сделать что-то в этом роде, только обдумывал конкретную реализацию. Теперь, вроде, сложилось все в голове. Это возможность для плагина создавать свою область на экране - как бы расщеплять окно и перехватывать предназначенные для нее события.
Т.е., в стартовом плагине, который запускается автоматически, вы можете отключить панель состояния и выделить для себя область - сверху, снизу, справа или слева. в которой нарисуете свое меню. Кроме того, вы назначаете свой обработчик событий - он будет получать код нажатой клавиши или кнопки мыши, а возвращать, допустим, -1 если надо продолжить обработку, 0 - если не надо или новый код, который программа примет как код нажатой клавиши (таким образом можно, в частности, переназначать клавиши). Таким способом вы сможете реализовать абсолютно все, что вам надо.
Ну а я смогу сделать, например, вывод результатов компиляции в спец.окно с возможностью перехода на строку, где была ошибка.

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




Пост N: 2399
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.04.19 19:02. Заголовок: alkresin пишет Ну эт..


alkresin пишет
 цитата:
Ну это несерьезно


Еще как серьезно, маленькое действие, приводящее к вызову admin (по договору ходит). Каждый визит оплачивается часовым тарифом. Мы доступа к серверу не имеем, определить что произошло с клиента никак.

 цитата:
Если мне понадобится добавить еще один тип, то что, программу для этого менять?


Периодически, особенно, если удачное предложение, ДА.
Иначе, чем отличается введенные типы от др. редакторов, того же far, notepsd3 (этот может и фонты менять на выделениях. не только цвета).
Но, Вам, виднее.

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