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

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Wed 04 May, 2005 14:45

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 (старые версии доступны тут)



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

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

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

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 не менялись уже лет несколько

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

Post by d.k.Brazz » Tue 23 Jun, 2009 09:02

как я понял связано с этим:

Code: Select all

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

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

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

Post by d.k.Brazz » Tue 23 Jun, 2009 09:45

Все надо делать самому
Патч к транку колорера

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 актуальные хидеры подкинуть

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

Post by d.k.Brazz » Tue 23 Jun, 2009 13:53

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

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

UPD: исправлена утечка памяти, файлы перезалиты
Attachments
colorer.bin.7z
колорер.длл
(203.81 KiB) Downloaded 284 times
Last edited by d.k.Brazz on Wed 24 Jun, 2009 13:04, edited 1 time in total.

User avatar
GrAnD
Posts: 351
Joined: Thu 13 Oct, 2005 23:47
Location: Amsterdam
Been thanked: 3 times
Contact:

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

Post by GrAnD » Wed 24 Jun, 2009 01:17

А на каком svn лежат исходники Colorer, подскажите пожалуйста.

Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 1 time

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

Post by Игорь Юдинцев » Wed 24 Jun, 2009 06:42

d.k.Brazz
да, в моей сборке была проблема с памятью.

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

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Wed 24 Jun, 2009 11:50

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;

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

Post by d.k.Brazz » Wed 24 Jun, 2009 13:05

sonar wrote:код то рабочий, но вот только он добавляет новую утечку памяти.
FileName надо освободить.
например там же ниже
Спасибо
поправил, файлы перезалил в свой предыдущий пост

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Wed 24 Jun, 2009 18:53

d.k.Brazz
у тебя случаем при выходе из фара в SharedInputSource.h падение не происходит?
до этого на работе все нормально было. пришел домой все с нуля сделал (исходники с svn), сделал это изменение и все , падает постоянно

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Thu 25 Jun, 2009 05:59

поковырялся в исходниках 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
Attachments
diff.zip
(1.72 KiB) Downloaded 217 times

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

Post by d.k.Brazz » Thu 25 Jun, 2009 08:07

sonar wrote:т.к. не знаю с какими параметрами обычно собирают этот плагин для фара.
там же makefile.vs есть, в нем все и прописано

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Thu 25 Jun, 2009 08:55

ага, теперь понял
просто в pcolorer2.vcproj настройки только для debug версии были

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

d.k.Brazz
Posts: 176
Joined: Wed 07 Sep, 2005 17:02
Location: дети берутся?

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

Post by d.k.Brazz » Thu 25 Jun, 2009 09:22

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

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Thu 25 Jun, 2009 09:48

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

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Thu 25 Jun, 2009 11:00

перезалил архив патчей, ошибся я в локализации одной утечки, поправил файлик.

User avatar
ctapmex
Posts: 1010
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 4 times
Contact:

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

Post by ctapmex » Fri 26 Jun, 2009 05:56

собрал плагин для far2 со всеми изменениями, которые были выше. (смотри ниже, пересобран)

пока утечек в коде не нашел больше, кроме мест , где происходит ошибка загрузки плагина. т.е. если плагин не стал грузится и выдал исключение (например файл настроек не нашел) , то мусора останется много.
Last edited by ctapmex on Fri 26 Jun, 2009 11:24, edited 1 time in total.

Aleksoid1978
Posts: 7
Joined: Fri 08 May, 2009 06:27

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

Post by Aleksoid1978 » Fri 26 Jun, 2009 06:45

Попробовал последнюю версию Colorer отсюда - очень сильно тормозит даже на небольших файлах в 25килобайт(файл .h), а если открыть файл ресурса VS, .rc размеров под 300килобайт, то невозможно пролистывать, нагрузка на одно ядро доходит до 90%, камень C2D 1.8Mhz

Причем colorer4ever работает отлично, и посветка и скорость

З.Ы. - проверил Colorer-take5w - вообще вылетает. Версия Far 2.0 1010 х86

Проверял и просто на фаре и на связке с ConEmu

Post Reply

Return to “Обсуждение плагинов”