Как добавить поддержку Go в Geany
Я пытаюсь сделать синтаксис hightlighting и строить варианты работы для Geany, любой совет?
5 ответов
посмотрите в $GOROOT / разное и http://go-lang.cat-v.org/text-editors/ для синтаксических файлов из других редакторов, чтобы получить представление.
за исключением этого, начните с C или C++ и добавьте / вычитайте такие вещи, как go
, <-
, func
, etc.
Я только что заметил эту страницу:http://go-lang.cat-v.org/text-editors/geany/
кажется, у них есть все, что вам нужно прямо здесь.
здесь инструкции по форматированию Geany, опубликованные Стивом Хорсли в golang-nuts:
-
В Geany, goto Tools - >файлы конфигурации - >filetype_extensions.conf и добавить в следующий новый заголовок:
Go=*.go;
-
скопируйте типы файлов определения C.C до filedefs/типы файлов.Идти.conf:
cp /usr/share/geany/filetypes.c ~/.config/geany/filedefs/filetypes.Go.conf
-
редактирование файлов.Идти.conf и измените разделы настройки и ключевые слова на это:
[settings] # default extension used when saving files extension=go lexer_filetype=C [keywords] # all items must be in one line primary=break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var secondary=byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float32 float64 complex64 complex128 uintptr string
вы определили тип файла Go в~/.config/geany / filetype_extensions.конф ?
[Extensions]
...
Go=*.go
...
если файл conf еще не существует, скопируйте его из /usr/share / geany и добавьте эту строку в раздел "расширения" (или найдите ее в разделе "Инструменты" > "файлы конфигурации").
Я сделал скрипт Python, который автоматизирует направления в ссылке, предоставленной Jaybill McCarthy.
import shutil, re, os
HOME = os.environ['HOME']
shutil.copy('/usr/share/geany/filetype_extensions.conf', HOME +'/.config/geany/')
with open(HOME + '/.config/geany/filetype_extensions.conf', 'r') as f:
fileData = f.read()
fileData = re.sub(r'Haskell=.*;', r'Go=*.go;\nHaskell=*.hs;*.lhs;', fileData)
fileData = re.compile('(\[Groups\][^\[]Programming=.*?$)', re.DOTALL|re.MULTILINE).sub(r'Go;', fileData)
with open(HOME + '/.config/geany/filetype_extensions.conf', 'w') as f:
f.write(fileData)
textSettings = """[settings]
extension=go
lexer_filetype=C
comment_single=//
comment_open=/*
comment_close=*/
comment_use_indent=true
"""
textKeywords = """[keywords]
primary=break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var
secondary=byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float32 float64 complex64 complex128 uintptr string"""
shutil.copy('/usr/share/geany/filetypes.c', HOME + '/.config/geany/filedefs/filetypes.Go.conf')
with open(HOME + '/.config/geany/filedefs/filetypes.Go.conf', 'r') as f:
fileData = f.read()
fileData = re.compile(r'\[settings\].*?^\[', re.DOTALL|re.MULTILINE).sub('%s\n\n[' %textSettings, fileData)
fileData = re.compile(r'\[keywords\].*?^\[', re.DOTALL|re.MULTILINE).sub('%s\n\n[' %textKeywords, fileData)
with open(HOME + '/.config/geany/filedefs/filetypes.Go.conf', 'w') as f:
f.write(fileData)
print "Complete!"
Я не уверен, означает ли это, что я ленив, или наоборот... о'.О'.