我正在尝试使语法高亮和构建选项适用于 Geany,有什么建议吗?
5 回答
我刚刚注意到这个页面: http: //go-lang.cat-v.org/text-editors/geany/
好像他们在那里有你需要的一切。
在 $GOROOT/misc 和http://go-lang.cat-v.org/text-editors/中查找来自其他编辑器的语法文件以获得一个想法。
除此之外,从 C 或 C++ 开始并添加/减去诸如go
, <-
,func
等之类的内容。
这是Steve Horsley 发布到 golang-nuts 的 Geany 格式说明:
在 Geany 中,转到 Tools->Configuration Files->filetype_extensions.conf 并添加以下新标题:
Go=*.go;
将 C 定义 filetypes.c 复制到 filedefs/filetypes.Go.conf:
cp /usr/share/geany/filetypes.c ~/.config/geany/filedefs/filetypes.Go.conf
编辑 filetypes.Go.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
您是否在 ~/.config/geany/filetype_extensions.conf 中定义了 Go 文件类型?
[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'\1Go;', 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!"
我不确定这是否意味着我很懒,或者相反...... oO