Page 19 of 33

Синтаксическая подсветка и общие соображения

Posted: Wed Jan 14, 2009 9:03 am
by ve2
1. Редактору серьезно не хватает настоящей подсветки синтаксиса. Это видно и по многочисленным упоминаниям этой темы на форуме и просто по тому, в каком направлении развиваются альтернативные проекты. Причем я говорю о именно о настоящей, "взрослой" синтаксической подсветке, а не о контекстной, как это реализовано плагином HighLight. То есть о решении, включающем синтаксический анализатор текста. А из него уже вытекает возможность иметь интеллектуальную подсветку, выделение блоков, комментариев. Возможность выделения структурных блоков текста (со сворачиванием/разворачиванием структуры). Правильную проверку орфографии (например для html, чтобы проверялся только текст, а не теги с их атрибутами). Конечно, при правильном подходе это уже серьезная задача, не сравнимая ни по сложности ни по функционалу с HighLight. Но тем не менее, синтаксическая подсветка - это одна из основных, фундаментальных возможностей, которые должны быть реализованы в современном текстовом редакторе (наряду с многоуровневыми откатами, вертикальными/строчными блоками, работой с любыми кодировками как uncode так и однобайтовыми включая все русские, неограниченным размером файла, правильной печатью). Без них - нельзя, пользователь просто бегло взглянув на программу откажется от ее использования (это кстати тема второго пункта). Остальное - скорее бонусы, при наличии которых у пользователя только укрепляется желание пользоваться именно этой программой. Чтобы такое количество написанного мной текста небыло пустой болтовней, могу предложить поработать в направлении подключения проекта Colorer (http://colorer.sourceforge.net), который хорошо себя зарекомендовал в других редакторах и, на мой взгляд является лучшим решением в данной области. Даже если для реализации такой подсветки понадобится изменять интерфейс работы с плагинами - то такие изменения следует сделать! С ним мы получим действительно настоящую подсветку, огромную библиотеку цветовых решений, ну и некую, "стандартизацию", если хотите. Возражения о ухудшении скорости работы не принимаются. Аргумент простой: в других редакторах это работает. Кроме того всегда есть возможность отключить плагин. Или дать пользователю возможность установить предельный размер файла на котором подсветка будет работать.

2. Теперь к вопросу о восприятии программы пользователем. Когда я в очередной раз искал решение для простого но полноценного текстового редактора, AkelPad мне уже встречался. Но запустив его в чистом виде, картинка меня "не зацепила". И только после рекомендации стороннего человека, когда я увидел скриншот со всеми плагинами - меня действительно заинтересовал этот редактор. Первое впечатление очень важно. Установка по умолчанию, на мой взгляд, уже должна содержать основные плагины, они должны быть включены. Мне не вполне понятно желание автора иметь "по умолчанию" внешний вид как у стандартного Блокнота. Пусть пользователь решает что ему не нужно из доступного функционала. Пусть сам отсекает лишнее. Тем более, что у большинства читающих этот текст установлены и используются практически все плагины, не так ли? Размер инсталлятора тут не критичен, при включении всех плагинов увеличение ничтожно. Замечу, что выделение основного, на мой взгляд, функционала в плагины не совсем оправдано. Монолитное приложение здесь было-бы лучше. Тем более что все разработано одним и тем же автором. Но это скорее дело вкуса. А вот получить полноценную сборку "из коробки" - это нужно.

Спасибо за терпение!

Валерий.

Re: Синтаксическая подсветка и общие соображения

Posted: Thu Jan 15, 2009 3:01 pm
by VladSh
ve2, отличный коммент!
Единственное что мне не нравится одна "монолитная" прога, тогда Акел будет напоминать кучу других, ничем не примечательных прог. Но настраиваемый инсталлятор с плагами конечно же необходим, чтобы можно было опционально выбирать что нужно, а что - нет. Или ставить "по умолчанию".

P.S. Для ускорения подсветки не обязательно "раскрашивать" весь файл, можно это делать только для видимой в окне редактирования части текста. Если же использовать блочность, то для корректного отображения видимой части надо конечно же просчитать блочность для всего файла, но это всё равно будет быстрее, чем "раскрашивать" весь файл.
Ещё можно ускорить работу редактора, если перепросчитывать подсветку при отжатии клавиш, а не после удаления каждого символа (имеется ввиду при нажатии и удержании клавиши Del).

Posted: Fri Jan 16, 2009 11:23 am
by ProDev
ve2, VladSh, о "взрослой" подсветке синтаксиса разговор заходил уже давно и не раз. Если до сих пор не реализовано - значит или некому, или нет времени. :wink:

Posted: Sat Jan 17, 2009 12:55 pm
by SAOPP
Ребят, подскажите с помощью какого плагина можно реализовать добавления в каждую строчку документа определённый/нужный набор символов?

Извиняюсь, за вопрос в этой топике.

Например:
REG ADD "HKCU\1\1\1\5.0" /v "1" /t REG_SZ /d "0"
на выходе:
REG ADD "HKCU\1\1\1\5.0" /v "1" /t REG_SZ /d "0" /f

Posted: Sat Jan 17, 2009 1:22 pm
by SAOPP
Решил с помощью плагина Маркоса...

Posted: Mon Jan 19, 2009 10:17 am
by Fr0sT
P.S. Для ускорения подсветки не обязательно "раскрашивать" весь файл, можно это делать только для видимой в окне редактирования части текста.
Раскрашивать необязательно, однако прочитывать один фиг нужно - а вдруг за 1000 строчек до текущего момента был открыт комментарий?
Вот с максимальным размером мысль здравая, хотя и так вряд ли файлы с соответствующим расширением будут занимать 10+ мегов. Исключение, правда, для SQL дампов.

ve2, ты не с софтпортала случаем пришел?))
Согласен с тем, что в поставку надо включать ъотя бы несколько основных плагинов. Сам в свое время прошел мимо Акеля, поскольку не увидел тулбара. Кто ж знал, что он отдельным плагином реализуется!

