<div dir="ltr"><div>Hi Hans, I'd surely love help you to adapt ConTeXt's settings from v9 to v10. I hope that the following quotations will help you enough. I also hope that the format doesn't get mixed up when I send this mail.<br></div><div><br></div><div>
--------------------- QUOTATION start</div><div>source: <a href="https://foicica.com/textadept/manual.html#Migration.Guides">https://foicica.com/textadept/manual.html#Migration.Guides</a><br></div><div>
<h2>Migration Guides</h2>

<a name="Textadept.9.to.10"></a>
<h3>Textadept 9 to 10</h3>

<a name="API.Changes"></a>
<h4>API Changes</h4>

<table>
<thead>
<tr>
<th>Old API                         </th>
<th align="center">Change  </th>
<th>New API</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>_G</strong>                          </td>
<td align="center">        <br></td>
<td><br></td>
</tr>
<tr>
<td>bit32                           </td>
<td align="center">Removed </td>
<td>N/A <em>(use bitwise operators)</em></td>
</tr>
<tr>
<td><strong>buffer</strong>                      </td>
<td align="center">        <br></td>
<td><br></td>
</tr>
<tr>
<td>brace_match(pos)               </td>
<td align="center">Changed </td>
<td><a href="https://foicica.com/textadept/api.html#buffer.brace_match">brace_match</a>(pos, 0)</td>
</tr>
<tr>
<td><strong>lexer</strong>                       </td>
<td align="center">        <br></td>
<td><br></td>
</tr>
<tr>
<td>_foldsymbols                   </td>
<td align="center">Replaced</td>
<td><a href="https://foicica.com/textadept/api.html#lexer.add_fold_point">add_fold_point()</a></td>
</tr>
<tr>
<td>_rules                         </td>
<td align="center">Replaced</td>
<td><a href="https://foicica.com/textadept/api.html#lexer.add_rule">add_rule()</a></td>
</tr>
<tr>
<td>_tokenstyles                   </td>
<td align="center">Replaced</td>
<td><a href="https://foicica.com/textadept/api.html#lexer.add_style">add_style()</a></td>
</tr>
<tr>
<td>embed_lexer(parent, child, …)</td>
<td align="center">Renamed </td>
<td>parent:<a href="https://foicica.com/textadept/api.html#lexer.embed">embed</a>(child, …)</td>
</tr>
<tr>
<td>_RULES[id]                   </td>
<td align="center">Replaced</td>
<td><a href="https://foicica.com/textadept/api.html#lexer.get_rule">get_rule</a>(id)</td>
</tr>
<tr>
<td>_RULES[id] = rule            </td>
<td align="center">Replaced</td>
<td><a href="https://foicica.com/textadept/api.html#lexer.modify_rule">modify_rule</a>(id, rule)</td>
</tr>
<tr>
<td>N/A                             </td>
<td align="center">Added   </td>
<td><a href="https://foicica.com/textadept/api.html#lexer.new">new()</a></td>
</tr>
<tr>
<td>word_match(list, wchars, icase)</td>
<td align="center">Changed </td>
<td><a href="https://foicica.com/textadept/api.html#lexer.word_match">word_match</a>(words, icase)</td>
</tr>
<tr>
<td><strong>ui</strong>                          </td>
<td align="center">        <br></td>
<td><br></td>
</tr>
<tr>
<td>set_theme                      </td>
<td align="center">Renamed </td>
<td><a href="https://foicica.com/textadept/api.html#buffer.set_theme">buffer.set_theme()</a></td>
</tr>
<tr>
<td><strong>textadept.editing</strong>           </td>
<td align="center">        <br></td>
<td><br></td>
</tr>
<tr>
<td>match_brace                    </td>
<td align="center">Replaced</td>
<td>N/A <em>(menu function)</em></td>
</tr>
<tr>
<td>N/A                             </td>
<td align="center">Added   </td>
<td><a href="https://foicica.com/textadept/api.html#textadept.editing.paste">paste()</a></td>
</tr>
<tr>
<td>N/A                             </td>
<td align="center">Added   </td>
<td><a href="https://foicica.com/textadept/api.html#textadept.editing.paste_reindents">paste_reindents</a></td>
</tr>
<tr>
<td><strong>textadept.session</strong>           </td>
<td align="center">        <br></td>
<td><br></td>
</tr>
<tr>
<td>default_session                </td>
<td align="center">Removed </td>
<td><br></td>
</tr>
</tbody>
</table>


<a name="Configuration.Changes"></a>
<h4>Configuration Changes</h4>

