GithubHelp home page GithubHelp logo

damnwidget / anaconda_rust Goto Github PK

View Code? Open in Web Editor NEW
40.0 3.0 9.0 1.81 MB

Anaconda Rust offers auto completion, auto formatting and linting for Rust language that will never freeze your Sublime Text 3

License: GNU General Public License v3.0

Python 100.00%

anaconda_rust's Introduction

AnacondaRUST

AnacondaRust offers auto completion, auto formatting and linting for Rust language that will never freeze your Sublime Text 3

Supported Platforms

AnacondaRUST has been tested in GNU/Linux, OS X and Windows 10 with excellent results, take into account that this plugin is in a very early state and probably there are bugs to fix and things to improve. The current status in the different platforms is:

OS Status
GNU/Linux stable
OS X stable
Windows stable

Dependencies

  1. Anaconda plugin for Sublime Text 3
  2. Rust compiler (rustc) and cargo
  3. Racer code completion
  4. rustfmt >= 0.5.0 code formatter
  5. Rust standard lib sources

Installation

If Anaconda is not already installed you must install it using the Command Palette, if it's already installed just skip to the Install Rustc section.

Install Anaconda

  1. Show the Command Palette (Cmd + Shift + P on OS X or Ctrl + Shift + P on Linux/Windows)
  2. Type install, then select Package Control: Install package from the options list
  3. Type anaconda and press Enter

Install Rust

If you have rustc and cargo already installed in your system, skip to the Install Racer section.

There are too many ways to install rust in different operating systems, the following is just a general overview, please, refer to the Rust Language Site for details about how to install it in case that you have doubts.

GNU/Linux and OS X

We can simply install rust in GNU/Linux and OS X by copying and pasting the following command in a terminal:

curl -sSf https://static.rust-lang.org/rustup.sh | sh

The command above will download and install the last stable rust version into your /usr/local/ directory (you may need root access to do so).

Note: All major GNU/Linux distributions offer rust as a pre-compiled binary in their package manager systems, you can install it using your distribution package manager if you want, whatever works for you should be fine.

Windows 10 (probably others are fine)

The easiest way to install rust in Windows is by downloading the Windows binary installers (.msi) from https://www.rust-lang.org/downloads.html take into account that there are two different versions of the C/C++ Application Binary Interface (ABI) one for GNU and other for MSVC which one to pick is a very important decision as it will determine if you can compile Rust code that binds with C or C++ libraries in your system (for example rust-crypto).

It is important to understand that to compile some rust packages that includes some C bindings you need to install a compiler that generates binaries with a compatible ABI with your rust compiler ABI. That means install MinGW/MSYS2 toolchain or Microsoft Visual C++ Build Tools (or alternatively Visual Studio and select the C++ tools during installation)

How can I choose my ABI?

Simple, if you use MinGW/MSYS2 toolchain to compile C and C++ code in your Windows just download the GNU ABI version of the installer, otherwise you should download the MSVC version as probably all the applications and libraries in your Windows are compiled using some version of the Microsoft Visual C++ compiler.

Install Racer

If racer is already installed in your system just skip to the Install rustfmt section. Racer is easily installed using cargo as:

cargo install racer

That will download all the source code, compile and install racer into your cargo binary directory, cargo is great.

Install rustfmt

If rustfmt is already installed in your system just skip to the Install AnacondaRUST section. rustfmt is easily installed using cargo as:

cargo install rustfmt

The command above will download compile and install rustfmt in your system, again, cargo is great.

Note: install rustfmt 0.5.0 or better for a smoothly integration, older versions give problems when used in anaconda_rust

Install AnacondaRUST

To install AnacondaRUST you just need to follow the steps below:

  1. Show the Command Palette (Cmd + Shift + P on OS X or Ctrl + Shift + P on Linux/Windows)
  2. Type install then select Package Control: Install package from the options list
  3. Type anaconda_rust and press Enter

Configure AnacondaRUST

Anaconda could work out of the box if rustc, racer and rustfmt are available in your PATH, you already downloaded the rust source code and the environment variable RUST_SRC_PATH is set to the path where your rust source code is downloaded to, that would be a perfect scenario that probably is not gonna happen so read carefully the steps below in order to make your AnacondaRUST works.

Download Rust Source Code

