Форум » [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: PS И такая вставка в hbedit, текст, который правим, правильно происходит и из Far, из Akelpad и Notepad3

SergKis: PPS Т.к. уже ~70% работу делаю в hbedit, то перенос из hbedit в Akelpad, Notepad3 почти не актуален, обратный перенос работает как мне надо. В проектах подключен вызов 2х редакторов Akelpad и hbedi.t + hbedit в Far подключен на Alt+F4, на новой pc и на Enter. Родной Far редактор на F4 - привычка. Словом спасибо за hbedit !

SergKis: alkresin Можно добавить\разделить в палитру цвет режима readonly, т.е. на примере palette=solarized light тот фон на котором работаем отнести к режиму readonly, другой, более светлый, сделать фоном работы редактора ?


alkresin: SergKis пишет: Можно добавить\разделить в палитру цвет режима readonly, Т.е., добавить в ini опцию типа palette_ro=solarized dark ? Можно.

SergKis: alkresin пишет Т.е., добавить в ini опцию типа palette_ro=solarized dark Возможно так [pre2] [PALETTE_4] name=solarized light ; ReadOnly как было colors= #?????? #002B36, #073642, #586E75, #657B83, #839496, #93A1A1, #EEE8D5, #FDF6E3, #B58900, #CB4B16, #DC322F, #D33682, #6C71C4, #268BD2, #2AA198, #859900 ... [/pre2] т.е. опция как была name=solarized light, так и осталась, но при запуске hbedit.exe -ro ... цвет фона берется для указанного под ?????, в режиме edit как было или как вариант colorROnly=RB/B colormain=RB/B ...

SergKis: PS Т.е. делаем 17 palette цветов (берем всегда 16), только меняем цвет для фона при -ro из 1го элемента, иначе со 2го

alkresin: 17-й цвет добавить в палитру нельзя, не может быть в харборовской палитре больше 16 цветов, это ограничение gt-системы. Если мы определяем 17-й цвет - это значит, что мы добавляем новую палитру. По сути, это то, что я предлагал (palette_ro=solarized xxx ). Можно вместо этого в определение палитры в ini добавить, например, bgReadOnly=W т.е., цвет фона для ro режима меняем на W, но этот W - один из 16 цветов текущей палитры.

SergKis: alkresin пишет 17-й цвет добавить в палитру нельзя, не может быть в харборовской палитре больше 16 цветов ... т.е., цвет фона для ro режима меняем на W, но этот W - один из 16 цветов текущей палитры. Режим ReadOnly с цветом это повторный запуск hbedit и 17 цвет может быть, его как раз и использовать вместо фона режима Edit, т.е. харбору мы скармливаем всегда 16 цветов палитры, подменяя цвет фона. Режим ReadOnly в подокнах hbedit не меняет цвет фона. Т.е. работа как было. Смена цвета для ReadOnly только для др. запуска hbedit. Можно, конечно, дублировать полностью секции и запускать экз. hbedit для ReadOnly с новой секцией, но очень плодятся секции в ini

alkresin: SergKis пишет: Режим ReadOnly с цветом это повторный запуск hbedit и 17 цвет может быть, его как раз и использовать вместо фона режима Edit, ... Режим ReadOnly в подокнах hbedit не меняет цвет фона. Т.е., это все только для запуска с переключателем -ro? Вводить 17-й цвет в палитры, который будет использоваться только при определенном параметре командной строки? Это как-то странно, на мой взгляд. Тогда уж логичнее при запуске с -ro и -f задать - с другим ini-файлом, в котором будет определена спец.палитра.

SergKis: alkresin пишет Тогда уж логичнее при запуске с -ro и -f задать - с другим ini-файлом, в котором будет определена спец.палитра. Из за одного цвета фона, создавать отдельные ini или секции + доп. параметры запуска, по мне, это лишнее, но возможное.

SergKis: PS Хочу сделать поиск handle окна с именем загруженного файла в hbedit и если есть, запускать в режиме readonly и др.цветом Наличие др. ini или секций тут лишнее, т.к. ini могут быть относительными по отношению к проекту

alkresin: Выложен новый релиз HbEdit: http://www.kresin.ru/hbedit.html В него вошли разные мелкие исправления и дополнения, сделанные за прошедшее время. Сделано автодополнение - пока для Harbour и частично для C файлов. В hbedit.ini должен стоять 'autocomplete=on', можно также включить/выключить это через меню View. Работает это так: набираем пару или больше символов и жмем Tab - выскакивает список для выбора вариантов, если они есть. Для prg постоянная часть списка формируется из набора ключевых слов ( "FUNCTION", "RETURN", ... ) и списка функций в plugins/hb_funcs.txt. Дополнительная часть списка формируется из названий функций в текущем файле, статических переменных, #define и Memvar в начале файла, Local, Memvar, Static в текущей функции.

alkresin: Выложен новый релиз HbEdit: http://www.kresin.ru/hbedit.html Поправлено кое-что. В ini добавлена опция autodelay, она задает время в секундах (можно и нецелое - 0.8, например), после которого появляется список вариантов. Сейчас она закомментирована. Если ее раскомментировать, то для появления подсказки можно не жать Tab, а подождать заданное время.

alkresin: Кстати, в состав HbEdit включена маленькая библиотека - хотя это, наверное сильно сказано - скорее, модуль, написанный на С, который реализует prefixed tree (trie), структуру хранения строк, облегчающую их поиск. Здесь он используется для хранения ключевых слов, используемых в автодополнении, но может применяться и в других случаях, когда требуется хранилище строк с быстрым поиском.

Dima: alkresin Можно парочку примеров для понимания работы этой библиотеки ? Спасибо !

alkresin: Dima пишет: Можно парочку примеров для понимания работы этой библиотеки ? Ну например, [pre2] FUNCTION Main() LOCAL arr := { "FUNCTION", "PROCEDURE", "RETURN", "hb_FNameName", "hb_FNameDir", "hb_FNameExt" } LOCAL trie LOCAL i, iCou, cBuff ? "Start" trie := trie_Create() ? "Trie created" FOR i := 1 TO Len( arr ) ? i, arr[ i ] trie_Add( trie, arr[ i ] ) NEXT ? "-------------" // Проверяем, есть ли эти слова в хранилище ? trie_Exist( trie, "FUNCTION" ), trie_Exist( trie, "PROCEDURE" ), trie_Exist( trie, "RETURN" ), trie_Exist( trie, "hb_FNameName" ), trie_Exist( trie, "hb_FNameDir" ), trie_Exist( trie, "hb_FNameExt" ) ? trie_Exist( trie, "GONE" ) // Проверяем, сколько имеется слов с заданным префиксом ? trie_Count( trie, "hb_FNameDir" ), trie_Count( trie, "hb_FNam" ) // Выводим строку - список слов, разделенных \n с заданным префиксом cBuff := trie_List( trie, "hb_", @iCou ) ? iCou IF iCou > 0 ? cBuff ENDIF // Закрываем хэндл хранилища, освобождаем соответствующие ресурсы trie_Close( trie ) ? "End" RETURN Nil [/pre2]

alkresin: Квадратные скобки съедает почему-то, там должно быть в цикле arr и в квадратных скобках i

Dima: alkresin пишет: Квадратные скобки съедает почему-то Поправил ...... а писать в коде надо так [ i ]

alkresin: Спасибо. Боюсь, что все-равно забуду до следующего раза.

Dima: alkresin Есть тег ITALIC для строки [ i ][ /i ] (без пробелов разумеется) , так вот если в выложенном сырце встречается [ i ] (без пробелов) то движок форума это понимает как начало шрифта ITALIC



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