Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Подсветка синтаксиса в trac (число прочтений - 12455 )
miksuny4
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 05. Декабря 2006
Подсветка синтаксиса в trac
25. Апреля 2007 :: 12:50
Печать  
Есть лексер для подсветки синтаксиса 1С в trac с использованием pygments. Может кому и пригодится.

Что нужно:

trac версии 0.10.4 (у меня стоит 0.10.4dev, но и на 0.10.4 должен работать)
http://trac.edgewall.org/wiki/TracDownload

установить библиотеку pygments версии 0.7.1
http://pygments.org/download/

установить плагин для трака TracPygmentsPlugin
http://trac-hacks.org/wiki/TracPygmentsPlugin

Далее, в файле C:\Python24\Lib\site-packages\trac\mimeview\api.py
в KNOWN_MIME_TYPES = {} добавляем строчку типа:
Код
Выбрать все
'text/x-1s':		  ['1s', 'prm', '1S', 'PRM'] 



Из прилагающегося архива копируем файл lexer.py в каталог
C:\Python24\Lib\site-packages\Pygments-0.7.1-py2.4.egg\pygments

файл 1S.py копируем в каталог

C:\Python24\Lib\site-packages\Pygments-0.7.1-py2.4.egg\pygments\lexers.

В файле py
добавляем строчку типа:
Код
Выбрать все
'OneSLexer': ('pygments.lexers.1S', '1S', ('1s',), ('*.1s', '*.prm', '*.1cpp'), ('text/x-1s',)) 



Запускаем файл py, чтобы pygments подхватил наш лексер, вот на этом, кажется и все.

Теперь в траке должна работать подсветка синтаксиса 1С для файлов с расширениями '*.1s', '*.prm', '*.1cpp'.
Должна также работать такая конструкция в вики:
Код
Выбрать все
{{{
#!1s
...
Код на языке 1С
...
}}}
 



Пользуйтесь, на здоровье (если кому это надо).
  

syntax-highlighting.zip ( 10 KB | Загрузки )
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #1 - 11. Мая 2007 :: 13:07
Печать  
Поставил, но явно наблюдаю траблы с кодировкой.

Нельзя ли посмотреть небольшой скрин того, как оно должно выглядеть?
И ещё вопросы - в какой кодировке база? не ставилось ли патчей на питон и трек?
  
Наверх
 
IP записан
 
miksuny4
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 05. Декабря 2006
Re: Подсветка синтаксиса в trac
Ответ #2 - 11. Мая 2007 :: 13:27
Печать  
wlad писал(а) 11. Мая 2007 :: 13:07:
Поставил, но явно наблюдаю траблы с кодировкой.

Нельзя ли посмотреть небольшой скрин того, как оно должно выглядеть?
И ещё вопросы - в какой кодировке база? не ставилось ли патчей на питон и трек?


База в кодировке windows-1251, как есть. Патчей на питон и трак не ставил. Возможно, стоит в trac.ini прописать:

Код
Выбрать все
[trac]
default_charset = windows-1251
 



Скрин прилагается.
  

trac.JPG ( 119 KB | Загрузки )
trac.JPG
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #3 - 11. Мая 2007 :: 13:34
Печать  
miksuny4 писал(а) 11. Мая 2007 :: 13:27:
База в кодировке windows-1251, как есть. Патчей на питон и трак не ставил.


Ясно, спасибо, так и предполагал. У меня utf-8 стоит. Не пашет подсветка.
Буду копать.

За скрин большое спасибо.
  
Наверх
 
IP записан
 
miksuny4
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 05. Декабря 2006
Re: Подсветка синтаксиса в trac
Ответ #4 - 11. Мая 2007 :: 13:57
Печать  
wlad писал(а) 11. Мая 2007 :: 13:34:
miksuny4 писал(а) 11. Мая 2007 :: 13:27:
База в кодировке windows-1251, как есть. Патчей на питон и трак не ставил.


Ясно, спасибо, так и предполагал. У меня utf-8 стоит. Не пашет подсветка.
Буду копать.

За скрин большое спасибо.