You may be wondering why I want you to download Rust source code if you already installed rust in the previous section, the reason is simple, racer needs access to the rust's source code to be able to offer auto completion for the rust's standard library. The Rust sources can be downloaded from their site https://www.rust-lang.org/downloads.html just download the source for the same version that you already installed in your system.

Configure Binary Paths

Open AnacondaRUST configuration using Preferences -> Package Settings -> AnacondaRUST and set the path to your racer and rustfmt binaries. For example:

{
	"rustc_binary_path": "/usr/bin/rustc",
	"racer_binary_path": "/home/damnwidget/.cargo/bin/racer",
	"rustfmt_binary_path": "/home/damnwidget/.cargo/bin/rustfmt"
}

Configure Rust Source Code Path

Now you need to tell AnacondaRUST where your copy of the Rust's source code lives in your system, add the path to your AnacondaRUST configuration like:

...
	"rust_src_path": "/home/damnwidget/downloads/languages/rust/sources/1.8.0/src",

Set the RUST_SRC_PATH environment variable and leaving the rust_src_path config empty may work in Operating Systems where the environment vars are passed to the Sublime Text 3 executable, sadly this doesn't always work so I really recommend to set your AnacondaRUST settings to prevent future problems.

Linter Options

AnacondaRUST (obviously) includes a linter for Rust code, the linter runs asynchronous as usual, it runs every time that you save your file.

Disable the linter

AnacondaRUST linter is enabled by default, it can be totally disabled setting anaconda_rust_linting to false in the configuration.

Goto Definition

AnacondaRUST includes a Goto Definition feature but it does not add key bindings by default. You can access the Goto Rust Definition feature through the Command Palette, anyway, if you want to add a key binding for it you could use something like:

{
	"command": "rust_goto", "keys": ["ctrl+r", "ctrl+g"], "context": [
		{"key": "selector", "operator": "equal", "operand": "source.rust"}
	]
}

Show Documentation

If racer 1.2.10 or higher is installed, anacondaRUST can offer documentation using the Control Palette or the Contextual Menu, you can also add a shortcut like:

{
	"command": "rust_doc", "keys": ["ctrl+r", "ctrl+d"], "context": [
		{"key": "selector", "operator": "equal", "operand": "source.rust"}
	]
}

License

As usual for all my Sublime Text plugins, this software is licensed under the GPLv3 terms.

Donations

Please donate to help keep this project alive.

PayPal

anaconda_rust's People

Contributors

alin23 avatar alyssais avatar damnwidget avatar lukaskalbertodt avatar mikkelschubert avatar nikhita avatar ryman avatar shiman avatar sleighsoft avatar talktakestime avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

anaconda_rust's Issues

Your operating system denied the spawn of C:/Users/feng/.cargo/bin/racer.exe process: environment can only contain strings

anaconda_rust won't auto complete, but create tmp files when i typing.
anaconda_jsonserver.log show errors below:

2016-06-30 21:47:31,930: INFO    : client requests: autocomplete
2016-06-30 21:47:31,934: ERROR   : Your operating system denied the spawn of C:/Users/feng/.cargo/bin/racer.exe process: environment can only contain strings
2016-06-30 21:47:31,934: ERROR   : The underlying racer tool raised an exception
2016-06-30 21:47:31,934: ERROR   : Your operating system denied the spawn of C:/Users/feng/.cargo/bin/racer.exe process: environment can only contain strings
2016-06-30 21:47:31,936: DEBUG   : Traceback (most recent call last):
File "D:\Greensoft\sublime-text-3\Data\Packages\Anaconda\anaconda_server\lib\../../../anaconda_rust/plugin\handlers_rust\commands\autocomplete.py", line 36, in run
  'completions': self.completions(),
File "D:\Greensoft\sublime-text-3\Data\Packages\Anaconda\anaconda_server\lib\../../../anaconda_rust/plugin\handlers_rust\commands\autocomplete.py", line 71, in completions
  proc = spawn(args, stdout=PIPE, stderr=PIPE, cwd=os.getcwd(), env=env)
File "D:\Greensoft\sublime-text-3\Data\Packages\Anaconda\anaconda_server\process.py", line 30, in spawn
raise RuntimeError(msg)
RuntimeError: Your operating system denied the spawn of C:/Users/feng/.cargo/bin/racer.exe process: environment can only contain strings

anaconda_racer: completion error

