Geany: подсветка синтаксиса для пользовательских типов файлов для некоторых слов

Geany - это простой, быстрый и мощный текстовый редактор. Он имеет довольно сильную поддержку подсветки синтаксиса практически для всех видов языков программирования.

Мне было интересно, как сделать настраиваемую подсветку синтаксиса для моей специальной программы под названием "Phosim", которая имеет расширение файла .cat,

Пока я сделал это:
Сначала я создал файл конфигурации расширения типа файла: ~/.config/geany/filetype_extensions.conf
Содержание этого выглядит так:

[Extensions]
Gnuplot=*.gp;*.gnu;*.plt;
Galfit=*.gal;
Phosim=*.cat;
[Groups]
Script=Gnuplot;Galfit;Phosim;  

Здесь я пытаюсь применить пользовательское выделение к программам Gnuplot, Galfit и Phosim. Для Gnuplot и Galfit это отлично работает. Но для Фосима у меня есть некоторые проблемы.

Затем я создал файл конфигурации определения файла: ~/.config/geany/filedefs/filetypes.Phosim.conf
Содержимое которого выглядит так:

# Author  : Bhishan Poudel
# Date    : May 24, 2016
# Version : 1.0


[styling]
# Edit these in the colorscheme .conf file instead
default=default
comment=comment_line
function=keyword_1
variable=string_1,bold
label=label
userdefined=string_2
number=number_2


[keywords]
# all items must be in one line separated by space
variables=object Unrefracted_RA_deg SIM_SEED none
functions=
lables=10
userdefined=angle 30 Angle_RA 20.0 none  
numbers=0 1 2 3 4 5 6 7 8 9


[lexer_properties]
nsis.uservars=1
nsis.ignorecase=1


[settings]
# default extension used when saving files
extension=cat

# single comments, like # in this file
comment_single=#
# multiline comments
#comment_open=
#comment_close=


# This setting works only for single line comments
comment_use_indent=true

# context action command (please see Geany's main documentation for details)
 context_action_cmd=

# lexer filetype should be an existing lexer that does not use lexer_filetype itself
lexer_filetype=NSIS


[build-menu]
EX_00_LB=Execute
EX_00_CM=
EX_00_WD=
FT_00_LB=
FT_00_CM=
FT_00_WD=
FT_02_LB=
FT_02_CM=
FT_02_WD=

Теперь мой example.cat выглядит так:

# example.cat
angle 30
Angle_RA 20.0
object none

# Till now, 
# Words highlighted    : angle 30 object none
# Words not highlighted: Angle_RA 20.0
# I like them also to be highlighted!

Я получил подсветку синтаксиса только для двух слов, а именно, объект и ни одного. Я пробовал стиль, равный Fortran, так как он имеет заглавные буквы, но он также не работал.

Как мы можем получить подсветку синтаксиса для имен переменных, которая состоит из прописных, строчных и подчеркиваний?

Например:
Я получил подсветку синтаксиса для слов: objectnone,
Но, не получил подсветку синтаксиса для слов: Angle_RA20.0

Кроме того, я мои номера 0,1,..,9 выделены, но десятичные дроби не выделены. Как мы можем выделить десятичные дроби тоже?

Например:
Я получил подсветку синтаксиса для слов: 11000 но не получил подсветку синтаксиса для слов: 49552.3180.0

Вот некоторые полезные ссылки:
Заставьте Geany распознавать дополнительные расширения файлов
Пользовательская подсветка синтаксиса в Geany
http://www.geany.org/manual/current/index.html http://www.geany.org/manual/

1 ответ

Решение

Вместо того, чтобы создавать новые файлы определений файлов, я добавил расширения для Python, и это сработало для меня.

Например, я хотел выделить файлы с расширением .icat (если вам интересно, это файл каталога экземпляров для Phosim Software in Astronomy.)

Недостаток: дополнительные слова также выделены в скриптах Python (.py,.pyc,.ipy)

Примечание. Если кто-нибудь опубликовал решение, которое работает с новым расширением файла, ~/.config/geany/filedefs/filetypes.Phosim.conf Я бы искренне приветствовал это. Мой файл example.pcat выглядит так:

# example.pcat
Unrefracted_RA_deg 0
Unrefracted_Dec_deg 0
Unrefracted_Azimuth 0
Unrefracted_Altitude 89
Slalib_date 1994/7/19/0.298822999997
Opsim_rotskypos 0
Opsim_rottelpos 0
Opsim_moondec -90
Opsim_moonra 180
Opsim_expmjd 49552.3
Opsim_moonalt -90
Opsim_sunalt -90
Opsim_filter 2
Opsim_dist2moon 180.0
Opsim_moonphase 10.0
Opsim_obshistid 99999999
Opsim_rawseeing 0.65
SIM_SEED 1000
SIM_MINSOURCE 1
SIM_TELCONFIG 0
SIM_CAMCONFIG 1
SIM_VISTIME 15000.0
SIM_NSNAP 1
object 0 0.0 0.0 20 ../sky/sed_flat.txt 0 0 0 0 0 0 bhishan.fits 0.09 0.0 none

