概要
Python IDEであるSpyderは、現時点ではKv言語のシンタックスハイライトに未対応のようです.
Spyderがシンタックスハイライターとして使用しているPygmentsに新たにlexer(ハイライト規則)を追加した際のメモです.
環境
- Windows10 64bit
- Python 3.5.2 | Anaconda custom (64-bit)
- Spyder 3.0.2
- Pygments 2.1.3
lexerファイルのダウンロード
lexerファイルとはPygmentsのハイライト規則が示されたPythonスクリプトファイルです.
以下のリンク先よりGitHub上のソースコードを取得します.
kivy/highlight.py at master · kivy/kivy
https://github.com/kivy/kivy/blob/master/kivy/extras/highlight.py
ファイル名の変更と保存
highlight.py
はkv.py
にファイル名を変更し、\site-packages\pygments\lexers
フォルダ下に保存します.
lexerファイルの編集
ダウンロードした状態そのままでは使用できないためkv.py
ファイルを編集します.以下の文を1行追加し、上書き保存します.
__all__ = ['KivyLexer']
追加した後のkv.py
ファイルの例は以下の通りです.
...
import sys
__all__ = ['KivyLexer']
class KivyLexer(RegexLexer):
...
lexerマッピングの再構築
kv.py
をPygments
に認識させるため、lexerマッピングの再構築を行います.
> cd C:\Program Files\Anaconda3\Lib\site-packages\pygments\lexers
> python _mapping.py
...
pygments.lexers.javascript
pygments.lexers.julia
pygments.lexers.jvm
pygments.lexers.kv
pygments.lexers.lisp
pygments.lexers.make
pygments.lexers.markup
...
=== 400 lexers processed.
以上で完了です.
Spyderを起動すると、拡張子が.kv
であるファイルがシンタックスハイライトされます.
参考
- Write your own lexer — Pygments http://pygments.org/docs/lexerdevelopment/
- syntax highlighting - How is syntaxhighlighters.py called by Spyder IDE? - Stack Overflow http://stackoverflow.com/questions/33462949/how-is-syntaxhighlighters-py-called-by-spyder-ide
- How to install a new lexer in pygments? - Stack Overflow http://stackoverflow.com/questions/22321702/how-to-install-a-new-lexer-in-pygments