Racer works fine from the command line. Auto-completion searches in Sublime have some strange behavior. For example, typing use std::io::B, then pausing/waiting...

  • Immediately pops up the 'basic/naive' autocomplete suggestion box
  • After waiting 5 or 10 seconds, moving the cursor up or down with the keyboard replaces the basic suggestion box with a correct, working anaconda suggestion box with entries matching those returned by running racer on the command line. Moving the cursor to another line or position, then back to the end (without typing anything new) will pop up the working anaconda box
  • Produces the following stack trace message in the console:
anaconda_racer: completion error
error: internal compiler error: Error constructed but not emitted
thread 'searcher' panicked at 'explicit panic', /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/syntex_syntax-0.32.0/src/errors/mod.rs:361
stack backtrace:
   1:     0x563246a92c69 - std::sys::backtrace::tracing::imp::write::h482d45d91246faa2
   2:     0x563246a96d2c - std::panicking::default_hook::_{{closure}}::h89158f66286b674e
   3:     0x563246a95f4e - std::panicking::default_hook::h9e30d428ee3b0c43
   4:     0x563246a96668 - std::panicking::rust_panic_with_hook::h2224f33fb7bf2f4c
   5:     0x563246944d04 - std::panicking::begin_panic::h6da27a7ee15843ce
                        at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/libstd/panicking.rs:384
   6:     0x56324695dfc9 - _<syntex_syntax..errors..DiagnosticBuilder<'a> as core..ops..Drop>::drop::h09b55b7964875310
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/syntex_syntax-0.32.0/src/errors/mod.rs:3
   7:     0x5632468eecb0 - racer::ast::string_to_crate::h4f17cebc6d7141d3
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/ast.rs:51
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/ast.rs:34
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/ast.rs:49
   8:     0x5632468fca9c - racer::ast::parse_use::h8d66a3ebde7e2fcd
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/ast.rs:808
   9:     0x56324692dc03 - racer::matchers::match_use::hfc60d379341e44c5
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/matchers.rs:512
  10:     0x563246926ae9 - racer::matchers::match_types::h28895858e333b834
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/matchers.rs:27
  11:     0x563246912d26 - racer::nameres::run_matchers_on_blob::h1aec6042601d1aad
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/nameres.rs:716
  12:     0x56324691207b - racer::nameres::search_scope::h2093edca1aab4932
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/nameres.rs:665
  13:     0x56324691bae5 - racer::nameres::search_local_scopes::h6b9d5789e6420cb9
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/nameres.rs:753
  14:     0x56324691e7f2 - racer::nameres::resolve_name::hb81ab693da9463ea
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/nameres.rs:897
  15:     0x563246920b80 - racer::nameres::resolve_path::hab523e48773820ff
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/nameres.rs:976
  16:     0x5632468e8f23 - racer::core::complete_from_file::h05f097721f7bd7a6
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/racer/core.rs:661
  17:     0x563246825e25 - std::panicking::try::do_call::hbcbb667f329b4b0f
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/bin/main.rs:160
                        at /home/nick/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.10/src/bin/main.rs:109
                        at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/libstd/panic.rs:256
                        at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/libstd/panicking.rs:327
  18:     0x563246a9e816 - __rust_maybe_catch_panic
  19:     0x56324684b870 - _<F as alloc..boxed..FnBox<A>>::call_box::hc613c39d91cc369a
                        at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/libstd/panicking.rs:303
                        at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/libstd/panic.rs:312
                        at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/liballoc/boxed.rs:587
  20:     0x563246a94d22 - std::sys::thread::Thread::new::thread_start::he0bf102845911132
  21:     0x7fb91bc6b6a9 - start_thread
  22:     0x7fb91b78aeec - clone
  23:                0x0 - <unknown>
ERROR:racer: Search thread paniced: Any

I'm using the latest versions of anaconda and anaconda_rust, with all configuration/paths correct:

{
    "anaconda_rust_linting": false,
    "rust_format_on_save": false,
    "rustc_binary_path": "/home/nick/.cargo/bin/rustc",
    "racer_binary_path": "/home/nick/.cargo/bin/racer",
    "rustfmt_binary_path": "/home/nick/.cargo/bin/rustfmt",
    "rust_src_path": "/usr/local/src/rust/src"
}

It seems like this is an issue with syntex_syntax or possibly racer but as I mentioned, racer works perfectly from the command line.

Please let me know what other information might be useful.