<p>Textadept 10 no longer uses a <em>~/.textadept/properties.lua</em> file. Instead, all
<code>buffer</code> settings are made in <em>~/.textadept/init.lua</em>, and apply to the first
and any subsequent buffers. (In Textadept 9, any <code>buffer</code> settings made in
<em>~/.textadept/init.lua</em> only applied to the first buffer, so a
<em>~/.textadept/properties.lua</em> was required in order to define <code>buffer</code> settings
that would affect subsequent buffers.)</p>

<p>Simply copying the contents of your <em>~/.textadept/properties.lua</em> into
<em>~/.textadept/init.lua</em> should be sufficient.</p>

<a name="Lexer.Changes"></a>
<h4>Lexer Changes</h4>

<p>Lexers are now written in a more object-oriented way. Legacy lexers are still
supported, but it is recommended that you <a href="https://foicica.com/textadept/api.html#lexer.Migrating.Legacy.Lexers">migrate them</a>.</p>

<a name="Key.Bindings.Changes"></a>
<h4>Key Bindings Changes</h4>

<p>The terminal version’s key sequence for <code>Ctrl+Space</code> is now <code>'c '</code> instead of
<code>'c@'</code>.</p>

<a name="Regex.Changes"></a>
<h4>Regex Changes</h4>

<p>Textadept now uses <a href="https://foicica.com/textadept/manual.html#Regular.Expressions">C++11’s ECMAScript regex syntax</a>
instead of <a href="https://github.com/laurikari/tre">TRE</a>.</p>

<a name="Mac.OSX.System.Requirements"></a>
<h4>Mac OSX System Requirements</h4>

<p>Textadept now requires Mac OSX 10.6 (Snow Leopard) at a minimum. The previous
minimum version was 10.5 (Leopard).</p>

<a name="LuaJIT.Changes"></a>
<h4>LuaJIT Changes</h4>

<p>The LuaJIT version of Textadept has been removed. Any LuaJIT-specific features
used in external modules will no longer function.</p>

</div><div><br></div><div>
--------------------- QUOTATION end



</div><div><br></div><div>I also found this here:</div><div><br></div><div>--------------------- QUOTATION start</div><div>source: <a href="https://foicica.com/textadept/api.html#lexer.Migrating.Legacy.Lexers">https://foicica.com/textadept/api.html#lexer.Migrating.Legacy.Lexers</a><br></div><div>
<h3>Migrating Legacy Lexers</h3>

<p>Legacy lexers are of the form:</p>

<pre><code>local l = require('lexer')
local token, word_match = l.token, l.word_match
local P, R, S = lpeg.P, lpeg.R, lpeg.S

local M = {_NAME = '?'}

[... token and pattern definitions ...]

M._rules = {
  {'rule', pattern},
  [...]
}

M._tokenstyles = {
  'token' = 'style',
  [...]
}

M._foldsymbols = {
  _patterns = {...},
  ['token'] = {['start'] = 1, ['end'] = -1},
  [...]
}

return M
</code></pre>

<p>While such legacy lexers will be handled just fine without any changes, it is
recommended that you migrate yours. The migration process is fairly
straightforward:</p>

<ol><li>Replace all instances of <code>l</code> with <code>lexer</code>, as it’s better practice and
results in less confusion.</li><li>Replace <code>local M = {_NAME = '?'}</code> with <code>local lex = lexer.new('?')</code>, where
<code>?</code> is the name of your legacy lexer. At the end of the lexer, change
<code>return M</code> to <code>return lex</code>.</li><li>Instead of defining rules towards the end of your lexer, define your rules
as you define your tokens and patterns using
<a href="https://foicica.com/textadept/api.html#lexer.add_rule"><code>lex:add_rule()</code></a>.</li><li>Similarly, any custom token names should have their styles immediately
defined using <a href="https://foicica.com/textadept/api.html#lexer.add_style"><code>lex:add_style()</code></a>.</li><li>Convert any table arguments passed to <a href="https://foicica.com/textadept/api.html#lexer.word_match"><code>lexer.word_match()</code></a> to a
space-separated string of words.</li><li>Replace any calls to <code>lexer.embed(M, child, ...)</code> and
<code>lexer.embed(parent, M, ...)</code> with
<a href="https://foicica.com/textadept/api.html#lexer.embed"><code>lex:embed</code></a><code>(child, ...)</code> and <code>parent:embed(lex, ...)</code>,
respectively.</li><li>Define fold points with simple calls to
<a href="https://foicica.com/textadept/api.html#lexer.add_fold_point"><code>lex:add_fold_point()</code></a>. No need to mess with Lua
patterns anymore.</li><li>Any legacy lexer options such as <code>M._FOLDBYINDENTATION</code>, <code>M._LEXBYLINE</code>,
<code>M._lexer</code>, etc. should be added as table options to <a href="https://foicica.com/textadept/api.html#lexer.new"><code>lexer.new()</code></a>.</li><li>Any external lexer rule fetching and/or modifications via <code>lexer._RULES</code>
should be changed to use <a href="https://foicica.com/textadept/api.html#lexer.get_rule"><code>lexer.get_rule()</code></a> and
<a href="https://foicica.com/textadept/api.html#lexer.modify_rule"><code>lexer.modify_rule()</code></a>.</li></ol>


