Page 29 of 239

Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Wed 04 May, 2005 14:45
by ctapmex
Far Colorer — плагин подсветки синтаксиса в редакторе, основанный на Colorer Library Игоря Русских.
  • Изначальный автор плагина — Игорь Русских (lomecb, он же cail).
  • После того как плагин портирован на Far 2, поддержкой занимается Алексей Добрунов (ctapmex, он же на форуме ctapmex).
  • Официальная поддержка осуществляется через google-группу colorer_ru (на форуме бывает только ctapmex).
  • Актуальные версии основаны на Colorer Library версии take5.
GitHub | Анонс | Старые домашние страницы библиотеки Colorer и плагина для FAR

Плагин входит в дистрибутив Far Manager с v3.0.2948 (старые версии доступны тут)
Поддержка Windows XP
Начиная с версии FarColorer 1.4.0 в плагине прекращена поддержка Windows XP. Полностью поддерживается и тестируется на Windows 10. Несколько версий Windows назад - по запросу. Но кажется, что всегда должно работать начиная с Windows 2008.
Far Manager 3.0.5797 (2021.05.10) и более новые в дистрибутиве содержат FarColorer версии 1.4.
Поддержка Windows XP осталась только на FarColorer 1.3.x. В данной ветке будут выходить только критичные исправления. Скачать можно на GitHub странице плагина. Последняя версия 1.3.30