Racer fails with cryptic message: "~/.cargo, Os { code: 2, message: "No such file or directory" }"

I have verified that all the paths are set up correctly, but auto complete never works. The tmp file passed to racer is deleted almost instantaneously, which I'm guessing is causing all the errors in the logs.

2016-05-24 09:48:10,661: INFO    : client requests: autocomplete
2016-05-24 09:48:10,722: ERROR   : The underlying racer tool raised an exception
2016-05-24 09:48:10,723: DEBUG   : ['Traceback (most recent call last):', '  File "/home/tim/.config/sublime-text-3/Packages/Anaconda/anaconda_server/lib/../../../anaconda_rust/plugin/handlers_rust/commands/autocomplete.py", line 36, in run', "    'completions': self.completions(),", '  File "/home/tim/.config/sublime-text-3/Packages/Anaconda/anaconda_server/lib/../../../anaconda_rust/plugin/handlers_rust/commands/autocomplete.py", line 83, in completions', '    raise Exception(err)', 'Exception: ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', 'ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435', '']
2016-05-24 09:48:10,723: ERROR   : ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435
ERROR:racer::cargo: ERROR!: Error { repr: Os { code: 2, message: "No such file or directory" } } .cargo/registry/src/github.com-1ecc6299db9ec823/racer-1.2.9/src/racer/cargo.rs 435

Can rustfmt be disabled?

I don't have rustfmt installed, so every I save a Rust file, a tmp*.rs file is generated, and then the formatting fails without cleaning it up. This means that my project ends up littered with dozens of these useless files.

Autocompletion fails when non-ASCII characters are present

  1. Start a new rust binary with the usual code in it:
fn main() {
    println!("Hello, world!");
}
  1. Check that autocompletion works by typing use std::convert:: somewhere. It will recommend stuff like AsRef and Into.

  2. Change the output string to "Hällo wörld" (or sth like that).

  3. Again try autocompletion by typing use std::convert::, which is now broken. It only recommends stuff from the file itself (fn, main, Hällo, ...).

Output in anaconda_jsonserver.log:

2017-01-27 16:25:16,319: INFO    : client requests: autocomplete
2017-01-27 16:25:16,328: ERROR   : The underlying racer tool raised an exception
2017-01-27 16:25:16,328: ERROR   : 'ascii' codec can't encode character u'\xe4' in position 47: ordinal not in range(128)
2017-01-27 16:25:16,329: DEBUG   : Traceback (most recent call last):
  File "/home/rustcrypto/.config/sublime-text-3/Packages/Anaconda/anaconda_server/lib/../../../anaconda_rust/plugin/handlers_rust/commands/autocomplete.py", line 36, in run
    'completions': self.completions(),
  File "/home/rustcrypto/.config/sublime-text-3/Packages/Anaconda/anaconda_server/lib/../../../anaconda_rust/plugin/handlers_rust/commands/autocomplete.py", line 89, in completions
    output, error = racer.communicate(src)
  File "/usr/lib/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib/python2.7/subprocess.py", line 1417, in _communicate
    stdout, stderr = self._communicate_with_poll(input)
  File "/usr/lib/python2.7/subprocess.py", line 1481, in _communicate_with_poll
    input_offset += os.write(fd, chunk)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 47: ordinal not in range(128)

Calling racer with the same file from disk manually works fine. So the problem seems to be that anaconda_rust cannot write out the non-ASCII character through the pipe.

If possible, please tell me whether or not you can fix this by next week (if not, I would have to modify some files of mine as a workaround). It's not urgent, I just need to know.

Format on save sometimes leaves view stuck read-only

ST3 build 3126 on Linux (CentOS 7), anaconda_rust 0.2.10.

Sometimes, with rust_format_on_save set, some files will hit a bug where the format seems to hang forever - the progress bar consistently shows "Auto formatting file..." and the view remains read-only. A close and re-open of the file clears the read-only state but sets it again as soon as I save. Restarting Sublime fixes for a while but eventually it starts happening again.

I'm not sure whether I have some other plugin interfering but I've disabled pretty much everything else and I still hit this intermittently. It is intermittent, so it's not that the path to rustfmt is wrong or anything.

From a quick look at commands/rustfmt.py, it looks like the problem might be in the timeout case - that callback doesn't seem to clear the progress bar or clear the read-only state? But I don't know the Anaconda internals well enough to be sure... I've tried looking at the jsonserver logfiles, but they don't show anything that looks like an error.

