Форум » [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: SergKis пишет В примере ini выше секции заполняю руками Секции [Window], [Browse] заполняются программой - это координаты куда разместили окно и browse под него, т.к. проектов много, то и окна работы с проектом и окна об ошибках можно располагать удобно

alkresin: SergKis пишет: заполнение руками строк в файле проекта руками через запрос Get-ами или в ini. Ничего не понял). Т.е., вообще ничего - и, в частности, что за пункты все-таки. В любом случае, делать специальный файл проекта нового формата я не предполагаю. У нас есть .hbp и он прекрасно справляется со своими задачами. Он содержит, в частности, список файлов проекта - а это именно то, что нужно редактору: можно и общий список функций составить, и глобальный поиск по проекту сделать. Если для файлов нужны алиасы (пояснения), то их можно поместить в .hbp как комментарии - над строкой с именем файла. Чтобы не спутать их с другими комментариями, можно, например, маркировать их как ##. Библиотеки, объектники, опции сборки - это все редактору не нужно - он просто запустит hbmk2 и тот сделает свою работу.

SergKis: alkresin пишет Ничего не понял). Т.е., вообще ничего - и, в частности, что за пункты все-таки. Расшифровка пунктов ini проекта [pre2] [APP] Utf8=No ; prg файлы в Utf8 с BOM или нет, если Yes, то ; файлы prg проверяются на BOM и переводятся в Utf8, если его нет ; Сборка проекта в однобайтовом режиме, через дол. каталог ; куда prg файлы перекидываются для сборки Utf8 переводится в нужную ; CodePage Title=HMG 19.01 ; Title окна MDI Notepad=\BK32\Notepad3.exe ; какой редактор запускать. Akelpad отдельной ;AkelPad=\BK32\BIN\AkelPad ; строкой, т.к. номер строки передается ему через реестр Default=01 ; проект (MdiChild окно) открыть по умолчанию при запуске Res=.\RES ; каталог ресурсов проекта CmdComp=_hb_.cmd ; запуск cmd файла для сборки модуля (компилируются толь измененные prg) CmdRun= ; имя cmd файла для запуска модуля на исполнение LibName= ; имя либы, создаваемой одновременно с exe, prg с Func Main не входит в либ [01] ; секция первого проекта (MdiChild окно) Title=Проект MiniGui. PRG. ; название проекта, вводим руками PathApp=.\SOURCE ; каталог с prg файлами проекта PathExe=.\ ; путь куда созданный EXE модуль NameExe= ; имя exe модуля Include=*.prg ; включаемые файлы в проект из каталога PathApp Exclude= ; файлы, исключаемые из списка файлов в проект [02] ; секция второго проекта (MdiChild окно) Title=Проект MiniGui. C. ; название проекта, вводим руками PathApp=.\SOURCE ; каталог с prg файлами проекта PathExe=.\ ; путь куда созданный EXE модуль NameExe= ; имя exe модуля Include=*.c ; включаемые файлы в проект из каталога PathApp Exclude= ; файлы, исключаемые из списка файлов в проект [03] ; секция трктьего проекта (MdiChild окно) Title=Проект MiniGui. TsBrowse. ; название проекта, вводим руками PathApp=.\SOURCE\TsBrowse ; каталог с prg файлами проекта PathExe=.\ ; путь куда созданный EXE модуль NameExe= ; имя exe модуля Include=*.prg,*.c ; включаемые файлы в проект из каталога PathApp Exclude= ; файлы, исключаемые из списка файлов в проект [04] ; и т.д. [05] ; секции проектов запуска [06] [07] [08] [09] [Common] ; секция задания параметра фонтов и FontName=Arial ; параметров для работы перевода FontSize=10 ; размера из dlu в pixel SizeScale=100,100 ; в hmg есть класс для этого Dlu2Pixel [Window] ; Form_1Form_1=0,0,1229,727, ; секции програмной фиксации wErrorwError=591,0,776,192, ; размеров окон [Browse] ; и brwProg=304,87,87,87,604, ; Browse brwEntiti=179,479,434,87, ; brwEntAll=173,346,346,87,216, ; [Obj] 1=\BK32\OBJ\ErrSysHMG_.obj %O%\%P%.obj [Lib] 1=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 2=advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib Vfw32.lib 3=odbc32.lib odbccp32.lib comctl32.lib ShLwapi.lib WinMM.lib 4=ws2_32.lib WSock32.Lib ImageHlp.lib htmlhelp.lib MSImg32.lib 5=/nologo /incremental:no /pdb:%O%\%P%.pdb /SUBSYSTEM:WINDOWS 6=/machine:I386 /out:%W%\%P%.exe 7=hbdebug.lib hbvm.lib hbrtl.lib hblang.lib hbrdd.lib rddfpt.lib 8=rddntx.lib rddcdx.lib hbmacro.lib hbpp.lib hbsix.lib hbcommon.lib 9=hbcplr.lib hbgt.lib hbcpage.lib hbct.lib hbmemio.lib 10=hbmisc.lib hbwin.lib 11=bk32_c.lib MiniGui32_c.lib MiniGui32_c2.lib 12=MiniGui32_2.lib gtwin.lib gtgui.lib [FColor] ; секция задания цвета фонта по Entiti 1 ={"CLASS" , "R"} ; 2 ={"ACCESS", "V"} ; 3 ={"ASSIGN", "V"} ; 4 ={"METHOD", "M"} ; 5 ={"DEFINE", "H"} ; 6 ={"STATIC", "B"} ; 7 ={"Static", "B"} ; 8 ={"Define", "H"} ; 9 ={"define", "H"} ; 10={"static", "B"} ; 11={"Method", "M"} ; [Entiti] ; секция задания ключевых фраз и слов для выделения Entiti 01=FUNC ; по ним создается список Browse (как плагин по функциям prg) 02=FUNCTION ; так же создается список всех Entiti проекта с поиском 03=PROC ; по именам и переходом в режим редактора с установкой 04=PROCEDURE ; на нужную строку 05=CLASS 06=ACCESS 07=ASSIGN 08=METHOD 09=DEFINE WINDOW 10=INIT WINDOW 11=INIT DIALOG 12=STAT FUNC 13=STATIC FUNC 14=STATIC FUNCTION 15=STAT PROC 16=STATIC PROC 17=STATIC PROCEDURE 18=HB_FUNC( 19=INIT PROC 20=INIT PROCEDURE 21=EXIT PROC 22=EXIT PROCEDURE 23=CASE WM_... ; для отображения в списке всех команд WM_CLOSE, WM_ACTION ... [/pre2]


alkresin: Обновлен hbedit. Добавлены пара плагинов для Golang (запуск на выполнение и форматирование). В ini, секция [LANG_...], теперь можно указывать спец.плагин для этого типа файлов - он будет запускаться при открытии файлов этого типа и играет для него ту же роль, что и стартовый плагин в [START]. В ini добавден [LANG_HBP] Кое-что подправлено с подсветкой.

Vlad04: Как сделать: 1) Чтобы при открытии , окно было распахнуто 2) По умолчанию стоял какой-то ранее выбранный синтаксис, к примеру, prg Кодовая страница вроде ставится

