Автор | Сообщение |
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: 2351
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.04.19 23:54. Заголовок: alkresin Привычно ..
alkresin Привычно Ctrl+Home - на начало, в hbedit Ctrl+PgUp Ctrl+End - в конец, в hbedit Ctrl+PgDn Ctrl+Z восстановить изменения, сделанные ранее, в hbedit вкл. какой то режим отличный от текущего Может есть таблица соответствия для клавиш и процедур, для управления ?
| |
|
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 )
| |
|
alkresin
|
| moderator
|
Пост N: 1182
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.04.19 09:50. Заголовок: SergKis пишет: Как ..
SergKis пишет: цитата: | Как получить вариант виндосовской раскраски белый фон, черный\синий текст ? |
| Если речь о TEdit(), то установкой :cColor, :cColorSel цвет выделенного текста), :cColorPane (цвет панели состояния). Если об HbEdit - я этот момент как-то упустил, надо будет добавить опции в ini-файл.
| |
|
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.
| |
|
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) расписаны многие клавиши.
| |
|
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" немедленно. Выделенное очень полезно.
| |
|
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
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2355
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.19 10:34. Заголовок: alkresin пишетКстати..
alkresin пишет цитата: | Кстати, чтобы пояснить: F3 как завершение выделения с копированием выделенного в один из буферов по выбору может быть нажато и в том случае, если выделение начиналось без F3, а любым другим способом. |
| Возможно, для кого то, 10 Clipboard очень нужная опция, но по мне, она лишняя, т.к. в списке буферов текст не определяет однозначно что там (видно ~ 30-40 символов). Потом надо заниматься постоянной очисткой номерного Clipboard, что тоже удовольствия не доставляет, еще раз подчеркну, для меня. Режим Notepd3 /b Открыть новое окно для сбора изменений буфера обмена. Лучше решает поставленную задачу по 10 Clipboard По мне
| |
|
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)
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2357
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.19 11:17. Заголовок: alkresin пишет у нас..
alkresin пишет цитата: | у нас есть класс TEdit(), который можно встроить в свое приложение |
| Не куда встраивать - все Windows hmg. Разговор о использовании вместо EDITBOX. Сейчас исп. Notepat3 (ранее был Notepad2). Минус у него, надо делать изменения в текстах и сборку, для изменения цветов и ключевых слов (не вынесено в ini) + прыгание каретки по концам строк+клавиши не привычно, приходится переназначать в текстах (Вы тоже предлагаете такой же механизм пересборки в основе). Плюс у него большая скорость при работе с большими файлам log. Клиенту нравится работать с одним большим файлом лог за год и больше (фрагментация по кварталам\месяцам не нравится), выбирая оттуда данные для разных справок в Excel\Word ...
| |
|
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'
| |
|
|
SergKis
|
| постоянный участник
|
Пост N: 2359
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.19 12:40. Заголовок: PS Вопрос\замеча..
PS Вопрос\замечание. Зачем снимать выделение после Ctrl+C ? Если переключусь на др. текст, там сделаю (поправлю себя) Ctrl+C, вставлю в др. текст, вернусь в самый первый для повтора Ctrl+C, а он сброшен. Снимать предлагаю по клавишам перемещения или исключая Ctrl+C
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2362
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.19 14:43. Заголовок: PS К Ctrl+C Если сде..
PS К Ctrl+C Если сделал Ctrl+C и обнаружил, что не дотянул 1,2 строки, а все сбросилось, начинай сначала выделять - не айс
| |
|
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 |
| Полностью текст в списке и не нужен - вы же знаете, что туда помещали. И зачем очищать - не понял. Окно для сбора изменений - идея интересная, но вот насколько это удобно? Впрочем, не пробовал, не знаю.
| |
|
alkresin
|
| moderator
|
Пост N: 1186
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.04.19 16:55. Заголовок: SergKis пишет: Даже..
SergKis пишет: цитата: | Даже не знаю, что это за возможности. Может через ini уст. есть такой режим или нет. |
| Vim - редактор по умолчанию в Линукс консоли, редактор отличный, хоть и своеобразный). Но менеджеру/экономисту это действительно не нужно - так что опция в ini, отключающая его, вполне уместна. цитата: | Я о таблице Hash в hbedit, где код нажатой клавиши соответствует, к примеру, блоку кода исполнения. |
| В Harbour консоли это не так просто, поскольку с возвращаемыми inkey() кодами надо еще работать - они могут быть одинаковыми для разных сочетаний клавиш. Но я буду иметь ввиду такой вариант. цитата: | Бяка при вводе новой строки из первой (позиции до текста в текущей line) позиции |
| Да, вижу - autoindent некорректно срабатывает, надо будет исправить.
| |
|
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 с прибамбасами.
| |
|
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 и из др. программ
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2365
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.19 17:44. Заголовок: alkresin пишетgt - р..
alkresin пишет цитата: | gt - редактор-то консольный. Да и зачем? |
| Возможность запустить данные с карточек (нескольких) по координатам, к примеру, справа друг под другом. Если координат нет, только ини, в который запоминаются координаты, размеры где работали, то 2а, 3и таких ини и 3 запуска с параметром ини, так же позволит смотреть одновременно несколько данных вместо EditBox. Параметр /t задаст заголовок окна. В итоге - все прекрасно
| |
|
Vlad04
|
| постоянный участник
|
Пост N: 824
Зарегистрирован: 13.10.05
|
|
Отправлено: 15.04.19 18:01. Заголовок: SergKis Так, вроде,..
SergKis цитата: | Так, вроде, ставятся\снимаются коменты // и /* */ |
| Как ? Ручками каждую строку ? Я имею ввиду - выделил блок и какой -то командой закоментировал или снял коментарии, как в Far е (и в 1с) , где можно поставить или убрать для блока
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2366
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.04.19 18:15. Заголовок: Vlad04 пишет Я имею ..
Vlad04 пишет цитата: | Я имею ввиду - выделил блок и какой -то командой закоментировал или снял коментарии, как в Far е (и в 1с) , где можно поставить или убрать для блока |
| Поставить вначале /* и в конце */ проще, чем тащить пометкой блок и вспоминать "какую то" команду. А ставить автоматом в выделенном блоке в каждую стоку // ? Зачем ? Но это по мне, как другим ... на любителя.
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|