Auto-format sometimes deletes code

With 0.2.5 of anaconda_rust and this exact code:

mod foo ;

// bla

When I trigger auto-format, it deletes all the code and leaves me with an empty file. Maybe related to #16

Linter fails with multiple targets.

If I have a basic project with a main.rs and lib.rs, the linter fails with this message:

error: extra arguments to `rustc` can only be passed to one target, consider filtering the package by passing e.g. `--lib` or `--bin NAME` to specify a single target

I'm fairly new to Rust, so I'm not entirely certain if there is some workaround, or if I have misconfigured anything.

a lot of tmp files in project dir and no completion.

Hi I installed anaconda_rust, when I try to tape use std::io:: I expect some completion but I get nothing except some word from the current file, and a lot of tmp files are created in the project dir.

I am on windows 10, rust nightly 1.10, mingw gcc 5.3.0, python 3 and python 2.

anaconda_rust didn't work.

I have followed the Installation,But now,even the code highlighting don't work.

My system info:

Windows 7 ultimate 64bit
Sublime Text Build 3059
Rust nightly GNU 1.10 32bit

My anaconda_rust settings:

:
{
"rustc_binary_path": "E:\rustdir\bin\rustc",
"racer_binary_path": "E:\rustdir\bin\racer",
"rustfmt_binary_path": "E:\rustdir\bin\rustfmt",
"rust_src_path": "H:\Rust\src",
}

This is the info from sublime console:

DPI scale: 1
startup, version: 3059 windows x32 channel: stable
executable: /E/Program Files (x86)/Sublime Text Build 3059/sublime_text.exe
working dir: /E/Program Files (x86)/Sublime Text Build 3059
packages path: /E/Program Files (x86)/Sublime Text Build 3059/Data/Packages
state path: /E/Program Files (x86)/Sublime Text Build 3059/Data/Local
hardware concurrency: 8
zip path: /E/Program Files (x86)/Sublime Text Build 3059/Packages
zip path: /E/Program Files (x86)/Sublime Text Build 3059/Data/Installed Packages
found 4 files for base name Default.sublime-keymap
found 1 files for base name Default.sublime-mousemap
found 6 files for base name Main.sublime-menu
loading bindings
loading pointer bindings
found 1 files for base name Default.sublime-theme
theme loaded
app ready
startup cache, total files: 163 cache hits: 163
pre session restore time: 0.267479
startup time: 0.375479
first paint time: 0.386479
launching: /E/Program Files (x86)/Sublime Text Build 3059/plugin_host.exe
loaded 839 snippets
reloading plugin Default.block
reloading plugin Default.comment
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
reloading plugin Default.echo
reloading plugin Default.exec
reloading plugin Default.fold
reloading plugin Default.font
reloading plugin Default.goto_line
reloading plugin Default.history_list
reloading plugin Default.indentation
reloading plugin Default.kill_ring
reloading plugin Default.mark
reloading plugin Default.new_templates
reloading plugin Default.open_file_settings
reloading plugin Default.open_in_browser
reloading plugin Default.pane
reloading plugin Default.paragraph
reloading plugin Default.paste_from_history
reloading plugin Default.save_on_focus_lost
reloading plugin Default.scroll
reloading plugin Default.set_unsaved_view_name
reloading plugin Default.side_bar
reloading plugin Default.sort
reloading plugin Default.swap_line
reloading plugin Default.switch_file
reloading plugin Default.symbol
reloading plugin Default.transform
reloading plugin Default.transpose
reloading plugin Default.trim_trailing_white_space
reloading plugin CSS.css_completions
reloading plugin Diff.diff
reloading plugin HTML.encode_html_entities
reloading plugin HTML.html_completions
reloading plugin 0_package_control_loader.00-package_control
reloading plugin 0_package_control_loader.02-bz2
reloading plugin 0_package_control_loader.10-golangconfig
reloading plugin 0_package_control_loader.10-shellenv
reloading plugin 0_package_control_loader.20-newterm
reloading plugin 0_package_control_loader.20-package_events
reloading plugin Package Control.1_reloader
reloading plugin Package Control.2_bootstrap
reloading plugin Package Control.Package Control
reloading plugin Anaconda.anaconda
reloading plugin Anaconda.setup
reloading plugin Anaconda.version
reloading plugin anaconda_rust.anaconda_rust
reloading plugin anaconda_rust.plugin_version
plugins loaded
Package Control: Skipping automatic upgrade, last run at 2016-08-01 20:39:20, next run at 2016-08-01 21:39:20 or after