А для английских синономов подсветка работает? Если да, то надо копать в сторону lexer.py который лежит в Pygments. У меня была проблема в том, что сам исходный текст модуля передается как юникод (или конвертируется), а вот файл с определениями синтаксиса в win-1251.
lexer.py его считывает, компилирует регулярные выражения, а в юникод не переводит. И, соответственно, латиница распознается, а вот кирилица никак. Специально для этого добавил в lexer.py перевод в юникод:
Код
Выбрать все
from trac.util.text import to_unicode
...
 t = tdef[0]
 t = to_unicode(t)
#rex = re.compile(t, rflags)
rex = re.compile(t, rflags)
 

  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #5 - 11. Мая 2007 :: 14:04
Печать  
miksuny4 писал(а) 11. Мая 2007 :: 13:57:
А для английских синономов подсветка работает?


Да, с ними порядок, подсвечиваются правильно.
А вот кириллица вся идёт красным цветом.
  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #6 - 11. Мая 2007 :: 14:06
Печать  
То есть нет, не вся. Текст в кавычках и комментарии тоже подсвечивается корректно.
Остальное - красным.
  
Наверх
 
IP записан
 
miksuny4
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 05. Декабря 2006
Re: Подсветка синтаксиса в trac
Ответ #7 - 11. Мая 2007 :: 14:07
Печать  
wlad писал(а) 11. Мая 2007 :: 14:04:
miksuny4 писал(а) 11. Мая 2007 :: 13:57:
А для английских синономов подсветка работает?


Да, с ними порядок, подсвечиваются правильно.
А вот кириллица вся идёт красным цветом.

ну вот, смотри пост выше правленный. Ты может lexer.py не заменил в pygments? И в этом все и дело?
  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #8 - 11. Мая 2007 :: 14:52
Печать  
miksuny4 писал(а) 11. Мая 2007 :: 14:07:
Ты может lexer.py не заменил в pygments? И в этом все и дело?


Нет, что с заменой, что без замены.

А вот лексер конвертнул в utf-8 и заработало. Что самое удивительное, но до этого десять раз проделывал эти же манипуляции.
  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #9 - 11. Мая 2007 :: 15:00
Печать  
Лексер в смысле 1S.py
  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #10 - 11. Мая 2007 :: 15:04
Печать  
Упс, сорри, не глянул правленный пост. Но всё равно, без конвертации в utf не работало.
Странно вообще.
  
Наверх
 
IP записан
 
miksuny4
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 05. Декабря 2006
Re: Подсветка синтаксиса в trac
Ответ #11 - 11. Мая 2007 :: 15:10
Печать  
Я тоже сначала конвертил 1SLexer.py в юникод, но наверное как-то неправильно конвертил  Смех, и поэтому в конце концов поправил lexer.py. Выложи, плиз, 1SLexer в юникоде.
  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #12 - 11. Мая 2007 :: 15:15
Печать  
miksuny4 писал(а) 11. Мая 2007 :: 15:10:
Я тоже сначала конвертил 1SLexer.py в юникод, но наверное как-то неправильно конвертил  Смех, и поэтому в конце концов поправил lexer.py. Выложи, плиз, 1SLexer в юникоде.


Да я просто через iconv сконвертил.
  

1S_py.zip ( 4 KB | Загрузки )
Наверх
 
IP записан
 
miksuny4
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 05. Декабря 2006
Re: Подсветка синтаксиса в trac
Ответ #13 - 11. Мая 2007 :: 15:17
Печать  
Этот бы лексер как плагин подключить - есть вроде в pygments такая возможность. тогда не надо бы было столько ручками править...
  
Наверх
 
IP записан
 
wlad
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 10. Мая 2007
Re: Подсветка синтаксиса в trac
Ответ #14 - 11. Мая 2007 :: 16:06
Печать  
[quote author=miksuny4 link=1177505462/0#13 date=1178896668]Этот бы лексер как плагин подключить - есть вроде в pygments такая возможность. тогда не надо бы было столько ручками править...[/quote]

1S.py ? В mappings не обязательно добавлять

[code]
'OneSLexer': ('pygments.lexers.1S', '1S', ('1s',), ('*.1s', '*.prm', '*.1cpp'), ('text/x-1s',)) [/code]

Просто его запустить, он сам всё перечитает. Просто 1S.py в каталог к лексерам скопировать и _mappings.py запустить.

А в треке я в конфиг mimetype добавил, соответственно, исходники править тоже не требуется.
Плюс - при обновлении не нужно ходить и руками опять подправлять.
Минус - нужно править в конфиге каждого проекта.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать