Добавление ключевых слов с помощью Scintilla - PullRequest
4 голосов
/ 04 декабря 2010

Я использую ScintillaNET оболочку для элемента управления Scintilla. Я хочу изменить ключевые слова (для подсветки синтаксиса) для конкретного языка, я предполагаю, что для этого мне нужно создать собственную версию SciLexer.dll.Не удается найти файл ключевых слов для языков в проекте Scintilla. Где они находятся и как их изменить?

1 Ответ

9 голосов
/ 04 декабря 2010

Вам не нужно создавать свой собственный SciLexer.dll, ScintillaNET поддерживает XML-файлы конфигурации. Установите свойства сцинтиллы так:

// Relative to your running directory
scintilla1.ConfigurationManager.CustomLocation = "Config.xml"; 
//Name of the language as defined in the file
scintilla1.ConfigurationManager.Language = "MyLanguage";

Затем создайте файл конфигурации, подобный этому, который основан на lua:

<?xml version="1.0" encoding="utf-8"?>
<ScintillaNET>
  <!--This is what you set the Language property to-->
  <Language Name="lua">

    <!--These are characters after which autocomplete will open-->
    <AutoComplete FillUpCharacters=".([" SingleLineAccept="True" IsCaseSensitive="False">
      <List>
          <!--Insert autocomplete keywords here-->
          and break do else elseif end false for function
          if in local nil not or repeat return then true until while
      </List>
    </AutoComplete>

     <!--Indentation width and indentation type-->
    <Indentation TabWidth="4" SmartIndentType="cpp" />

     <!--Comment characters and the lexer to use-->
    <Lexer LexerName="lua" LineCommentPrefix="--" StreamCommentPrefix="--[[ " StreamCommentSuffix=" ]]" >
      <Keywords List="0" Inherit="False">
        <!--Insert highlighted keywords here-->
         and break do else elseif end false for function
         if in local nil not or repeat return then true until while
      </Keywords>
    </Lexer>
  </Language>
</ScintillaNET>
...