o1
image

[racer] Use STDIN input in racer to avoid writing tmp files with the unsaved buffer

Currently, we are writing the unsaved buffer into a temporary file that is then passed as path parameter to the underlying racer tool. That is not only inefficient (hard disk IO access) but also leaves garbage tmp files in the user directory when for example the JsonServer is not ready so the callback get lost and the timeout is never fired.

A solution is to use the standard input in the child process to pass the contents of the unsaved buffer directly.

`check_racer_version` failed because of error environment variables.

The console of sublime keeps outputing following logging:

Can't determine racer version: Command '['racer', '-V']' returned non-zero exit status 1

I have installed racer, rustfmt and rustc correctly, and checked it works by execute the command racer -V in command line. To locate the problem, I have checked the code and found check_racer_version can't get the correct environment variables which set in ~/.zshrc. So data = subprocess.check_output([racer, '-V'], env=env) will failed.

The version of related software is below:

  • AnacondaRust v0.2.7
  • Sublime Text build 3114
  • OS X 10.10.5
  • zsh 5.2

Typos in Readme

In the Readme, it says:

{
	"command": "rust_doc", "keys": ["ctrl+r", "ctrl+d"], "context": [
		{"key": "selector", "operator": "eual", "operan": "source.rust"}
	]
}

Shouldn't it be this?:

{
	"command": "rust_doc", "keys": ["ctrl+r", "ctrl+d"], "context": [
		{"key": "selector", "operator": "equal", "operand": "source.rust"}
	]
}

("equal" and "operand")

Duplicate auto complete data.

anaconda may send duplicate complete data back, when I type c, show autocomplete as below:

{
    "vid": 15,
    "completions": [
        ["config          m D:\\projects\\codelab\\src\\config.rs", "config"],
        ["compiletest     m D:\\Greensoft\\rustc-1.9.0\\src\\compiletest\\compiletest.rs", "compiletest"],
        ["collections     m collections", "collections"],
        ["collectionstest m collectionstest", "collectionstest"],
        ["core            m core", "core"],
        ["coretest        m coretest", "coretest"],
        ["config          m D:\\projects\\codelab\\src\\config.rs", "config"],
        ["compiletest     m D:\\Greensoft\\rustc-1.9.0\\src\\compiletest\\compiletest.rs", "compiletest"],
        ["collections     m collections", "collections"],
        ["collectionstest m collectionstest", "collectionstest"],
        ["core            m core", "core"],
        ["coretest        m coretest", "coretest"],
        ["config          m D:\\projects\\codelab\\src\\config.rs", "config"]
    ],
    "success": true,
    "uid": "da97b4d496fd4494bc57eb28de9734a0"
}

Any shortcut to close minihtml message?

I know this probably is not a problem of Anaconda, but since anaconda uses this new property, so I think it would be okay to ask here.

Frequently I encountered compiling error message shown in minihtml like this:

09_13_16 at 11 24 09am

How can I easily close this message without touching the mouse?

Provide an option to disable auto format

Actually rustfmt runs automatically each time a document is saved. I can't find a way to disable it. If I remove the rustfmt_binary_path from the configuration files, sublime text freezes.

Ignore children modules when formatting

I'm a bit confused: why has no one noticed this yet? :P Or do I miss anything?

When auto-formatting, anaconda_rust does not pass --skip-children. Therefore when auto-formatting the parent module, the children's contents are copied into it as well. I think the fix is just to add said CLI flag...

0.2.2 will remove code unexpectedly

I'm just upgrade to 0.2.2 and when I format code, the code in the beginning(maybe two or three line) will be remove unexpectedly. You can check about that. 0.2.1 does not have this problem.

anaconda_rust does not auto-complete

I installed anaconda_rust and configure everything in the setting file, the autofmt works, but racer no. There is no error output on console either. I have no clue about where the problem is. I post my configure file below for your information.