akelpad as viewer

Posted: Sun Jan 25, 2009 3:41 pm
by shamilbi
Добавить режим работы viewer, когда не нужно загружать весь файл в память, а только показать "окно". Это нужно, когда смотришь большой log-файл с юникодными символами.

Posted: Wed Jan 28, 2009 5:19 pm
by VladSh
Fr0sT, ну так блочные комментарии - это те же блоки (алгоритм их нахождения один и тот же), их можно рассчитать и прорисовать, притом не все, а те которые открыты до видимой в окне редактирования части файла, и закрыты после видимой части.


Instructor, можно ли ожидать реализации управляемой истории изменений и других моих предложений из той же темы?

Для истории изменений можно добавить в Akel команду (либо доработать 4151), возвращающую к определённому шагу истории - использовать параметр SendMessage, который сейчас не используется/зарезервирован. Только при таком подходе перед вызовом скрипта нужно будет запоминать текущий номер в истории. Хочется иметь возможность отменять все изменения (например передав параметром 0).
Ну а в тулбаре на команде отмены сделать стрелочку вниз, разворачивающую подменюшку действий:
- "Обычной отмены" (подробной);
- "Отмены свёрнутой" (с учётом всех действий, выполненных одним скриптом);
- "Отменить всё".

Posted: Wed Jan 28, 2009 5:57 pm
by Instructor
VladSh wrote:- "Отменить всё".
UndoAll.js
VladSh wrote:- "Отмены свёрнутой" (с учётом всех действий, выполненных одним скриптом);
Можно пользоваться следующим шаблоном:

Code: Select all

var AkelPad=new ActiveXObject("AkelPad.document");

var hMainWnd=AkelPad.GetMainWnd();
var hWndEdit=AkelPad.GetEditWnd();
var bAkelEdit=AkelPad.IsAkelEdit();

if (hMainWnd)
{
  if (bAkelEdit) AkelPad.SendMessage(hWndEdit, 3081 /*AEM_BEGINUNDOACTION*/, 0, 0);
  AkelPad.ReplaceSel("x");
  AkelPad.ReplaceSel("y");
  AkelPad.ReplaceSel("z");
  if (bAkelEdit) AkelPad.SendMessage(hWndEdit, 3082 /*AEM_ENDUNDOACTION*/, 0, 0)
}

Posted: Thu Jan 29, 2009 1:59 pm
by VladSh
Instructor
Реально круто! 8) Спасибо!

Posted: Sun Feb 15, 2009 9:01 am
by Torbins
ve2 Абсолютно с вами согласен. Но похоже мы просто не понимаем идеологию акеля. На главной странице же сказано:
AkelPad - текстовый редактор с открытым исходным кодом, созданный, чтобы быть маленьким и быстрым.
Так что я уже подыскал себе редактор с подсветкой синтаксиса, акель остается только для обычных файлов.

Posted: Wed Feb 18, 2009 3:08 pm
by beliy
Хотелось бы чтобы редактор удалял строки, содержащие определённое слово, тоесть не вхождение оного.
к примеру есть список строк -

словоф
фслово
фсловоф
слово

после фильтрации по слову "слово" из этого списка должны остаться только первые 3 строки.

Возможно такое реализовать здесь или может есть уже?

Posted: Sun Feb 22, 2009 1:22 am
by chris
Возможно ли сделать в новых версиях та как было в версии 3хх
То есть двойной щелчек на строчке и выделяется только одна строчка (так я их удаляю) в новых версиях выделяются все пустые, очень не удобно для обработки информации.
По этому до сих пор пользуюсь версией 3.4.8, все последующие версии ставил и затем удалял.

И еще в этой програме не предусмотренно отображать и-нет ссылки с двойным нажатием, или я путаю с другой подобной программой (не смог найти этой функции)???

Posted: Sun Feb 22, 2009 4:16 am
by Instructor
beliy
словоф
фслово
фсловоф
слово

после фильтрации по слову "слово" из этого списка должны остаться только первые 3 строки.
Scripts плагин + LinesFilter.js.
- В строке вводим:

Code: Select all

(слово[^\r])|([^\r]слово)
- Отмечаем галочку "Регулярные выражения"
- Отмечаем "Оставить строки"

chris
Возможно ли сделать в новых версиях та как было в версии 3хх
То есть двойной щелчек на строчке и выделяется только одна строчка (так я их удаляю) в новых версиях выделяются все пустые, очень не удобно для обработки информации.
Для выделения пустых строк можно пользоваться нажатием мышки на отступ слева (его размеры можно регулировать в настройках).
По этому до сих пор пользуюсь версией 3.4.8, все последующие версии ставил и затем удалял.
Последняя 3.x.x версия - 3.6.4.
И еще в этой програме не предусмотренно отображать и-нет ссылки с двойным нажатием, или я путаю с другой подобной программой (не смог найти этой функции)???
"Главное меню->Параметры...->Дополнительно (2)->Гиперссылки->Показывать"

Posted: Mon Feb 23, 2009 8:26 pm
by beliy
Instructor wrote:beliy
словоф
фслово
фсловоф
слово

после фильтрации по слову "слово" из этого списка должны остаться только первые 3 строки.
Scripts плагин + LinesFilter.js.
- В строке вводим:

Code: Select all

(слово[^\r])|([^\r]слово)
- Отмечаем галочку "Регулярные выражения"
- Отмечаем "Оставить строки"
не работает так, удаляет всё, где упоминается слово