@@ -26,15 +26,6 @@ Discussion happens in this Zulip stream:
26
26
27
27
https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0
28
28
29
- # Work List
30
-
31
- We have this "work list" paper document:
32
-
33
- https://paper.dropbox.com/doc/RLS-2.0-work-list--AZ3BgHKKCtqszbsi3gi6sjchAQ-42vbnxzuKq2lKwW0mkn8Y
34
-
35
- It shows what everyone is working on right now. If you want to (this is not
36
- mandatory), add yourself to the list!
37
-
38
29
# Issue Labels
39
30
40
31
* [ good-first-issue] ( https://github.com/rust-analyzer/rust-analyzer/labels/good%20first%20issue )
@@ -50,10 +41,12 @@ mandatory), add yourself to the list!
50
41
51
42
# CI
52
43
53
- We use Travis for CI. Most of the things, including formatting, are checked by
44
+ We use GitHub Actions for CI. Most of the things, including formatting, are checked by
54
45
` cargo test ` so, if ` cargo test ` passes locally, that's a good sign that CI will
55
- be green as well. We use bors-ng to enforce the [ not rocket
56
- science] ( https://graydon2.dreamwidth.org/1597.html ) rule.
46
+ be green as well. The only exception is that long-running by default a skipped locally.
47
+ Use ` env RUN_SLOW_TESTS=1 cargo test ` to run the full suite.
48
+
49
+ We use bors-ng to enforce the [ not rocket science] ( https://graydon2.dreamwidth.org/1597.html ) rule.
57
50
58
51
You can run ` cargo xtask install-pre-commit-hook ` to install git-hook to run rustfmt on commit.
59
52
@@ -81,42 +74,37 @@ relevant test and execute it (VS Code includes an action for running a single
81
74
test).
82
75
83
76
However, launching a VS Code instance with locally build language server is
84
- possible. There's even a VS Code task for this, so just <kbd >F5</kbd > should
85
- work (thanks, [ @andrew-w-ross ] ( https://github.com/andrew-w-ross ) !).
86
-
87
- I often just install development version with ` cargo xtask install --server --jemalloc ` and
88
- restart the host VS Code.
89
-
90
- See [ ./debugging.md] ( ./debugging.md ) for how to attach to rust-analyzer with
91
- debugger, and don't forget that rust-analyzer has useful ` pd ` snippet and ` dbg `
92
- postfix completion for printf debugging :-)
93
-
94
- # Working With VS Code Extension
95
-
96
- To work on the VS Code extension, launch code inside ` editors/code ` and use ` F5 `
97
- to launch/debug. To automatically apply formatter and linter suggestions, use
98
- ` npm run fix ` .
99
-
100
- Tests are located inside ` src/test ` and are named ` *.test.ts ` . They use the
101
- [ Mocha] ( https://mochajs.org ) test framework and the builtin Node
102
- [ assert] ( https://nodejs.org/api/assert.html ) module. Unlike normal Node tests
103
- they must be hosted inside a VS Code instance. This can be done in one of two
104
- ways:
105
-
106
- 1 . When ` F5 ` debugging in VS Code select the ` Extension Tests ` configuration
107
- from the drop-down at the top of the Debug View. This will launch a temporary
108
- instance of VS Code. The test results will appear in the "Debug Console" tab
109
- of the primary VS Code instance.
110
-
111
- 2 . Run ` npm test ` from the command line. Although this is initiated from the
112
- command line it is not headless; it will also launch a temporary instance of
113
- VS Code.
114
-
115
- Due to the requirements of running the tests inside VS Code they are ** not run
116
- on CI** . When making changes to the extension please ensure the tests are not
117
- broken locally before opening a Pull Request.
118
-
119
- To install ** only** the VS Code extension, use ` cargo xtask install --client-code ` .
77
+ possible. There's "Run Extension (Dev Server)" launch configuration for this.
78
+
79
+ In general, I use one of the following workflows for fixing bugs and
80
+ implementing features.
81
+
82
+ If the problem concerns only internal parts of rust-analyzer (ie, I don't need
83
+ to touch ` ra_lsp_server ` crate or typescript code), there is a unit-test for it.
84
+ So, I use ** Rust Analyzer: Run** action in VS Code to run this single test, and
85
+ then just do printf-driven development/debugging. As a sanity check after I'm
86
+ done, I use ` cargo xtask install --server ` and ** Reload Window** action in VS
87
+ Code to sanity check that the thing works as I expect.
88
+
89
+ If the problem concerns only the VS Code extension, I use ** Run Extension**
90
+ launch configuration from ` launch.json ` . Notably, this uses the usual
91
+ ` ra_lsp_server ` binary from ` PATH ` . After I am done with the fix, I use `cargo
92
+ xtask install --client-code` to try the new extension for real.
93
+
94
+ If I need to fix something in the ` ra_lsp_server ` crate, I feel sad because it's
95
+ on the boundary between the two processes, and working there is slow. I usually
96
+ just ` cargo xtask install --server ` and poke changes from my live environment.
97
+ Note that this uses ` --release ` , which is usually faster overall, because
98
+ loading stdlib into debug version of rust-analyzer takes a lot of time. To speed
99
+ things up, sometimes I open a temporary hello-world project which has
100
+ ` "rust-analyzer.withSysroot": false ` in ` .code/settings.json ` . This flag causes
101
+ rust-analyzer to skip loading the sysroot, which greatly reduces the amount of
102
+ things rust-analyzer needs to do, and makes printf's more useful. Note that you
103
+ should only use ` eprint! ` family of macros for debugging: stdout is used for LSP
104
+ communication, and ` print! ` would break it.
105
+
106
+ If I need to fix something simultaneously in the server and in the client, I
107
+ feel even more sad. I don't have a specific workflow for this case.
120
108
121
109
# Logging
122
110
0 commit comments