Включение лексера CoffeeScript в SciTE? - PullRequest
9 голосов
/ 10 января 2012

Я заметил, что в исходном коде SciTE есть файл LexCoffeeScript.cxx;однако SciTE, похоже, не имеет опции меню CoffeeScript в своем меню «Языки».

Добавление опции вручную не помогает - по-прежнему нет никакой раскраски синтаксиса.

Есть лиЛюбой способ включить встроенный лексер * (вместо обращения к внешнему)?

Ответы [ 3 ]

3 голосов
/ 11 апреля 2012

Очевидно, что лексер CoffeeScript скомпилирован в Scintilla, но не используется SciTE. Я имею в виду, что нет файла coffeescript.properties или любого другого файла, который ссылался бы на лексер. Вы пытаетесь создать свой собственный и установить лексер для используемого расширения файла coffeescript:

# Define SciTE settings for Coffeescript files.
file.patterns.coffeescript=*.coffee
filter.coffeescript=Coffeescript (coffee)|$(file.patterns.coffeescript)|
lexer.$(file.patterns.coffeescript)=coffeescript
...

Тогда вы бы определили ключевые слова, стили окраски и другие вещи, поддерживаемые лексером - посмотрите его источники. Вы можете получить вдохновение в cpp.properties, например, (Лексер для C / C ++ и подобных языков называется cpp.) Здесь поддерживаются лексические состояния:

val SCE_COFFEESCRIPT_DEFAULT=0
val SCE_COFFEESCRIPT_COMMENT=1
val SCE_COFFEESCRIPT_COMMENTLINE=2
val SCE_COFFEESCRIPT_COMMENTDOC=3
val SCE_COFFEESCRIPT_NUMBER=4
val SCE_COFFEESCRIPT_WORD=5
val SCE_COFFEESCRIPT_STRING=6
val SCE_COFFEESCRIPT_CHARACTER=7
val SCE_COFFEESCRIPT_UUID=8
val SCE_COFFEESCRIPT_PREPROCESSOR=9
val SCE_COFFEESCRIPT_OPERATOR=10
val SCE_COFFEESCRIPT_IDENTIFIER=11
val SCE_COFFEESCRIPT_STRINGEOL=12
val SCE_COFFEESCRIPT_VERBATIM=13
val SCE_COFFEESCRIPT_REGEX=14
val SCE_COFFEESCRIPT_COMMENTLINEDOC=15
val SCE_COFFEESCRIPT_WORD2=16
val SCE_COFFEESCRIPT_COMMENTDOCKEYWORD=17
val SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR=18
val SCE_COFFEESCRIPT_GLOBALCLASS=19
val SCE_COFFEESCRIPT_STRINGRAW=20
val SCE_COFFEESCRIPT_TRIPLEVERBATIM=21
val SCE_COFFEESCRIPT_HASHQUOTEDSTRING=22
val SCE_COFFEESCRIPT_COMMENTBLOCK=22
val SCE_COFFEESCRIPT_VERBOSE_REGEX=23
val SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT=24

Все .properties файлы загружаются автоматически по строке import * из SciTEGlobal.properties. Вы также можете добавить Coffeescript|coffee||\ к menu.language, чтобы получить новый пункт меню в Languages и / или *.coffee к source.files, чтобы увидеть расширение в диалоге открытия файла.

Странно, что автор не предоставил файл .properties с лексером. Вполне возможно, что вместо этого можно использовать лексер JavaScript. Вы можете спросить об этом в списке рассылки SciTE .

--- Ферда

1 голос
/ 03 апреля 2014

Ответ Ферды правильный.

Вот пример файла coffeescript.properties, с которого можно начать и сэкономить время ...

# Define SciTE settings for Coffeescript files.
file.patterns.coffeescript=*.coffee
filter.coffeescript=Coffeescript (coffee)|$(file.patterns.coffeescript)|
lexer.$(file.patterns.coffeescript)=coffeescript

keywordclass.coffeescript=abstract boolean break byte case catch char class \
const continue debugger default delete do double else enum export extends \
final finally float for function goto if implements import in instanceof \
int interface long native new package private protected public \
return short static super switch synchronized this throw throws \
transient try typeof var void volatile while with
keywords.$(file.patterns.coffeescript)=$(keywordclass.coffeescript)

keywordclass2.coffeescript=$
keywords2.$(file.patterns.coffeescript)=$(keywordclass2.coffeescript)

# White space 
style.coffeescript.0=fore:#808080
# Comment: ### ###
style.coffeescript.1=$(colour.code.comment.box),$(font.code.comment.box)
# Line Comment: #
style.coffeescript.2=$(colour.code.comment.line),$(font.code.comment.line)
# Doc comment: block comments beginning with /** or /*!
style.coffeescript.3=$(colour.code.comment.doc),$(font.code.comment.doc)
# Number
style.coffeescript.4=$(colour.number)
# Keyword
style.coffeescript.5=$(colour.keyword),bold
# Double quoted string
style.coffeescript.6=$(colour.string)
# Single quoted string
style.coffeescript.7=$(colour.char)
# UUIDs (only in IDL)
style.coffeescript.8=fore:#804080
# Preprocessor
style.coffeescript.9=$(colour.preproc)
# Operators
style.coffeescript.10=fore:#FF6600,bold
# Identifiers
style.coffeescript.11=fore:#FF1493
# End of line where string is not closed
style.coffeescript.12=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled
# Verbatim strings 
style.coffeescript.13=fore:#007F00,$(font.monospace),back:#E0FFE0,eolfilled
# Regular expressions for JavaScript
style.coffeescript.14=fore:#3F7F3F,$(font.monospace),back:#E0F0FF,eolfilled
# Doc Comment Line: line comments beginning with /// or //!.
style.coffeescript.15=$(colour.code.comment.doc),$(font.code.comment.doc)
# Keywords2
style.coffeescript.16=fore:#B00040
# Comment keyword
style.coffeescript.17=fore:#3060A0,$(font.code.comment.doc)
# Comment keyword error
style.coffeescript.18=fore:#804020,$(font.code.comment.doc)
# Raw strings 
style.coffeescript.20=$(colour.string),back:#FFF3FF,eolfilled
# Triple-quoted strings
style.coffeescript.21=$(font.monospace),fore:#007F00,back:#E0FFE0,eolfilled
# Hash-quoted strings for Pike
style.coffeescript.22=$(font.monospace),fore:#007F00,back:#E7FFD7,eolfilled
# Verbose Regex
style.coffeescript.23=fore:#659900
# Verbose Regex Comment
style.coffeescript.24=$(colour.code.comment.doc)
0 голосов
/ 26 февраля 2012

Вы должны поместить эту строку в файл SciTEGlobal.properties. Который можно открыть в меню «Параметры» в SciTE, нажав Open Global Options File.

import lexers/[dir]

Где [dir] - местоположение файла LexCoffeeScript.cxx в каталоге лексеров в /usr/share/scite/.

UPDATE Попробовал сам, моя установка SciTE не имеет никакого файла CoffeeScript cxx, поэтому я скачал пакет scintillua с здесь , который упакован с лексером lua coffeescript. Следуйте инструкциям выше, чтобы установить его, и он работает нормально.

...