Я хочу, чтобы Джини выделил все первые слова желтым цветом, цифры - пурпурным, а слово "нет" синим цветом.

Сначала я создал (или отредактировал, если он уже существует) файл:

~/.config/geany/filetype_extensions.conf

И добавил следующие вещи внутри него.

[Extensions]
Gnuplot=*.gp;*.gnu;*.plt;
Galfit=*.gal;
Phosim=*.pcat;
Python=*.py;*.pyc;*.ipy;*.icat;*.pcat
[Groups]
Script=Gnuplot;Galfit;Phosim;Python; 

Затем я добавил дополнительные КЛЮЧЕВЫЕ СЛОВА к уже существующим ключевым словам в типе файла Python.
Для этого я создал (или отредактировал, если он уже существует) файл:

~/.config/geany/filedefs/filetypes.python

Теперь файл ~/.config/geany/filedefs/filetypes.python выглядит так:

# Author  : Bhishan Poudel
# Date    : June 9, 2016
# Version : 1.0
# File    : Filetype for both python and phosim_instance_catalogs

[styling]
default=default
commentline=comment_line
number=number_1
string=string_1
character=character
word=keyword_1
triple=string_2
tripledouble=string_2
classname=type
defname=function
operator=operator
identifier=identifier_1
commentblock=comment
stringeol=string_eol
word2=keyword_2
decorator=decorator


[keywords]
# all items must be in one line
primary=and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield False None True  Words_after_this_are_for_Phosim_pcat_files Unrefracted_RA_deg Unrefracted_Dec_deg Unrefracted_Azimuth Unrefracted_Altitude Slalib_date Opsim_moondec Opsim_rotskypos Opsim_rottelpos Opsim_moondec Opsim_moonra Opsim_expmjd Opsim_moonalt Opsim_sunalt Opsim_filter Opsim_dist2moon Opsim_moonphase Opsim_obshistid Opsim_rawseeing SIM_SEED SIM_MINSOURCE SIM_TELCONFIG  SIM_CAMCONFIG SIM_VISTIME SIM_NSNAP object


identifiers=ArithmeticError AssertionError AttributeError BaseException BufferError BytesWarning DeprecationWarning EOFError Ellipsis EnvironmentError Exception FileNotFoundError FloatingPointError FutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexError KeyError KeyboardInterrupt LookupError MemoryError NameError NotImplemented NotImplementedError OSError OverflowError PendingDeprecationWarning ReferenceError RuntimeError RuntimeWarning StandardError StopIteration SyntaxError SyntaxWarning SystemError SystemExit TabError TypeError UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateError UnicodeWarning UserWarning ValueError Warning ZeroDivisionError __debug__ __doc__ __import__ __name__ __package__ abs all any apply basestring bin bool buffer bytearray bytes callable chr classmethod cmp coerce compile complex copyright credits delattr dict dir divmod enumerate eval execfile exit file filter float format frozenset getattr globals hasattr hash help hex id input int intern isinstance issubclass iter len license list locals long map max memoryview min next object oct open ord pow print property quit range raw_input reduce reload repr reversed round set setattr slice sorted staticmethod str sum super tuple type unichr unicode vars xrange zip array arange Catagorical cStringIO DataFramedate_range genfromtxt  linspace loadtxt matplotlib none numpy np pandas pd plot plt pyplot savefig scipy Series sp StringIO


[lexer_properties]
fold.comment.python=1
fold.quotes.python=1


[settings]
# default extension used when saving files
extension=py

# the following characters are these which a "word" can contains, see documentation
wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

# MIME type
mime_type=text/x-python
comment_single=#
comment_open="""
comment_close="""
comment_use_indent=true

# context action command (please see Geany's main documentation for details)
context_action_cmd=


[indentation]
width=4
# 0 is spaces, 1 is tabs, 2 is tab & spaces
type=0


[build_settings]
# %f will be replaced by the complete filename
# %e will be replaced by the filename without extension
# (use only one of it at one time)
compiler=python -m py_compile "%f"
run_cmd=python "%f"


[build-menu]
FT_00_LB=Execute
FT_00_CM=python %f
FT_00_WD=
FT_01_LB=
FT_01_CM=
FT_01_WD=
FT_02_LB=
FT_02_CM=
FT_02_WD=
EX_00_LB=Execute
EX_00_CM=clear; python %f
EX_00_WD=
error_regex=([^:]+):([0-9]+):([0-9:]+)? .*
EX_01_LB=
EX_01_CM=
EX_01_WD=

Теперь я перезапустил geany, и я вижу все первые слова желтым цветом, цифры другого цвета, а слово "нет" - синим.

Другие вопросы по тегам