D13498: Rust: Add keywords & bytes, fix identifiers, and other improvements/fixes

Nibaldo González noreply at phabricator.kde.org
Tue Jun 12 17:54:57 UTC 2018


nibags created this revision.
Restricted Application added a project: Frameworks.
Restricted Application added a subscriber: kde-frameworks-devel.
nibags requested review of this revision.

REVISION SUMMARY
  **Changes:**
  
  - Add missing keywords.
  - Remove obsolete types `int` & `uint` (these were depreciated by isize/usize): https://github.com/nox/rust-rfcs/blob/master/text/0544-rename-int-uint.md
  - Remove type `float`, because it isn't a valid data type: https://doc.rust-lang.org/std/index.html#primitives
  - Fix identifiers (entity `rustIdent`, marked with FIXME). The Rust identifier highlighting also detects Non-ASCII characters (in the Rust parser, an identifier is: `[a-zA-Z\x80-\xff_][a-zA-Z0-9\x80-\xff_]*`).
  
  **NOTE:** The POSIX character class `[[::ascii::]]` 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.
  
  - Improved and fixes in the highlighting of numbers:
    - Add missing integer suffixes (`i128`, `u128`, `isize`, `usize`).
    - Add word border (`\b`) in numbers (Hex, Octal, Binary, Float, Decimal).
    - Improves float detection; floats with suffix 'f' are not allowed (only 'f32' & 'f64').
    - Highlight as 'Error' invalid numbers (Hexadecimal, Octal, Binary).
  - Fix Raw Hashed Strings (`r##"text"##`). Before, only a maximum of 2 hashes are detected (this is mentioned in a comment). Now any number of #'s are allowed.
  - Add byte characters & byte strings (`b'X'`, `b"XX"`, `br"XX"`, `br#"XX"#`).
  - Improves character detection and escape characters:
    - Highlight as 'Error' invalid characters.
    - Fixes unicode escapes: only the `\u{NNNNNN}` type is allowed (Not `\uNNNN` or `\UNNNNNNNN`).
  
  **NOTES:**
  
  - 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 `&commonEscape`; and `&unicodeEscape;`.
  - Escapes supported in: https://doc.rust-lang.org/std/primitive.char.html#method.escape_default
  
  - The style of the itemData 'Scope' is changed from 'dsNormal' to 'dsProcessador', since the detection of identifiers was corrected.
  
  I also added a test file. Any inconvenience or if I need to correct something, do not hesitate to notify!
  
  Sources:
  
  - Rust documentation: https://doc.rust-lang.org/
  - Rust Playground: https://play.rust-lang.org/
  - Rust in Vim: https://github.com/rust-lang/rust.vim/blob/master/syntax/rust.vim
  - Rust in VSCode: https://github.com/Microsoft/vscode/blob/master/extensions/rust/syntaxes/rust.tmLanguage.json
  - Rust in gedit: https://github.com/GNOME/gtksourceview/blob/master/data/language-specs/rust.lang
  - Rust in ACE: https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/rust_highlight_rules.js
  - https://github.com/rust-lang/kate-config

TEST PLAN
  I checked the modifications with the documentation and the compiler of Rust to avoid regressions.

REPOSITORY
  R216 Syntax Highlighting

BRANCH
  improve-rust (branched from master)

REVISION DETAIL
  https://phabricator.kde.org/D13498

AFFECTED FILES
  autotests/folding/test.rs.fold
  autotests/html/test.rs.html
  autotests/input/test.rs
  autotests/reference/test.rs.ref
  data/syntax/rust.xml

To: nibags
Cc: kde-frameworks-devel, michaelh, ngraham, bruns
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20180612/ae13cd0d/attachment-0001.html>


More information about the Kde-frameworks-devel mailing list