SergKis: alkresin Для удаления выделенного текста, еще используется Ctrl+X, этого нет в hbedit

SergKis: PS 1. Open file окно, при пустом поле и нажатии enter открывать окно списка файлов 2. На окнах поиск, поиск-замена, переход на запись, сохранять последние данные в Selected режиме. 3. На, вышеуказанных, окнах добавить F<n> клавишу для вызова истории набранных данных ранее, не только кликая мышой

alkresin: Vlad04 пишет: 1) Чтобы при открытии , окно было распахнуто В смысле, на весь экран? Могу добавить в hbedit.ini такую опцию, если надо. 2) По умолчанию стоял какой-то ранее выбранный синтаксис, к примеру, prg Так при открытии файла .prg автоматом устанавливается соответствующий синтаксис...

alkresin: SergKis пишет: Для удаления выделенного текста, еще используется Ctrl+X, этого нет в hbedit Ok. 1. Open file окно, при пустом поле и нажатии enter открывать окно списка файлов 3. На, вышеуказанных, окнах добавить F<n> клавишу для вызова истории набранных данных ранее, не только кликая мышой Открыть список файлов или историю можно и без мышки двумя способами: 1) перейти на соседнюю кнопку (стрелка вниз или Tab) и нажать пробел 2) нажать Ctrl + стрелка вниз. 2. На окнах поиск, поиск-замена, переход на запись, сохранять последние данные в Selected режиме. В смысле, выделять найденную строку? В поиск/замена она выделяется. А при переходе по номеру строки что выделять?

SergKis: alkresin пишет В смысле, выделять найденную строку? В поиск/замена она выделяется. А при переходе по номеру строки что выделять? В истории есть последнее значение поиска, поиска-замены, переход на ... (списки выдвигаются же) При открытии окна (соответствующего) заполнять этими значениями соответствующие поля окна с Selected для - замены новыми, тогда сбрасываются и вводятся новые - стрелками перемещения Selected сбрасываем и правим, что было - сразу для повторения поиска по enter

SergKis: PS как Far делает

alkresin: Теперь понятно, буду иметь ввиду.