Что не разжёвано в документации плагина:
  • Как подключить собственные цветовые стили *.hrd
  • Как подключить собственную схему:
    • используя пользовательский файл прототипов:
    • используя папку auto:
    • через пользовательский catalog.xml:
  • Как переопределить существующую схему
  • Как правильно "удалить" какую-либо стандартную схему
  • Как использовать относительные пути и переменные окружения
  • Если раскраска неправильна:
  • Неочевидные настройки: maxlinelength (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Tue 23 Jun, 2009 08:39
by d.k.Brazz

Latest post of the previous page:

Игорь Юдинцев wrote:Держите вот сборку под FAR2 >= 995; вроде работает.
Плохо работает
Странная сборка какая то, никаких изменения там не производилось? Ничего не ломалось?

Имеем голый фар 2.0 build 1010 x86 и этот колорер

sql подсвечивает через раз. Т.е. жму на файле F4 - не подсвечивает, жму ESC, снова F4 - подсвечивает.
Некоторые файлы не подсвечивает вообще.
хм.. поведение крайне странно
файл с именем set_list_account.sql не подсвечивает, но если его переименовать в set_list_accoun.sql - подсвечивает.
причем рядом лежит файл set_list_account-fiz.sql который подсвечивается, но если переименовать в set_list_account-fiz1.sql - уже не подсвечивается

hrc/hrd не менялись уже лет несколько

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Tue 23 Jun, 2009 09:02
by d.k.Brazz
как я понял связано с этим:

Code: Select all

drkns 15.06.2009 20:30:24 +0200 - build 994

1. ECTL_FREEINFO больше нет. Память под EditorInfo::FileName выделяет плагин.
   Требуемый размер можно получить в поле EditorInfo::FileNameSize передав туда 0,
   либо передав NULL в качестве EditorInfo::FileName.

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Tue 23 Jun, 2009 09:45
by d.k.Brazz
Все надо делать самому
Патч к транку колорера

Code: Select all

Index: FarEditorSet.cpp
===================================================================
--- FarEditorSet.cpp	(revision 1107)
+++ FarEditorSet.cpp	(working copy)
@@ -539,7 +539,19 @@
     editor = new FarEditor(info, parserFactory);
     farEditorInstances.put(&SString(ei.EditorID), editor);
 
-    DString fnpath(ei.FileName);
+    LPWSTR FileName=NULL;
+    size_t FileNameSize=info->EditorControl(ECTL_GETFILENAME,NULL);
+    if(FileNameSize)
+    {
+      FileName=new wchar_t[FileNameSize];
+      if(FileName)
+      {
+        info->EditorControl(ECTL_GETFILENAME,FileName);
+      }
+    }
+
+    DString fnpath(FileName);
+
     int slash_idx = fnpath.lastIndexOf('\\');
     if (slash_idx == -1) slash_idx = fnpath.lastIndexOf('/');
     DString fn = DString(fnpath, slash_idx+1);
upd: ну и естественно в trunk\colorer\src\shared\far2plugin актуальные хидеры подкинуть

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Tue 23 Jun, 2009 13:53
by d.k.Brazz
Собрал колорер
три версии собраны под три архитектуры:
- I386 - без оптимизаций.
- SSE - не ниже Pentium III, AthlonXP, Duron (> 1000 МГц),
- SSE2 - Pentium4, Athlon x64, Sempron (Socket 754)

Вот интересно - насколько оно влияет на производительность?

UPD: исправлена утечка памяти, файлы перезалиты

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Wed 24 Jun, 2009 01:17
by GrAnD
А на каком svn лежат исходники Colorer, подскажите пожалуйста.

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Wed 24 Jun, 2009 06:42
by Игорь Юдинцев
d.k.Brazz
да, в моей сборке была проблема с памятью.

All: качайте сборку от d.k.Brazz
GrAnD wrote:А на каком svn лежат исходники Colorer, подскажите пожалуйста.
https://colorer.svn.sourceforge.net/svnroot/colorer

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Wed 24 Jun, 2009 11:50
by ctapmex
d.k.Brazz wrote:Все надо делать самому
Патч к транку колорера

Code: Select all

Index: FarEditorSet.cpp
===================================================================
--- FarEditorSet.cpp	(revision 1107)
+++ FarEditorSet.cpp	(working copy)
@@ -539,7 +539,19 @@
     editor = new FarEditor(info, parserFactory);
     farEditorInstances.put(&SString(ei.EditorID), editor);
 
-    DString fnpath(ei.FileName);
+    LPWSTR FileName=NULL;
+    size_t FileNameSize=info->EditorControl(ECTL_GETFILENAME,NULL);
+    if(FileNameSize)
+    {
+      FileName=new wchar_t[FileNameSize];
+      if(FileName)
+      {
+        info->EditorControl(ECTL_GETFILENAME,FileName);
+      }
+    }
+
+    DString fnpath(FileName);
+
     int slash_idx = fnpath.lastIndexOf('\\');
     if (slash_idx == -1) slash_idx = fnpath.lastIndexOf('/');
     DString fn = DString(fnpath, slash_idx+1);
upd: ну и естественно в trunk\colorer\src\shared\far2plugin актуальные хидеры подкинуть
код то рабочий, но вот только он добавляет новую утечку памяти.
FileName надо освободить.
например там же ниже

Code: Select all

   
.....
 editor->setMaxTime(rMaxTime);
delete[] FileName;

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Wed 24 Jun, 2009 13:05
by d.k.Brazz
sonar wrote:код то рабочий, но вот только он добавляет новую утечку памяти.
FileName надо освободить.
например там же ниже
Спасибо
поправил, файлы перезалил в свой предыдущий пост

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Wed 24 Jun, 2009 18:53
by ctapmex
d.k.Brazz
у тебя случаем при выходе из фара в SharedInputSource.h падение не происходит?
до этого на работе все нормально было. пришел домой все с нуля сделал (исходники с svn), сделал это изменение и все , падает постоянно

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Thu 25 Jun, 2009 05:59
by ctapmex
поковырялся в исходниках colorer, в текущей ревизии из svn (1107), попытался адаптировать под текущий far2. все изменения прикрепил ниже. ну и отправил письмо автору плагина, может быть внесет изменения.
Готовые сборки не выкладываю, т.к. не знаю с какими параметрами обычно собирают этот плагин для фара.
Для того чтобы плагин, собранный из текущих исходников, работал под far2 нужно сделать следующее
1. файлы в colorer/src/shared/far2plugin/ заменить на файлы от сюда
http://www.farmanager.com/svn/trunk/plu ... n/unicode/
2. применить к файлу colorer/src/pcolorer2/FarEditorSet.cpp патч
FarEditorSet.diff

далее найденные мной утечки памяти и ошибки
1. эта ошибка также не давала работать под новым far2
в файле colorer/src/shared/common/io/SharedInputSource.h функция
delref вызывала AV , когда пыталась вернуть только что освобожденную
переменную. патч SharedInputSource.diff
2. утечка памяти в colorer/src/pcolorer2/FarEditor.cpp
патч FarEditor.diff
3. утечка памяти и неправильная обработка исключений в
colorer/src/shared/common/io/JARInputSource.cpp
патч JARInputSource.diff

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Thu 25 Jun, 2009 08:07
by d.k.Brazz
sonar wrote:т.к. не знаю с какими параметрами обычно собирают этот плагин для фара.
там же makefile.vs есть, в нем все и прописано

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Thu 25 Jun, 2009 08:55
by ctapmex
ага, теперь понял
просто в pcolorer2.vcproj настройки только для debug версии были

пришел ответ от Игоря Русских , обещал в ближайшее время внести изменения в svn

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Thu 25 Jun, 2009 09:22
by d.k.Brazz
sonar wrote:d.k.Brazz
у тебя случаем при выходе из фара в SharedInputSource.h падение не происходит?
до этого на работе все нормально было. пришел домой все с нуля сделал (исходники с svn), сделал это изменение и все , падает постоянно
Падения фара иногда случаются, особенно когда он по нескольку суток не закрывается. Может и из-за колорера.
В последнее время не падает. Вероятно из-за частых обновлений не успевает много утечь.

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Thu 25 Jun, 2009 09:48
by ctapmex
d.k.Brazz wrote:
sonar wrote:d.k.Brazz
у тебя случаем при выходе из фара в SharedInputSource.h падение не происходит?
до этого на работе все нормально было. пришел домой все с нуля сделал (исходники с svn), сделал это изменение и все , падает постоянно
Падения фара иногда случаются, особенно когда он по нескольку суток не закрывается. Может и из-за колорера.
В последнее время не падает. Вероятно из-за частых обновлений не успевает много утечь.
с этой ошибкой я разобрался, выше лежит для неё патч. а падало оно сразу при запуске фара. фар был последний, и единственный плагин - колорер.

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Thu 25 Jun, 2009 11:00
by ctapmex
перезалил архив патчей, ошибся я в локализации одной утечки, поправил файлик.

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Posted: Fri 26 Jun, 2009 05:56
by ctapmex
собрал плагин для far2 со всеми изменениями, которые были выше. (смотри ниже, пересобран)

пока утечек в коде не нашел больше, кроме мест , где происходит ошибка загрузки плагина. т.е. если плагин не стал грузится и выдал исключение (например файл настроек не нашел) , то мусора останется много.