The official Sublime Text 3 package for the Rust Programming Language

Related tags

IDEs rust-enhanced
Overview

Rust Enhanced

About

This is a Sublime Text 3 package which supports Rust starting with version 1.0, it makes no attempt at supporting earlier incompatible versions.

This package used to be called 'Rust', but as of version 3, Sublime now comes with Rust built-in. The built-in version on Sublime is actually just a snapshot of this package with some fixes from quite some time ago. This package is still active and will continue to update and release, so if you want up to date features, and extra tools (such as syntax checking or building) we recommend using this package. Installing Rust Enhanced will automatically disable the built-in "Rust" package. If you receive any error, verify that "Rust Enhanced" is enabled, and that the current view's syntax is set to "Rust Enhanced". There is currently no plan to push upstream changes back into the Sublime Core Packages repo, and extra features will stay here.

For syntax highlighting for Cargo files. Its recommended installing this with the TOML package.

Running Tests with Rust Enhanced Highlighting errors and warnings with Rust Enhanced

Installation

Install the Package Control package if you haven't got it yet. Package Control is the best way to install packages for Sublime Text. See http://wbond.net/sublime_packages/package_control/installation for instructions.

Open the palette (control+shift+P or command+shift+P) in Sublime Text and select Package Control: Install Package and then select Rust Enhanced from the list. That's it. If you can't see Rust Enhanced its most likely because you're using Sublime Text 2.

Features

Go To Definition

Cargo Build

Rust Enhanced has a custom build system tailored for running Cargo. It will display errors and warnings in line using Sublime's phantoms (see Messages for settings to control how messages are displayed). It also supports a variety of configuration options to control how Cargo is run.

testingrust

See the build docs for more information.

Cargo tests with highlighting

Thanks to urschrei we have Highlighting for:

  • passed test
  • failed test
  • failed test source line (clickable)
  • total number of passed tests
  • total number of failed tests > 0
  • total number of ignored tests > 0
  • total number of measured tests > 0

Example:

highlight_rust_test

Syntax Checking

Rust Enhanced will automatically perform syntax checking each time you save a file. Errors and warnings are displayed in line the same way as the build system. This relies on Cargo and Rust (>= 1.8.0) being installed and on your system path. Plus Sublime Text >= 3118.

Settings for controlling the on-save syntax checking:

Setting Default Description
rust_syntax_checking true Enable the on-save syntax checking.
rust_syntax_checking_method "check" The method used for checking your code (see below).
rust_syntax_checking_include_tests true Enable checking of test code within #[cfg(test)] sections.
rust_syntax_hide_warnings false Don't show warnings when syntax checking

The available checking methods are:

Method Description
check Uses cargo check (requires at least Rust 1.16).
clippy Uses cargo clippy. This requires Clippy to be installed. This also may be a little slower since it must check every target in your package.

This will use the same configuration options as the "Check" and "Clippy" build variants (for example, extra environment variables, or checking with different features). See the build docs for more information.

Projects with multiple build targets are supported too (--lib, --bin, --example, etc.). If a cargo project has several build targets, it will attempt to automatically detect the correct target. In some rare cases, you may need to manually specify which target a file belongs to. This can be done by adding a "projects" setting in Rust.sublime-settings with the following format:

    "projects": {
       // One entry per project. Keys are project names.
       "my_cool_stuff": {
           // Path to the project root dir without trailing /src.
           "root": "/path/to/my/cool/stuff/project",

           // Targets will be used to replace {target} part in the command.
           // If no one target matches an, empty string will be used.
           "targets": {
               "bin/foo.rs": "--bin foo",  // format is "source_code_filename -> target_name"
               "bin/bar.rs": "--bin bar",
               "_default": "--lib"         // or "--bin main"
           }
       }
   }

Language Servers

Language servers can provide Rust-specific diagnostics, helpers, and navigation. There are two language server implementations for Rust:

RLS is being replaced by rust-analyzer, but may provide better support at this time depending on your needs.

To use one of the language servers, you need to install the Sublime LSP plugin. With both the plugin and one of the above servers installed, you should be able to follow the LSP docs for how to configure the server. Generally this involves running either the LSP: Enable Language Server Globally or LSP: Enable Language Server in Project and then selecting either rls or rust-analyzer. Depending on the size of your project, it may take some time for it to process and index.

Note that as well as error checking, code-completion, and renaming, RLS can run rustfmt on your code: right-click, and select LSP > Format Document or Format Selection in a Rust source file.

Context Menu

The Sublime context menu includes a Rust entry with a variety of commands. See context menu docs for more information.

Settings

To customize the settings, use the command from the Sublime menu:

Preferences > Package Settings > Rust Enhanced > Settings - User

Additionally, you can customize settings per-project by adding settings to your .sublime-project file under the "settings" key.

Development

Development is quite simple, just check out this project to your Sublime Text 3 packages folder, and switch to using this one. Syntax definitions are defined in the RustEnhanced.sublime-syntax file.

Credits

Created 2012 by Daniel Patterson, as a near complete from scratch rewrite of a package by Felix Martini.

