<table><tr><td style="">nibags created this revision.<br />Restricted Application added a project: Frameworks.<br />Restricted Application added a subscriber: kde-frameworks-devel.<br />nibags requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D13498">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p><strong>Changes:</strong></p>
<ul class="remarkup-list">
<li class="remarkup-list-item">Add missing keywords.</li>
<li class="remarkup-list-item">Remove obsolete types <tt style="background: #ebebeb; font-size: 13px;">int</tt> & <tt style="background: #ebebeb; font-size: 13px;">uint</tt> (these were depreciated by isize/usize): <a href="https://github.com/nox/rust-rfcs/blob/master/text/0544-rename-int-uint.md" class="remarkup-link" target="_blank" rel="noreferrer">https://github.com/nox/rust-rfcs/blob/master/text/0544-rename-int-uint.md</a></li>
<li class="remarkup-list-item">Remove type <tt style="background: #ebebeb; font-size: 13px;">float</tt>, because it isn't a valid data type: <a href="https://doc.rust-lang.org/std/index.html#primitives" class="remarkup-link" target="_blank" rel="noreferrer">https://doc.rust-lang.org/std/index.html#primitives</a></li>
<li class="remarkup-list-item">Fix identifiers (entity <tt style="background: #ebebeb; font-size: 13px;">rustIdent</tt>, marked with FIXME). The Rust identifier highlighting also detects Non-ASCII characters (in the Rust parser, an identifier is: <tt style="background: #ebebeb; font-size: 13px;">[a-zA-Z\x80-\xff_][a-zA-Z0-9\x80-\xff_]*</tt>).</li>
</ul>
<p><strong>NOTE:</strong> The POSIX character class <tt style="background: #ebebeb; font-size: 13px;">[[::ascii::]]</tt> is used. I don't know from which version of KTextEditor (or Qt) the use of POSIX character class is available, or if the use of this is a correct way. It works well, but if it isn't the correct way to do it, I can change it without any problem.</p>
<ul class="remarkup-list">
<li class="remarkup-list-item">Improved and fixes in the highlighting of numbers:<ul class="remarkup-list">
<li class="remarkup-list-item">Add missing integer suffixes (<tt style="background: #ebebeb; font-size: 13px;">i128</tt>, <tt style="background: #ebebeb; font-size: 13px;">u128</tt>, <tt style="background: #ebebeb; font-size: 13px;">isize</tt>, <tt style="background: #ebebeb; font-size: 13px;">usize</tt>).</li>
<li class="remarkup-list-item">Add word border (<tt style="background: #ebebeb; font-size: 13px;">\b</tt>) in numbers (Hex, Octal, Binary, Float, Decimal).</li>
<li class="remarkup-list-item">Improves float detection; floats with suffix 'f' are not allowed (only 'f32' & 'f64').</li>
<li class="remarkup-list-item">Highlight as 'Error' invalid numbers (Hexadecimal, Octal, Binary).</li>
</ul></li>
<li class="remarkup-list-item">Fix Raw Hashed Strings (<tt style="background: #ebebeb; font-size: 13px;">r##"text"##</tt>). Before, only a maximum of 2 hashes are detected (this is mentioned in a comment). Now any number of #'s are allowed.</li>
<li class="remarkup-list-item">Add byte characters & byte strings (<tt style="background: #ebebeb; font-size: 13px;">b'X'</tt>, <tt style="background: #ebebeb; font-size: 13px;">b"XX"</tt>, <tt style="background: #ebebeb; font-size: 13px;">br"XX"</tt>, <tt style="background: #ebebeb; font-size: 13px;">br#"XX"#</tt>).</li>
<li class="remarkup-list-item">Improves character detection and escape characters:<ul class="remarkup-list">
<li class="remarkup-list-item">Highlight as 'Error' invalid characters.</li>
<li class="remarkup-list-item">Fixes unicode escapes: only the <tt style="background: #ebebeb; font-size: 13px;">\u{NNNNNN}</tt> type is allowed (Not <tt style="background: #ebebeb; font-size: 13px;">\uNNNN</tt> or <tt style="background: #ebebeb; font-size: 13px;">\UNNNNNNNN</tt>).</li>
</ul></li>
</ul>
<p><strong>NOTES:</strong></p>
<ul class="remarkup-list">
<li class="remarkup-list-item">Binaries don't allow unicode escapes, so a difference is made between common and unicode escapes. The RegExpr rules used to detect escape characters are placed in the entities <tt style="background: #ebebeb; font-size: 13px;">&commonEscape</tt>; and <tt style="background: #ebebeb; font-size: 13px;">&unicodeEscape;</tt>.</li>
<li class="remarkup-list-item">Escapes supported in: <a href="https://doc.rust-lang.org/std/primitive.char.html#method.escape_default" class="remarkup-link" target="_blank" rel="noreferrer">https://doc.rust-lang.org/std/primitive.char.html#method.escape_default</a></li>
</ul>
<ul class="remarkup-list">
<li class="remarkup-list-item">The style of the itemData 'Scope' is changed from 'dsNormal' to 'dsProcessador', since the detection of identifiers was corrected.</li>
</ul>
<p>I also added a test file. Any inconvenience or if I need to correct something, do not hesitate to notify!</p>
<p>Sources:</p>
<ul class="remarkup-list">
<li class="remarkup-list-item">Rust documentation: <a href="https://doc.rust-lang.org/" class="remarkup-link" target="_blank" rel="noreferrer">https://doc.rust-lang.org/</a></li>
<li class="remarkup-list-item">Rust Playground: <a href="https://play.rust-lang.org/" class="remarkup-link" target="_blank" rel="noreferrer">https://play.rust-lang.org/</a></li>
<li class="remarkup-list-item">Rust in Vim: <a href="https://github.com/rust-lang/rust.vim/blob/master/syntax/rust.vim" class="remarkup-link" target="_blank" rel="noreferrer">https://github.com/rust-lang/rust.vim/blob/master/syntax/rust.vim</a></li>
<li class="remarkup-list-item">Rust in VSCode: <a href="https://github.com/Microsoft/vscode/blob/master/extensions/rust/syntaxes/rust.tmLanguage.json" class="remarkup-link" target="_blank" rel="noreferrer">https://github.com/Microsoft/vscode/blob/master/extensions/rust/syntaxes/rust.tmLanguage.json</a></li>
<li class="remarkup-list-item">Rust in gedit: <a href="https://github.com/GNOME/gtksourceview/blob/master/data/language-specs/rust.lang" class="remarkup-link" target="_blank" rel="noreferrer">https://github.com/GNOME/gtksourceview/blob/master/data/language-specs/rust.lang</a></li>
<li class="remarkup-list-item">Rust in ACE: <a href="https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/rust_highlight_rules.js" class="remarkup-link" target="_blank" rel="noreferrer">https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/rust_highlight_rules.js</a></li>
<li class="remarkup-list-item"><a href="https://github.com/rust-lang/kate-config" class="remarkup-link" target="_blank" rel="noreferrer">https://github.com/rust-lang/kate-config</a></li>
</ul></div></div><br /><div><strong>TEST PLAN</strong><div><p>I checked the modifications with the documentation and the compiler of Rust to avoid regressions.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R216 Syntax Highlighting</div></div></div><br /><div><strong>BRANCH</strong><div><div>improve-rust (branched from master)</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D13498">https://phabricator.kde.org/D13498</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>autotests/folding/test.rs.fold<br />
autotests/html/test.rs.html<br />
autotests/input/test.rs<br />
autotests/reference/test.rs.ref<br />
data/syntax/rust.xml</div></div></div><br /><div><strong>To: </strong>nibags<br /><strong>Cc: </strong>kde-frameworks-devel, michaelh, ngraham, bruns<br /></div>