<p>As an example, consider the following sample legacy lexer:</p>

<pre><code>local l = require('lexer')
local token, word_match = l.token, l.word_match
local P, R, S = lpeg.P, lpeg.R, lpeg.S

local M = {_NAME = 'legacy'}

local ws = token(l.WHITESPACE, l.space^1)
local comment = token(l.COMMENT, '#' * l.nonnewline^0)
local string = token(l.STRING, l.delimited_range('"'))
local number = token(l.NUMBER, l.float + l.integer)
local keyword = token(l.KEYWORD, word_match{'foo', 'bar', 'baz'})
local custom = token('custom', P('quux'))
local identifier = token(l.IDENTIFIER, l.word)
local operator = token(l.OPERATOR, S('+-*/%^=<>,.()[]{}'))

M._rules = {
  {'whitespace', ws},
  {'keyword', keyword},
  {'custom', custom},
  {'identifier', identifier},
  {'string', string},
  {'comment', comment},
  {'number', number},
  {'operator', operator}
}

M._tokenstyles = {
  'custom' = l.STYLE_KEYWORD..',bold'
}

M._foldsymbols = {
  _patterns = {'[{}]'},
  [l.OPERATOR] = {['{'] = 1, ['}'] = -1}
}

return M
</code></pre>

<p>Following the migration steps would yield:</p>

<pre><code>local lexer = require('lexer')
local token, word_match = lexer.token, lexer.word_match
local P, R, S = lpeg.P, lpeg.R, lpeg.S

local lex = lexer.new('legacy')

lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1))
lex:add_rule('keyword', token(lexer.KEYWORD, word_match[[foo bar baz]]))
lex:add_rule('custom', token('custom', P('quux')))
lex:add_style('custom', lexer.STYLE_KEYWORD..',bold')
lex:add_rule('identifier', token(lexer.IDENTIFIER, lexer.word))
lex:add_rule('string', token(lexer.STRING, lexer.delimited_range('"')))
lex:add_rule('comment', token(lexer.COMMENT, '#' * lexer.nonnewline^0))
lex:add_rule('number', token(lexer.NUMBER, lexer.float + lexer.integer))
lex:add_rule('operator', token(lexer.OPERATOR, S('+-*/%^=<>,.()[]{}')))

lex:add_fold_point(lexer.OPERATOR, '{', '}')

return lex
</code></pre>



<h3>Considerations</h3>



<h4>Performance</h4>

<p>There might be some slight overhead when initializing a lexer, but loading a
file from disk into Scintilla is usually more expensive. On modern computer
systems, I see no difference in speed between Lua lexers and Scintilla’s C++
ones. Optimize lexers for speed by re-arranging <code>lexer.add_rule()</code> calls so
that the most common rules match first. Do keep in mind that order matters
for similar rules.</p>

<p>In some cases, folding may be far more expensive than lexing, particularly
in lexers with a lot of potential fold points. If your lexer is exhibiting
signs of slowness, try disabling folding in your text editor first. If that
speeds things up, you can try reducing the number of fold points you added,
overriding <code>lexer.fold()</code> with your own implementation, or simply eliminating
folding support from your lexer.</p>



<h4>Limitations</h4>

<p>Embedded preprocessor languages like PHP cannot completely embed in their
parent languages in that the parent’s tokens do not support start and end
rules. This mostly goes unnoticed, but code like</p>

<pre><code><div id="<?php echo $id; ?>">
</code></pre>

<p>will not style correctly.</p>



<h4>Troubleshooting</h4>

<p>Errors in lexers can be tricky to debug. Lexers print Lua errors to
<code>io.stderr</code> and <code>_G.print()</code> statements to <code>io.stdout</code>. Running your editor
from a terminal is the easiest way to see errors as they occur.</p>



<h4>Risks</h4>

<p>Poorly written lexers have the ability to crash Scintilla (and thus its
containing application), so unsaved data might be lost. However, I have only
observed these crashes in early lexer development, when syntax errors or
pattern errors are present. Once the lexer actually starts styling text
(either correctly or incorrectly, it does not matter), I have not observed
any crashes.</p>
--------------------- QUOTATION end <br></div><div><br></div><div>
If you could use anything else, let me know. <br></div><div><br></div><div>Cheers, L.<br></div></div>