This project is currently maintained by Jason Williams

License

This package is licensed under the MIT License.

Comments
  • Syntax changes with aim of improving consitency

    Syntax changes with aim of improving consitency

    #113 raises a good point about consitency so I've made some changes but would like some feed back. (don't merge this without discussion please)

    if @boscop or @petrochenkov would like to give comment that would be appreciated

    currently function calls aren't highlighted, i got stuck trying to make generic function calls match the non generic ones so gave up and went with white for all functions calls for consitency

    opened by dten 29
  • Sublime Text opens empty non-existent file when error originates in macro

    Sublime Text opens empty non-existent file when error originates in macro

    Whenever an error is caused by a derive macro, sublime opens a non-existent file with the name of the macro when pressing F4 to jump to the error: E.g.

    error[E0412]: type name `Foo` is undefined or not in scope
     --> <proc-macro source code>:1:4261
    

    When I press F4 it opens a new empty file named . This is undesirable. Btw, in this case the error was caused by using #[derive(Serialize)] on an enum with a member that uses an undefined type:

    #[derive(Serialize, Deserialize)]
    pub enum Bar {
    	Bla(Foo),
    }
    
    opened by Boscop 24
  • Add highlighting and jumping to test failures for test output

    Add highlighting and jumping to test failures for test output

    This PR adds

    cargo test output highlighting:

    • note:
    • test result:
    • a passed test
    • a failed test
    • failed test source line (this is clickable, jumps to source)
    • summary line, total number of passed tests
    • summary line, total number of failed tests if > 0
    • summary line, total number of ignored tests if > 0
    • summary line, total number of measured tests if > 0

    New build commands:

    • cargo build --release
    • cargo clippy

    Bug fixes:

    • Don't treat <std macros> as a file name.

    My choice of entity to trigger various highlights is probably questionable, but they're a complete 🚮🔥 anyway. @dten what do you think?

    opened by urschrei 23
  •  Update message handling for Rust 1.24.

    Update message handling for Rust 1.24.

    Rust 1.24 introduces some breaking changes, in particular:

    • All paths are now relative to the workspace root instead of the package root.
    • Columns reported in macros are now 1-based (affects test output).

    Fixes #234.

    opened by ehuss 21
  • Experimental support for the new error format

    Experimental support for the new error format

    This is mostly a result of me playing around with the new json formatted error messages but I decided to PR it to see what was thought of it.

    It requires the latest dev build of Sublime Text 3 so I don't really expect this to be pulled as it stands.

    This uses the phantom system to display error messages and hints inline with the code, i'm not sure how much I like this system but it seemed to be the nicest way I could think of displaying them.

    I don't really do python so i'm sorry about the code

    opened by Thinkofname 18
  • New Cargo build system.

    New Cargo build system.

    I wanted to share a WIP of a new, enhanced build system for Cargo. I was wondering:

    1. Would you would be willing to merge something like this?
    2. Test it out and let me know what you think (any issues, ideas for improvements, etc.)

    The main improvements are:

    • Shows inline phantoms for errors/warnings when building.
    • Properly handles cancelling/stopping a build.
    • Pulls in the user's shell environment to make it less likely to have problems.
    • Supports custom environment variables.
    • Interacts more nicely with the on-save syntax checking.
    • Allows you to configure settings for builds (see docs/build.md).
    • Command to assist configuring custom build variants.
    • On-save syntax checking supports different methods (rustc no-trans, cargo check, clippy)

    This also closes a few issues: #182, #170, #162, #154, #146, #109

    It should be fully functional in its current state, but I still have a long todo/improvement list. Here's a copy in case you are curious:

    • [x] Support custom build variants (passing in any and all settings).
      • [x] Also include interactive command to configure a new variant.
      • [x] Include "environment", and "path"
      • [x] Any custom arguments.
      • [x] working_dir
    • [x] Set "default" project path/package.
    • [x] Cargo "Automatic"
    • [x] Add "--features" support.
    • [x] cargo check
    • [x] test: Message-order: Next/Prev testing Test with a variety of message types (to ensure is_main is good) Test with already open files and files that need to be opened.
    • [x] Test without cargo manifest
    • [x] Test without sublime project
    • ~~[ ] Run with multiple executables displays this error: error: cargo run requires that a project only have one executable; use the --bin option to specify which one to run Should we detect this, and bring a popup to select a target?~~ Deferred
    • [ ] Clippy: Should it automatically use nightly toolchain?
      • [ ] Same with Bench?
    • [x] Make links in clippy output clickable.
    • [x] Deal with duplicate messages generated by clippy (filter duplicate messages in general)
    • [x] Make clippy an option for on-save checking.
    • [x] Should the cargo settings be used for SyntaxCheck somehow?
    • ~~[ ] I think the build-language could be improved (coloring file filenames, numbers, etc.)~~ Deferred
    • ~~[ ] Something similar to Anaconda Show Errors (popup with list of errors)~~ Deferred
    • ~~[ ] Other cargo test options?: --doc --no-run --no-fail-fast~~ Deferred
    • [x] Is term "Target" too confusing? Filter or Kind? Internally Cargo uses various terms (CompilerFilter, Kind, Target)
    • [x] Update README
    • [x] Fix called with multiple buffers (views) into same file. (Terminates, but otherwise runs correctly. This is something that really needs to be fixed in Sublime.)
    • [x] Check setting "show_errors_inline"? In case someone doesn't like the phantom style.
    • [x] Possibly consolidate the configuration commands into a single command?
    • [x] Add command to configure environment variables (in particular, make it easy to add RUST_BACKTRACE=1).

    One last thing, this replaces the "rustc" build variants. I'm not sure what the use case is for those, and whether or not "cargo script" is a sufficient replacement.

    opened by ehuss 17
  • syntax checking fails (silently) when cargo is not in default path

    syntax checking fails (silently) when cargo is not in default path

    SyntaxCheckPlugin was not able to find cargo, but doesn't report not being able to find it, because the actual error message is /bin/sh: cargo: command not found, whereas the error checker looks for "error".

    I installed Rust through rustup, so cargo is in $HOME/.cargo/bin. But the path of SyntaxCheckPlugin is the default: /usr/bin:/bin:/usr/sbin:/sbin. #92 did not address this plugin.

    opened by conundrumer 15
  • first stab at adding syntax checking on save similar to GoSublime

    first stab at adding syntax checking on save similar to GoSublime

    HI guys I really liked the syntax checking on save within GoSublime. So i had a go at trying it for Rust.

    Under the hood all this plugin does is call "cargo run" in the same directory the file is in, if there's any errors it will try and parse out the first line number, then return that back to sublime.

    It would be nice if some sublime users could take a look at my PR and tell me what they think needs adding or their thoughts.

    here is a demo Thanks Jason

    testingpr

    opened by jasonwilliams 14
  • Syntax: Rewrite macro_rules

    Syntax: Rewrite macro_rules

    macro_rules failed in a lot of cases, this reworks it to fully support:

    • Complete matcher syntax.
    • Better bracket balancing support.
    • Add lifetime designator (1.28).
    • More resilient to odd syntax within the transcriber. The content doesn't have to be Rust syntax, so it can sometimes get confused. Add a few escapes so it at least doesn't barf.
    • At-most-once kleene operator (2018).

    Closes #311

    image
    opened by ehuss 13
  • add deconstructor in function argument

    add deconstructor in function argument

    This matches things like this now:

    struct Thing(u8, u8);
    
    fn name(Thing(a, b): Thing) {
        do_something_with(a, b);
    }
    

    I don't know if this is the right way to solve it. Some more tests might also be in order

    opened by TheIronBorn 12
  • "Build" calls rustc rather than cargo

    Sublime Text Version

    Sublime Text 3 (Build 3126)

    Rust Enhanced Version

    1.1.1

    Operating system

    OS Name macOS Version 10.12.3

    Description

    Pressing Cmd+Shift+P and selecting "Build With: RustEnhanced" calls rustc, rather than cargo.

    I'm getting the following output in the bottom pane:

    error[E0463]: can't find crate for `rustc_serialize`
     --> /net/sujin/home/ubuntu/src/rust-playground/src/ohai.rs:1:1
      |
    1 | extern crate rustc_serialize;
      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
    
    error: aborting due to previous error
    
    [Finished in 0.4s with exit code 101]
    [shell_cmd: rustc /net/sujin/home/ubuntu/src/rust-playground/src/ohai.rs]
    [dir: /net/sujin/home/ubuntu/src/rust-playground/src]
    [path: /Users/primary/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/primary/bin]
    

    Note that the shell_cmd says rustc. As a result of using rustc, it fails to find the external crates we are using.

    I believe it should call cargo instead. The cargo binary is in the search path at /Users/primary/.cargo/bin/cargo, so I'm not sure why it's not working.

    If I select Tools -> Build System -> RustEnhanced, and then Tools -> Build, the same thing happens.

    If I select Tools -> Build System -> Rust, and then Tools -> Build, the same thing happens.

    If I select Tools -> Build System -> Automatic, and then Tools -> Build, it does call cargo, but it doesn't show build errors in the source code, so I'm having to hunt for line numbers. (I'm not sure if that's calling the built-in Rust or the RustEnhanced plugin.)

    opened by joliss 12
  • Path-qualified macros do not have any macro-related scopes

    Path-qualified macros do not have any macro-related scopes

    Sublime Text Version### Sublime Text Version

    Sublime Text 4 (Build 4142)

    Rust Enhanced Version

    v2.25.0

    Operating system

    Ubuntu 22.10, Gnome 43.0

    Expected behavior

    Macros should have a macro scope applied even if they're fully qualified.

    Actual behavior

    fn main() {
        std::todo!();
    }
    

    Scopes:

    source.rust
    meta.function.rust
    meta.block.rust
    

    Compare to the bare macro:

    fn main() {
        todo!();
    }
    
    source.rust
    meta.function.rust
    meta.block.rust
    support.macro.rust
    

    Steps to reproduce

    See code above.

    opened by detly 0
  • Field attributes do not have any attribute-related scopes

    Field attributes do not have any attribute-related scopes

    Sublime Text Version

    Sublime Text 4 (Build 4142)

    Rust Enhanced Version

    v2.25.0

    Operating system

    Ubuntu 22.10, Gnome 43.0

    Expected behavior

    Attributes on fields within a struct should have a scope applied to mark them as such eg.

    Actual behavior

    struct Magic(#[more] bool, #[more(magic)] usize);
    

    Neither attribute has any scope applied to indicate that it's an attribute. For example, the first attribute has scopes

    source.rust
    meta.struct.rust
    meta.struct.rust
    meta.group.rust
    

    Steps to reproduce

    See code above.

    opened by detly 0
  • Enum variants with only a single uppercase letter and digits have

    Enum variants with only a single uppercase letter and digits have "constant" scope applied

    Sublime Text Version

    Sublime Text 4 (Build 4142)

    Rust Enhanced Version

    v2.25.0

    Operating system

    Ubuntu 22.10, Gnome 43.0

    Expected behavior

    enum HayesCommand {
        /// Commands per the V.250 aka V.25TER AT standard, plus the ETSI TS 127 007
        /// standard.
        V250(v250::Command),
        /// Extensions to the above that we support.
        Extension(extension::Command),
    }
    

    Both V250 and Extension should have the same scopes applied, since there is no syntactical difference between them ie. they are both variants of an enum. Neither trigger a compiler or clippy warning.

    (I'm not particularly tied to V250 as a name, nor do I mind the inconsistent highlighting for this single example. I just noticed it because V250 is the first abbreviation of "V.250" I thought of that was syntactically allowed, and here we are.)

    Actual behavior

    The text V250 has the following scopes:

    source.rust
    meta.block.rust
    meta.enum.rust
    constant.other.rust 👈 
    

    Extension has the following scopes:

    source.rust
    meta.block.rust
    meta.enum.rust
    storage.type.source.rust 👈
    

    Many syntax highlighting schemes, including the default Monokai, highlight these differently:

    Screenshot from 2022-12-05 00-36-27

    Steps to reproduce

    Code above.

    opened by detly 0
  • Rust enhanced freezes sublime text on save

    Rust enhanced freezes sublime text on save

    To fix it, I did:

    {
    	"rust_syntax_checking": false
    }
    

    Sublime Text Version

    Sublime Text 4 (Build 4126)

    Rust Enhanced Version

    v2.25.0

    Operating system

    Linux x64_64 Kernel 5.19.17_1

    Expected behavior

    File saves, continue editing

    Actual behavior

    Computer is unresponsive.

    Steps to reproduce

    1. Write rust code.with question mark operator.
    2. Delete or un-delete question mark operator
    opened by LAC-Tech 0
  • Possible to use non-Rust syntax highlighter in a macro (like a nested syntax)?

    Possible to use non-Rust syntax highlighter in a macro (like a nested syntax)?

    upd: ok, so this updated syntax works, but for the user to be able to update your default one (instead of copy&pasting everything and losing the ability to track your changes) you'd need to update it:

    • add a tag/branch bumping the min version of ST to 4075 (and update the package manifest to allow installing the later package on the later ST)
    • explicitly opt into version: 2 src

    extends 4075 A string of a base syntax this syntax should inherit from. The base syntax must be specified using its package path, e.g. Packages/JavaScript/JavaScript.sublime-syntax. See Inheritance for an overview of syntax inheritance.

    • split the huge statements into subgroups and then the user would be able to just copy&paste your list of sub-statements (without the code that defines them, just the names), insert his override one line above yours, and then add the two new block-lua, block-lua-body block definitions in his syntax file.

    Also, if you know how to remove the need for introducing a custom syntax signifying that the } ends the lua block and not any } block inside lua (in the file above the syntax is escape: '(\})(/\*\s*lua\s*\*/)'), please share this bright idea!

    Sublime Text Version

    Sublime Text 4 (Build 4138)

    Rust Enhanced Version

    2.25.0

    Operating system

    OS Name macOS Catalina Version 10.15.7

    Expected behavior

    Some proc macros should have all text inside them marked by a different (non-Rust) syntax similar to how nested syntaxes work, for example, in Markdown code blocks

    Given that the macro names are arbitrary, but the .sublime-syntax are nested, the could the solution be a working example of a user RustEnhanced.sublime-syntax file with just a single example macro name that would have the Rust syntax completely popped/replaced by some other syntax. Then the user would just need to change the macro name and the replacing syntax

    Actual behavior

    Two issues (see the code snippet below)

    • do is highlighted in red as a reserved word even though it's inside a macro, so it's not Rust
    • the syntax applied is still that of Rust source.rust meta.function.rust meta.block.rust meta.group.rust meta.block.rust instead of source.lua

    Steps to reproduce

    1. Add this snippet to a Rust file
    fn lua_plugin_within_rust(lua:&Lua,_:()) -> LuaResult<()> {
      lua.load(chunk! { // ←↓ can this code be recognized as a nested Lua syntax?
        while (1 < 2) do // ← "do" this is highlighted in red as a reserved word
        end
      }
      Ok(())
    }
    

    References

    https://github.com/rust-lang/rust-enhanced/issues/284 mentioned the macro call fix, which gave me the idea for this issue

    1. Macro calls should not break highlighting on unusual tokens
    opened by eugenesvk 0
  • Control codes displayed in the output

    Control codes displayed in the output

    Sublime Text Version

    Sublime Text 4 (Build 4126)

    Rust Enhanced Version

    2.25.0

    Operating system

    OS Name macOS Monterey Version 12.5

    Expected behavior

    Automatic build output should be equivalent to the output when running manually in a terminal:

    $ cargo run --example mesh2d                                                                                                                                                                                                                                                                        
        Finished dev [unoptimized + debuginfo] target(s) in 0.12s
         Running `target/debug/examples/mesh2d`
    2022-08-06T08:31:27.264081Z  INFO bevy_render::renderer: AdapterInfo { name: "Apple M1", vendor: 0, device: 0, device_type: DiscreteGpu, backend: Metal }
    

    Actual behavior

    Codes for control symbols are visible:

    [Running: cargo run --example mesh2d --message-format=json]
       Compiling bevy v0.7.0 (/Users/bardt/Projects/rust/bevy)
        Finished dev [unoptimized + debuginfo] target(s) in 2.98s
         Running `target/debug/examples/mesh2d`
    2022-08-06T08:26:34.586134Z  INFO bevy_render::renderer: AdapterInfo { name: "Apple M1", vendor: 0, device: 0, device_type: DiscreteGpu, backend: Metal }
    

    (In the output, I see <0x1b> instead of )

    I suppose the difference is in the --message-format=json flag

    Steps to reproduce

    1. Clone Bevy repo https://github.com/bevyengine/bevy.git, check out v0.7.0 tag
    2. Open bevy/examples/2d/mesh2d.rs file
    3. Run Build With: RustEnhanced - Automatic command, watch the output
    4. Run cargo run --example mesh2d in a terminal, compare the outcome
    opened by bardt 0
Releases(v2.25.0)
  • v2.25.0(Mar 19, 2022)

    • Automatic target detection falls back to "everything" (allowing on-save-check of build.rs files) #483
    • Syntax highlighting: Allow space between function call and parenthesis #480
    Source code(tar.gz)
    Source code(zip)
  • v2.24.0(May 21, 2021)

  • v2.23.0(Dec 29, 2020)

    • Some improvements around message display #432
    • Syntax:
      • Snyced the definition with the sublimehq Rust definition #431
      • Added support for const generics #451
      • Changed scope support.function to variable.function to match scope naming guidelines #452
    Source code(tar.gz)
    Source code(zip)
  • v2.22.0(Apr 1, 2020)

    • Add union names to Goto-symbol index. #416
    • Syntax: Recover on bad enum syntax. #419
    • Fix type of file_extensions property in Cargo syntax YAML #429
    Source code(tar.gz)
    Source code(zip)
  • v2.21.0(Sep 30, 2019)

    • Add unreachable snippet #389
    • Fix bug in how raw string auto-complete worked. #396
    • Build system and messages:
      • Clippy no longer requires nightly. #395
      • Allow target detection with Clippy. #412
      • Next/prev jump to end of span. #397
    • Syntax:
      • Better error recovery in generics. #410
      • Add bitwise and/or assignment tokens. #411
    Source code(tar.gz)
    Source code(zip)
  • v2.20.0(May 29, 2019)

    • Explicitly set the "exit" point on some snippets. #381
    • Add syntax highlighting for async/await/try keyword #378
    • Remove print/eprint snippet. #382
    Source code(tar.gz)
    Source code(zip)
  • v2.19.0(Feb 5, 2019)

    • Custom status bar text #355
    • Add dbg, debug, trace, info snippet #360
    • On-save check: only call cargo metadata once #365
    • Syntax:
      • literal macro fragment matcher #367
      • abort on invalid struct #369
      • const functions #361
      • fix break and continue #364
      • fix lifetime on self param #366
    Source code(tar.gz)
    Source code(zip)
  • v2.18.0(Sep 23, 2018)

    • Syntax:
      • Support irrefutable patterns in closure and function params #349
      • Fix raw pointers #335
      • Index const and static symbols (for Goto-Symbol) #335
      • Support raw identifiers (new rust 1.30) #338
      • Fix tuple access so it doesn't show up as a float. #348
      • Support vis macro designator (new rust 1.30) #347
    • On-save check:
      • Show result in window status when done. #345
      • Fix on-save checking being triggered multiple times with "Save All" and the build command when the buffer is unsaved. #344
    • Diagnostic messages: #344
      • Support inline rustdoc messages with cargo doc (requires rust 1.30) #334
      • Add rust_message_status_bar option to display the message under the cursor in the window status bar.
      • Add rust_message_popup command to manually show a popup under the cursor.
      • Add underline styles to rust_region_style.
      • Fix various issues with multiple views into the same file.
      • Fix Next/Prev when a message is hidden (such as a completed suggestion).
      • Fix hitting Esc in the middle of the build to hide/dismiss future messages.
    • Snippets: honor indentation settings #342
    Source code(tar.gz)
    Source code(zip)
  • v2.17.0(Sep 19, 2018)

    • Add debug logging feature. #291 Run Rust: Open Debug Log command to open the log, used by on-save check and build.
    • Add eprint and eprintln snippets. #283
    • Some minor word-wrapping fixes. #315
    • Syntax: Some where improvements. #303
    • Syntax: allow new lines and comments in lambda parameters #307
    • Syntax: Support dyn traits. #308
    • Syntax: Anonymous lifetimes #319
    • Syntax: Support trait definition bounds and type parameters. #320
    • Syntax: Support attributes in type parameters. #321
    • Syntax: Unreserve reserved keywords. #322
    • Syntax: Rework enums #323
    • Syntax: Support comments near struct/union. #324
    • Syntax: Support *const raw pointer in (some) type positions. #325
    • Syntax: Rewrite macro_rules #326
    • Syntax: Support never type in type params. #327
    • Syntax: Support HRTB in all type positions. #328
    • Syntax: Fix unsafe prefix for function types. #329
    • Syntax: Fix extern in fn type. #330
    Source code(tar.gz)
    Source code(zip)
  • v2.16.0(Aug 31, 2018)

    Syntax: Improve visibility modifier Support messages with multiple regions and multiple suggestions. Syntax: Some where improvements Syntax: stdsimd

    Source code(tar.gz)
    Source code(zip)
  • v2.17.0-prerelease(Aug 31, 2018)

    • Add debug logging feature. #291 Run Rust: Open Debug Log command to open the log, used by on-save check and build.
    • Add eprint and eprintln snippets. #283
    • Some minor word-wrapping fixes. #315
    • Syntax: Some where improvements. #303
    • Syntax: allow new lines and comments in lambda parameters #307
    • Syntax: Support dyn traits. #308
    • Syntax: Anonymous lifetimes #319
    • Syntax: Support trait definition bounds and type parameters. #320
    • Syntax: Support attributes in type parameters. #321
    • Syntax: Unreserve reserved keywords. #322
    • Syntax: Rework enums #323
    • Syntax: Support comments near struct/union. #324
    • Syntax: Support *const raw pointer in (some) type positions. #325
    • Syntax: Rewrite macro_rules #326
    • Syntax: Support never type in type params. #327
    • Syntax: Support HRTB in all type positions. #328
    • Syntax: Fix unsafe prefix for function types. #329
    • Syntax: Fix extern in fn type. #330
    Source code(tar.gz)
    Source code(zip)
  • v2.16.0-prerelease(Jul 30, 2018)

    Syntax: Improve visibility modifier Support messages with multiple regions and multiple suggestions. Syntax: Some where improvements Syntax: stdsimd

    Source code(tar.gz)
    Source code(zip)
  • v2.15.0(Jul 16, 2018)

    • fn snippet: only display arrow if return type is present
    • Syntax: Fix mut in impl
    • Syntax: Support break/continue labels.
    • Add ".rust" to semicolon scope.
    • Syntax: Allow comments in macro definitions
    Source code(tar.gz)
    Source code(zip)
  • v2.15.0-prerelease(Jul 12, 2018)

    • fn snippet: only display arrow if return type is present
    • Syntax: Fix mut in impl
    • Syntax: Support break/continue labels.
    • Add ".rust" to semicolon scope.
    • Syntax: Allow comments in macro definitions
    Source code(tar.gz)
    Source code(zip)
  • v2.14.0(Jul 10, 2018)

    • Remove semicolon from the fn snippet
    • add a snippet to create a tests module
    • add opt-out trait impl syntax
    • Support next/prev with multiple views
    • Hide, don't delete messages when dismissed.
    • Syntax: More stringent escape handling.
      • Allow _ in unicode escapes.
      • Reject byte/char literals with too many chars.
      • Reject non-ascii in byte literals.
      • Reject ascii escape with >0x7f.
      • Reject bad escape sequences.
    Source code(tar.gz)
    Source code(zip)
  • v2.14.0-prerelease(Jul 9, 2018)

    • Remove semicolon from the fn snippet
    • add a snippet to create a tests module
    • add opt-out trait impl syntax
    • Support next/prev with multiple views
    • Hide, don't delete messages when dismissed.
    • Syntax: More stringent escape handling.
      • Allow _ in unicode escapes.
      • Reject byte/char literals with too many chars.
      • Reject non-ascii in byte literals.
      • Reject ascii escape with >0x7f.
      • Reject bad escape sequences.
    Source code(tar.gz)
    Source code(zip)
  • v2.13.0(Jul 9, 2018)

    • add 'Updating/Downloading/Documenting/Blocking' to cargo build syntax - https://github.com/rust-lang/rust-enhanced/pull/262/files
    • Auto match raw strings. - https://github.com/rust-lang/rust-enhanced/pull/265
    • bug fix - https://github.com/rust-lang/rust-enhanced/pull/273
    • Draw regions immediately while compiling. - https://github.com/rust-lang/rust-enhanced/pull/288
    • Improve message word wrapping to make messages easier to read - https://github.com/rust-lang/rust-enhanced/pull/289#pullrequestreview-131393761
    • Improved initial installation experience - https://github.com/rust-lang/rust-enhanced/pull/292#pullrequestreview-131393790
    • Improve on-save check status message - https://github.com/rust-lang/rust-enhanced/pull/293#pullrequestreview-131393817
    Source code(tar.gz)
    Source code(zip)
  • v2.13.0-prerelease(Jun 23, 2018)

    • add 'Updating/Downloading/Documenting/Blocking' to cargo build syntax - https://github.com/rust-lang/rust-enhanced/pull/262/files
    • Auto match raw strings. - https://github.com/rust-lang/rust-enhanced/pull/265
    • bug fix - https://github.com/rust-lang/rust-enhanced/pull/273
    • Draw regions immediately while compiling. - https://github.com/rust-lang/rust-enhanced/pull/288
    • Improve message word wrapping to make messages easier to read - https://github.com/rust-lang/rust-enhanced/pull/289#pullrequestreview-131393761
    • Improved initial installation experience - https://github.com/rust-lang/rust-enhanced/pull/292#pullrequestreview-131393790
    • Improve on-save check status message - https://github.com/rust-lang/rust-enhanced/pull/293#pullrequestreview-131393817
    Source code(tar.gz)
    Source code(zip)
  • v2.12.0(Jun 5, 2018)

    Remove support for -Z no-trans on-save checking (fixes #281). Update some tests for latest nightly. Pin nightly and clippy to a known-good version for Travis. This should ensure that minor issues don't cause unrelated PRs to fail. This also configures the beta/nightly jobs to allow failure. I have a cron job on my own repository set up so I will be notified whenever things break, and I'll send PRs when necessary.

    Source code(tar.gz)
    Source code(zip)
  • v2.11.0(May 5, 2018)

    compiler suggestions and message themes https://github.com/rust-lang/rust-enhanced/pull/267

    Union has been added to the Syntax https://github.com/rust-lang/rust-enhanced/pull/260

    more formatting macros to syntax checking https://github.com/rust-lang/rust-enhanced/pull/258

    Source code(tar.gz)
    Source code(zip)
  • v2.11.0-prerelease(Apr 22, 2018)

    compiler suggestions and message themes https://github.com/rust-lang/rust-enhanced/pull/267

    Union has been added to the Syntax https://github.com/rust-lang/rust-enhanced/pull/260

    more formatting macros to syntax checking https://github.com/rust-lang/rust-enhanced/pull/258

    Source code(tar.gz)
    Source code(zip)
  • v2.10.0(Mar 2, 2018)

    switch build syntax to yaml, tests added Add support for checking tests in Rust 1.23 Readme Updates Fix example RUST_BACKTRACE environment variable template Highlight let, static, const as storage.type.rust

    Source code(tar.gz)
    Source code(zip)
  • v2.9.0-prerelease(Feb 10, 2018)

  • v2.8.0(Jan 28, 2018)

  • v2.7.0(Jan 27, 2018)

    Readme updates Update message handling for Rust 1.24

    • All paths are now relative to the workspace root instead of the package root.
    • Columns reported in macros are now 1-based (affects test output).
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(Jan 6, 2018)

    Support new suggestion JSON format introduced in 1.23/1.24. Fix some duplicate messages being displayed. Update tests for minor wording changes in some diagnostics. Update tests to handle debug files being produced in 1.21. Support multi-span messages added in 1.21. Autocomplete support for path separators (::)

    As always excellent work @ehus

    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Dec 19, 2017)

  • v2.4.0(Dec 4, 2017)

    • documentation update
    • Added context menu https://github.com/rust-lang/rust-enhanced/pull/222
    • Add the unimplemented macro snippet https://github.com/rust-lang/rust-enhanced/pull/225
    • replace after-operator with check for type declaration syntax https://github.com/rust-lang/rust-enhanced/pull/221
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Oct 29, 2017)

    Fix and enhance next/prev message jumping

    Sort messages so that errors show up before warnings (fixes #199). Fix next/prev when show_errors_inline is false (fixes #206). Fix on-save checking when show_errors_inline is false. Scroll the build output panel on next/prev message. Next/prev now cycles through test errors. Fix Next/Prev overriding find-in-files next/prev (fixes #209).

    Add Escape keybinding to dismiss inline messages. fixes #200

    highlight where in struct defn properly fixes #190

    match whole operators to support ligatures fixes #216

    Additional Snippets

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Sep 23, 2017)

    • performance improvement to integer checking
    • impl trait / yield syntax
    • Use Sublime 3's new edit_settings command to edit Rust Enhanced settings.
    • Update message formatting
    Source code(tar.gz)
    Source code(zip)
Owner
The Rust Programming Language
The Rust Programming Language
Lisp and Rust in a text editor => Crispmacs

crispmacs crispmacs is a WIP implementation of Emacs from scratch in Rust. It consists of two parts: crisp and the editor. Crisp crisp is a Lisp that'

rust 3 Jul 31, 2022
Rust IDE support for Atom, powered by the Rust Language Server (RLS)

IDE-Rust Rust language support for Atom-IDE, powered by rust-analyzer. Features Auto-completion Diagnostics (errors and warnings from rustc) Document

The Rust Programming Language 239 Dec 14, 2022
rust-analyzer is a modular compiler frontend for the Rust language

rust-analyzer is a modular compiler frontend for the Rust language. It is a part of a larger rls-2.0 effort to create excellent IDE support for Rust.

null 11.2k Jan 8, 2023
Rust language support in Atom - LOOKING FOR MAINTAINER, see #144

Rust language support in Atom Adds syntax highlighting and snippets to Rust files in Atom. Install Install the package language-rust in Atom (Preferen

Andreas Neuhaus 118 Oct 11, 2022
Repository for the Rust Language Server (aka RLS)

Rust Language Server (RLS) The RLS provides a server that runs in the background, providing IDEs, editors, and other tools with information about Rust

The Rust Programming Language 3.6k Dec 30, 2022
Kakoune Language Server Protocol Client

Kakoune Language Server Protocol Client kak-lsp is a Language Server Protocol client for Kakoune implemented in Rust. Installation Note kak-lsp.toml d

null 495 Dec 17, 2022
Language Server Protocol (LSP) support for vim and neovim.

For legacy python implementation, see branch master. LanguageClient-neovim Language Server Protocol support for vim and neovim. More recordings at Upd

Junfeng Li 3.5k Dec 29, 2022
An experimental proofreading and linting language server for markdown files ✍️

prosemd is an experimental proofreading and linting language server for markdown files. It aims to provide helpful and smart diagnostics when writing

Phil Pluckthun 132 Dec 14, 2022
AIDL Language Server Protocol (LSP) server

AIDL Language Server Protocol (LSP) server Experimental AIDL LSP server based on rust-aidl-parser. Features: diagnostics workspace symbols (Ctrl+T in

Benoit Walter 0 Jan 9, 2022
Experimental treesiter based language server, let's see how far this goes 😆.

tsls Tree-sitter based language server for general languages. Warning: It's in active development right now, and bug is expected. Features Go To Defin

Keyv Chan 16 Sep 11, 2022
A LSP (Language Server Protocol) server for OpenSCAD.

openscad-LSP A LSP (Language Server Protocol) server for OpenSCAD. inspired by dzhu/openscad-language-server Tested with VSCode on Mac and Windows. Te

Leathong 20 Dec 15, 2022
Fennel language server protocol (LSP) support.

fennel-language-server Fennel language server protocol (LSP) support. fennel-language-server is currently in a very early stage and unreliable. Use it

null 68 Dec 27, 2022
impl LSP (Language Server Protocol) Server for librime

rime-ls 为 rime 输入法核心库 librime (的部分功能) 实现 LSP 协议, 从而通过编辑器的代码补全功能输入汉字. 项目还处在早期阶段, 各方面都非常不成熟. 目标是提供 rime + LSP 的通用解决方案, 在不同编辑器内实现与其他 rime 前端类似的输入体验. Feat

zilch40 55 Jan 22, 2023
A brand-new language server for Typst, plus a VS Code extension

Typst LSP A brand-new language server for Typst. Features Syntax highlighting, error reporting, code completion, and function signature help Compiles

Nathan Varner 414 Apr 17, 2023
WIP: Asynchronous Language Server Protocol framework

async-lsp Asynchronous Language Server Protocol (LSP) framework based on tower. ⚠️ This project serves as a proof-of-concept for LSP with middlewares

null 9 Apr 11, 2023
IDE tools for writing pest grammars, using the Language Server Protocol for Visual Studio Code, Vim and other editors

Pest IDE Tools IDE support for Pest, via the LSP. This repository contains an implementation of the Language Server Protocol in Rust, for the Pest par

pest 20 Apr 8, 2023
Eclipse Corrosion - Rust edition in Eclipse IDE

Eclipse Corrosion Rust edition and debug in Eclipse IDE Corrosion is a Rust development plugin for the Eclipse IDE, providing a rich edition experienc

Eclipse Foundation 194 Dec 23, 2022
Emacs configuration for Rust

Table of Contents Introduction Installation Melpa Manual installation Feature guide Indentation Code formatting Running / testing / compiling code Cli

The Rust Programming Language 919 Jan 4, 2023
Rust development environment for Emacs

Rustic Table of Contents Rustic Intro Installation straight Compilation Faces rustc errors Rustfmt edition 2018 LSP Server Client eglot lsp-mode lsp-e

null 612 Dec 30, 2022