`
{

"anaconda_rust_linting": true,
"anaconda_rust_autocompletion": true,

"rustc_binary_path": "/usr/local/bin/rustc",
"racer_binary_path": "/Users/divinites/.cargo/bin/racer",
"rustfmt_binary_path": "/Users/divinites/.cargo/bin/rustfmt",
"rust_src_path": "/Users/divinites/dropbox/usr/src/rustc-1.7.0/src",
"rust_format_on_save": true,
"rust_rustfmt_timeout": 1  // seconds

}
`

Goto definition fails

(No non-ASCII characters involved.)

When I click a method name or class name (properly use-ed or even in the use declaration itself; the code compiles fine), whether it's a class from the standard library or defined by me, nothing happens.

Log output when I goto a method declared in business.rs, a module right next to main.rs where I click the name: (racer doesn't find anything, not really an anaconda_rust issue)

2017-01-27 17:14:18,453: INFO    : client requests: goto
2017-01-27 17:14:18,467: INFO    : About push back to ST3: {"vid": 16, "goto": [], "success": true, "uid": "3109528431154be89454ce9c644f21de"}

Log output when I click on AsRef in the line use std::convert::AsRef: (racer finds something but still nothing happens)

2017-01-27 17:32:18,241: INFO    : client requests: goto
2017-01-27 17:32:18,275: INFO    : About push back to ST3: {"vid": 16, "goto": [["/home/rustcrypto/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/libstd/../libcore/convert.rs", 81, 10]], "success": true, "uid": "eb5035c9ac094d938364591f58030cdd"}

rustfmt fails when `rustfmt.toml` not available

When I saved my .rs file, my whole contents were replaced by the error message from rustfmt:

Error: unable to find a config file for the given path: `C:\Users\guosh\AppData\Roaming\Sublime`

usage: C:\Users\guosh\.cargo\bin\rustfmt [options] <file>...

Options:
    -h, --help          show this message
    -V, --version       show version information
    -v, --verbose       print verbose output
        --write-mode [replace|overwrite|display|diff|coverage|checkstyle]
                        mode to write in (not usable when piping from stdin)
        --skip-children
                        don't reformat child modules
        --config-help   show details of rustfmt configuration options
        --dump-default-config PATH
                        Dumps the default configuration to a file and exits.
        --dump-minimal-config PATH
                        Dumps configuration options that were checked during
                        formatting to a file.
        --config-path [Path for the configuration file]
                        Recursively searches the given path for the
                        rustfmt.toml config file. If not found reverts to the
                        input file path
        --file-lines JSON
                        Format specified line ranges. See README for more
                        detail on the JSON format.

And what is worse, the file was somehow saved automatically, and I lost all my contents..

rustfmt version: 0.9.0-nightly ( )
Environment: Windows 10, sublime text 3
AnacondaRust version: 0.2.10

After some research, I found that this is because anaconda_rust calls rustfmt with the option --config-path (rust_rustfmt_config_path in the package config json file), which, if not specified, will default to current working directory. The code is here and here. On rustfmt's side, when the rustfmt.toml can't be found at the specified config path, it will just output an error message (to stdout!) and quit.

This issue might be specific to the rustfmt version or the operating system. However, I would like to propose some possible workarounds:

  • Put a note in the README file to show that it is mandatory to set rust_rustfmt_config_path where rustfmt.toml must exist.
  • OR, when rust_rustfmt_config_path is not set, check the current working directory whether rustfmt.toml or .rustfmt.toml can be found. If yes, then use the current working directory as the --config-path's value; otherwise, call rustfmt without --config-path.

If the second one is preferred, I can also help with the implementation.

Using rustfmt.toml when formatting

I want to use the format-on-save feature with some custom rustfmt options. Sadly it seems that AnacondaRust does not spawn rustfmt correctly. Rustfmt automatically checks in the current directory and parent directories for a rustfmt.toml file and uses it as configuration. But when using AnacondaRust it does not use my custom configuration. I think the easiest solution is to spawn rustfmt with the files directory as working directory.

It might also be interesting for some to specify the --config-path of rustfmt in the AnacondaRust configuration.

I'd really appreciate if someone could look into this :)

Autoformat crashed when the file contains unicode characters

  File "/Users/guozixing/Library/Application Support/Sublime Text 3/Packages/anaconda_rust/commands/rustfmt.py", line 57, in run
    tmp.write(self.code)
UnicodeEncodeError: 'ascii' codec can't encode character '\uff1a' in position 191: ordinal not in range(128)

I am sure that it is a bug.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.