alkresin: Обновлен hbedit. Добавлен новый плагин для hbp - предварительная версия. Он прописан в ini в секции [LANG_HBP], поэтому запускается автоматически при открытии .hbp файла. Он подменяет панель статуса на простенькое меню, в котором пока две опции: список файлов проекта (можно выбрать любой для редактирования) и сборка проекта - в дальнейшем после сборки планируется открыть дпполнительное окно со списком ошибок. Добавлен Ctrl-X для cut selected. В секцию [START] ini-файла добавлена опция maximize: если On, то редактор при старте раскрывается на весь экран.

SergKis: alkresin пишет Добавлен новый плагин для hbp - предварительная версия Может этот плагин учесть кодировку части (всех) prg в utf8, а сборка не уникодная в указанной CodePage ? Или его переписывать надо, под себя ?

SergKis: PS В секции [START] можно определить загружаемый файл и если это hbp, возможность сразу выдать список по Ctr+F ?

SergKis: PPS Возможно ли, добавить в hbp, через спец. коментарий, добавляемые другие файлы в список Ctrl+F ? Это ini, cfg, текстовые шаблоны, ..., относящиеся к работе с проектом.

SergKis: PPS Возможность иметь в hbp добавить спец. коментарий, как SEPARATOR, для визуального разделения в меню файлов по Ctrl+F

SergKis: SergKis пишет В секции [START] можно определить загружаемый файл и если это hbp, возможность сразу выдать список по Ctr+F ? В реальности загружать файл hbp не надо, надо только список, желательно, с комментарием, добавленным к prg и датой последней модификации. Попробовал у себя создать схему своей работы - файлы в utf8 - сборка не уникодная - список файлов проекта выходит, если делаю ext=.hbp.hbi , т.е hbi - файл проекта для меню, hbp для сборки в др. месте (подкаталоги) cmd делаю с перемещением utf8 prg -> Codepage, т.е. программа делает перекодировку, если prg utf8 или перезапись если нет и только потом работа hbmr2 или другого вызываемого cmd Т.е. хочу сказать, желательно иметь (что бы не писать свои исполнители для перекодировки) в hbedit ключи "тихого" пакетного исполнения для перезаписи с кодировкой

alkresin: SergKis пишет: Может этот плагин учесть кодировку части (всех) prg в utf8, а сборка не уникодная в указанной CodePage ? Честно говоря, даже думать на эту тему не хочется). Если надо, добавьте это туда для себя. В секции [START] можно определить загружаемый файл и если это hbp, возможность сразу выдать список по Ctr+F ? Файл - да, можно. Учитывая, что ini может быть из текущего каталога, в этом есть определенная логика. Можно и список файлов там (в ini) указать. Но вот выводить автоматом список файлов при старте мне не нравится. Может, я просто отредактировать этот hbp хочу, или мне надо начать с поиска... Возможно ли, добавить в hbp, через спец. коментарий, добавляемые другие файлы в список Ctrl+F ? ... Возможность иметь в hbp добавить спец. коментарий, как SEPARATOR Думаю, да. В реальности загружать файл hbp не надо, надо только список В реальности hbedit - это текстовый редактор и он должен уметь отредактировать hbp.

SergKis: alkresin пишет Но вот выводить автоматом список файлов при старте мне не нравится. Может, я просто отредактировать этот hbp хочу, или мне надо начать с поиска... Возможно в [START] это, действительно, не очень нужно (хотя запуск без параметров со стартовым списком файлов удобен), а вот в параметрах запуска - вполне. В Far на F2 меню несколько пунктов с разными файлами (меню) проектов создать для запуска нужного в работе, то же удобно. В реальности hbedit - это текстовый редактор и он должен уметь отредактировать hbp. Но у него хорошие возможности быть больше чем редактором (редакторов достаточно). На своей схеме работы показал, что файл hbp и реальный файл проекта (по списку файлов) это разные вещи. Т.е. для меню использовал копию hbp -> hbi Врляд ли стоит забивать мусором реальный hbp, (У Андрея, в простом примере только 20 строк файлов). У меня средний проект (модуль) содержит 3.5 экрана browse x 27 строк на экране и это только prg. Таких модулей в задаче 10, причем используют либу, создаваемую главным модулем. Модуль - это список типа hbp. Честно говоря, даже думать на эту тему не хочется). Если надо, добавьте это туда для себя. В hbedit уже все есть для перекодировки, нет только параметров запуска. Вариант простой - на входе utf8 -> перекодируем в Codepage указанный, имена файлов на входе, выходе - на входе CodePage -> перекодируем в Utf8, т.е. перекодировки CodPage1 -> CodePage2 через Utf8 - можно добавить параметр -dt , по которому переписывать с кодировкой, если время, дата файлов не равны, после перезаписи устанавливать время,дату выходного равную входному С такими командами в cmd можно городить любые сборки, для языковых программ.



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