106: Add on-enter handler r=matklad a=matklad

Now, typing doc comments is much more pleasant

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot]
2018-10-09 16:52:48 +00:00
12 changed files with 630 additions and 401 deletions
+6
View File
@@ -184,6 +184,12 @@ pub fn join_lines(&self, file_id: FileId, range: TextRange) -> SourceChange {
let file = self.imp.file_syntax(file_id);
SourceChange::from_local_edit(file_id, "join lines", ra_editor::join_lines(&file, range))
}
pub fn on_enter(&self, file_id: FileId, offset: TextUnit) -> Option<SourceChange> {
let file = self.imp.file_syntax(file_id);
let edit = ra_editor::on_enter(&file, offset)?;
let res = SourceChange::from_local_edit(file_id, "on enter", edit);
Some(res)
}
pub fn on_eq_typed(&self, file_id: FileId, offset: TextUnit) -> Option<SourceChange> {
let file = self.imp.file_syntax(file_id);
Some(SourceChange::from_local_edit(file_id, "add semicolon", ra_editor::on_eq_typed(&file, offset)?))
+1 -1
View File
@@ -35,7 +35,7 @@
flip_comma, add_derive, add_impl,
introduce_variable,
},
typing::{join_lines, on_eq_typed},
typing::{join_lines, on_eq_typed, on_enter},
completion::{scope_completion, CompletionItem},
folding_ranges::{Fold, FoldKind, folding_ranges}
};
+99 -2
View File
@@ -4,7 +4,7 @@
TextUnit, TextRange, SyntaxNodeRef, File, AstNode, SyntaxKind,
ast,
algo::{
find_covering_node,
find_covering_node, find_leaf_at_offset, LeafAtOffset,
},
text_utils::{intersect, contains_offset_nonstrict},
SyntaxKind::*,
@@ -56,6 +56,58 @@ pub fn join_lines(file: &File, range: TextRange) -> LocalEdit {
}
}
pub fn on_enter(file: &File, offset: TextUnit) -> Option<LocalEdit> {
let comment = find_leaf_at_offset(file.syntax(), offset).left_biased().filter(|it| it.kind() == COMMENT)?;
let prefix = comment_preffix(comment)?;
if offset < comment.range().start() + TextUnit::of_str(prefix) {
return None;
}
let indent = node_indent(file, comment)?;
let inserted = format!("\n{}{}", indent, prefix);
let cursor_position = offset + TextUnit::of_str(&inserted);
let mut edit = EditBuilder::new();
edit.insert(offset, inserted);
Some(LocalEdit {
edit: edit.finish(),
cursor_position: Some(cursor_position),
})
}
fn comment_preffix(comment: SyntaxNodeRef) -> Option<&'static str> {
let text = comment.leaf_text().unwrap();
let res = if text.starts_with("///") {
"/// "
} else if text.starts_with("//!") {
"//! "
} else if text.starts_with("//") {
"// "
} else {
return None;
};
Some(res)
}
fn node_indent<'a>(file: &'a File, node: SyntaxNodeRef) -> Option<&'a str> {
let ws = match find_leaf_at_offset(file.syntax(), node.range().start()) {
LeafAtOffset::Between(l, r) => {
assert!(r == node);
l
}
LeafAtOffset::Single(n) => {
assert!(n == node);
return Some("")
}
LeafAtOffset::None => unreachable!(),
};
if ws.kind() != WHITESPACE {
return None;
}
let text = ws.leaf_text().unwrap();
let pos = text.as_str().rfind('\n').map(|it| it + 1).unwrap_or(0);
Some(&text[pos..])
}
pub fn on_eq_typed(file: &File, offset: TextUnit) -> Option<LocalEdit> {
let let_stmt: ast::LetStmt = find_node_at_offset(file.syntax(), offset)?;
if let_stmt.has_semi() {
@@ -187,7 +239,7 @@ fn compute_ws(left: SyntaxNodeRef, right: SyntaxNodeRef) -> &'static str {
#[cfg(test)]
mod tests {
use super::*;
use test_utils::{check_action, extract_range, extract_offset};
use test_utils::{check_action, extract_range, extract_offset, add_cursor};
fn check_join_lines(before: &str, after: &str) {
check_action(before, after, |file, offset| {
@@ -344,4 +396,49 @@ fn foo() {
// }
// ");
}
#[test]
fn test_on_enter() {
fn apply_on_enter(before: &str) -> Option<String> {
let (offset, before) = extract_offset(before);
let file = File::parse(&before);
let result = on_enter(&file, offset)?;
let actual = result.edit.apply(&before);
let actual = add_cursor(&actual, result.cursor_position.unwrap());
Some(actual)
}
fn do_check(before: &str, after: &str) {
let actual = apply_on_enter(before).unwrap();
assert_eq_text!(after, &actual);
}
fn do_check_noop(text: &str) {
assert!(apply_on_enter(text).is_none())
}
do_check(r"
/// Some docs<|>
fn foo() {
}
", r"
/// Some docs
/// <|>
fn foo() {
}
");
do_check(r"
impl S {
/// Some<|> docs.
fn foo() {}
}
", r"
impl S {
/// Some
/// <|> docs.
fn foo() {}
}
");
do_check_noop(r"<|>//! docz");
}
}
+40 -1
View File
@@ -190,9 +190,13 @@ fn try_conv_with(self, world: &ServerWorld) -> Result<req::SourceChange> {
None => None,
Some(pos) => {
let line_index = world.analysis().file_line_index(pos.file_id);
let edits = self.source_file_edits.iter().find(|it| it.file_id == pos.file_id)
.map(|it| it.edits.as_slice()).unwrap_or(&[]);
let line_col = translate_offset_with_edit(&*line_index, pos.offset, edits);
let position = Position::new(line_col.line as u64, u32::from(line_col.col) as u64);
Some(TextDocumentPositionParams {
text_document: TextDocumentIdentifier::new(pos.file_id.try_conv_with(world)?),
position: pos.offset.conv_with(&line_index),
position,
})
}
};
@@ -207,6 +211,41 @@ fn try_conv_with(self, world: &ServerWorld) -> Result<req::SourceChange> {
}
}
// HACK: we should translate offset to line/column using linde_index *with edits applied*.
// A naive version of this function would be to apply `edits` to the original text,
// construct a new line index and use that, but it would be slow.
//
// Writing fast & correct version is issue #105, let's use a quick hack in the meantime
fn translate_offset_with_edit(
pre_edit_index: &LineIndex,
offset: TextUnit,
edits: &[AtomEdit],
) -> LineCol {
let fallback = pre_edit_index.line_col(offset);
let edit = match edits.first() {
None => return fallback,
Some(edit) => edit
};
let end_offset = edit.delete.start() + TextUnit::of_str(&edit.insert);
if !(edit.delete.start() <= offset && offset <= end_offset) {
return fallback
}
let rel_offset = offset - edit.delete.start();
let in_edit_line_col = LineIndex::new(&edit.insert).line_col(rel_offset);
let edit_line_col = pre_edit_index.line_col(edit.delete.start());
if in_edit_line_col.line == 0 {
LineCol {
line: edit_line_col.line,
col: edit_line_col.col + in_edit_line_col.col,
}
} else {
LineCol {
line: edit_line_col.line + in_edit_line_col.line,
col: in_edit_line_col.col,
}
}
}
impl TryConvWith for SourceFileEdit {
type Ctx = ServerWorld;
type Output = TextDocumentEdit;
@@ -77,6 +77,20 @@ pub fn handle_join_lines(
.try_conv_with(&world)
}
pub fn handle_on_enter(
world: ServerWorld,
params: req::TextDocumentPositionParams,
_token: JobToken,
) -> Result<Option<req::SourceChange>> {
let file_id = params.text_document.try_conv_with(&world)?;
let line_index = world.analysis().file_line_index(file_id);
let offset = params.position.conv_with(&line_index);
match world.analysis().on_enter(file_id, offset) {
None => Ok(None),
Some(edit) => Ok(Some(edit.try_conv_with(&world)?))
}
}
pub fn handle_on_type_formatting(
world: ServerWorld,
params: req::DocumentOnTypeFormattingParams,
@@ -244,6 +244,7 @@ fn on_request(
.on::<req::ExtendSelection>(handlers::handle_extend_selection)?
.on::<req::FindMatchingBrace>(handlers::handle_find_matching_brace)?
.on::<req::JoinLines>(handlers::handle_join_lines)?
.on::<req::OnEnter>(handlers::handle_on_enter)?
.on::<req::OnTypeFormatting>(handlers::handle_on_type_formatting)?
.on::<req::DocumentSymbolRequest>(handlers::handle_document_symbol)?
.on::<req::WorkspaceSymbol>(handlers::handle_workspace_symbol)?
+8
View File
@@ -119,6 +119,14 @@ pub struct JoinLinesParams {
pub range: Range,
}
pub enum OnEnter {}
impl Request for OnEnter {
type Params = TextDocumentPositionParams;
type Result = Option<SourceChange>;
const METHOD: &'static str = "m/onEnter";
}
pub enum Runnables {}
impl Request for Runnables {
+17 -2
View File
@@ -16,7 +16,7 @@ It's better to remove existing Rust plugins to avoid interference.
* syntax highlighting (LSP does not have API for it, so impl is hacky
and sometimes fall-backs to the horrible built-in highlighting)
* **Go to symbol in workspace** (`ctrl+t`)
- `#Foo` searches for `Foo` type in the current workspace
- `#foo#` searches for `foo` function in the current workspace
@@ -44,9 +44,24 @@ It's better to remove existing Rust plugins to avoid interference.
outside of the test function, this re-runs the last test. Do bind
this to a shortcut!
* Typing assists
- typing `let =` tries to smartly add `;` if `=` is followed by an existing expression.
- Enter inside comments continues comment (`<|>` signifies cursor position):
```
/// Docs<|>
fn foo() {}
```
```
/// Docs
/// <|>
fn foo() {}
```
* code actions (use `ctrl+.` to activate).
`<|>` signifies cursor position
- Flip `,`
+393 -393
View File
@@ -22,10 +22,10 @@
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"dev": true,
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
"co": "4.6.0",
"fast-deep-equal": "1.1.0",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1"
}
},
"ansi-cyan": {
@@ -70,7 +70,7 @@
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
"sprintf-js": "1.0.3"
}
},
"arr-diff": {
@@ -79,8 +79,8 @@
"integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
"dev": true,
"requires": {
"arr-flatten": "^1.0.1",
"array-slice": "^0.2.3"
"arr-flatten": "1.1.0",
"array-slice": "0.2.3"
}
},
"arr-flatten": {
@@ -113,7 +113,7 @@
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
"requires": {
"array-uniq": "^1.0.1"
"array-uniq": "1.0.3"
}
},
"array-uniq": {
@@ -140,7 +140,7 @@
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"dev": true,
"requires": {
"safer-buffer": "~2.1.0"
"safer-buffer": "2.1.2"
}
},
"assert-plus": {
@@ -173,9 +173,9 @@
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "^1.1.3",
"esutils": "^2.0.2",
"js-tokens": "^3.0.2"
"chalk": "1.1.3",
"esutils": "2.0.2",
"js-tokens": "3.0.2"
},
"dependencies": {
"chalk": {
@@ -184,11 +184,11 @@
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"supports-color": {
@@ -212,7 +212,7 @@
"dev": true,
"optional": true,
"requires": {
"tweetnacl": "^0.14.3"
"tweetnacl": "0.14.5"
}
},
"block-stream": {
@@ -221,7 +221,7 @@
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"dev": true,
"requires": {
"inherits": "~2.0.0"
"inherits": "2.0.3"
}
},
"boolbase": {
@@ -236,7 +236,7 @@
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
@@ -246,9 +246,9 @@
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
"expand-range": "^1.8.1",
"preserve": "^0.2.0",
"repeat-element": "^1.1.2"
"expand-range": "1.8.2",
"preserve": "0.2.0",
"repeat-element": "1.1.3"
}
},
"browser-stdout": {
@@ -287,9 +287,9 @@
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.5.0"
},
"dependencies": {
"ansi-styles": {
@@ -298,7 +298,7 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
"color-convert": "1.9.3"
}
},
"has-flag": {
@@ -313,7 +313,7 @@
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
"has-flag": "3.0.0"
}
}
}
@@ -324,12 +324,12 @@
"integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=",
"dev": true,
"requires": {
"css-select": "~1.2.0",
"dom-serializer": "~0.1.0",
"entities": "~1.1.1",
"htmlparser2": "^3.9.1",
"lodash": "^4.15.0",
"parse5": "^3.0.1"
"css-select": "1.2.0",
"dom-serializer": "0.1.0",
"entities": "1.1.1",
"htmlparser2": "3.9.2",
"lodash": "4.17.11",
"parse5": "3.0.3"
}
},
"clone": {
@@ -356,9 +356,9 @@
"integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"process-nextick-args": "^2.0.0",
"readable-stream": "^2.3.5"
"inherits": "2.0.3",
"process-nextick-args": "2.0.0",
"readable-stream": "2.3.6"
}
},
"co": {
@@ -388,7 +388,7 @@
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
"delayed-stream": "1.0.0"
}
},
"commander": {
@@ -409,7 +409,7 @@
"integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.1"
"safe-buffer": "5.1.2"
}
},
"core-util-is": {
@@ -424,10 +424,10 @@
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"dev": true,
"requires": {
"boolbase": "~1.0.0",
"css-what": "2.1",
"boolbase": "1.0.0",
"css-what": "2.1.0",
"domutils": "1.5.1",
"nth-check": "~1.0.1"
"nth-check": "1.0.1"
}
},
"css-what": {
@@ -442,7 +442,7 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
"assert-plus": "1.0.0"
}
},
"debug": {
@@ -460,7 +460,7 @@
"integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=",
"dev": true,
"requires": {
"is-obj": "^1.0.0"
"is-obj": "1.0.1"
}
},
"delayed-stream": {
@@ -487,8 +487,8 @@
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
"dev": true,
"requires": {
"domelementtype": "~1.1.1",
"entities": "~1.1.1"
"domelementtype": "1.1.3",
"entities": "1.1.1"
},
"dependencies": {
"domelementtype": {
@@ -511,7 +511,7 @@
"integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
"dev": true,
"requires": {
"domelementtype": "1"
"domelementtype": "1.3.0"
}
},
"domutils": {
@@ -520,8 +520,8 @@
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"dev": true,
"requires": {
"dom-serializer": "0",
"domelementtype": "1"
"dom-serializer": "0.1.0",
"domelementtype": "1.3.0"
}
},
"duplexer": {
@@ -536,10 +536,10 @@
"integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
"dev": true,
"requires": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
"readable-stream": "^2.0.0",
"stream-shift": "^1.0.0"
"end-of-stream": "1.4.1",
"inherits": "2.0.3",
"readable-stream": "2.3.6",
"stream-shift": "1.0.0"
}
},
"ecc-jsbn": {
@@ -549,8 +549,8 @@
"dev": true,
"optional": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
"jsbn": "0.1.1",
"safer-buffer": "2.1.2"
}
},
"end-of-stream": {
@@ -559,7 +559,7 @@
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
"dev": true,
"requires": {
"once": "^1.4.0"
"once": "1.4.0"
}
},
"entities": {
@@ -592,14 +592,14 @@
"integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==",
"dev": true,
"requires": {
"duplexer": "^0.1.1",
"flatmap-stream": "^0.1.0",
"from": "^0.1.7",
"duplexer": "0.1.1",
"flatmap-stream": "0.1.0",
"from": "0.1.7",
"map-stream": "0.0.7",
"pause-stream": "^0.0.11",
"split": "^1.0.1",
"stream-combiner": "^0.2.2",
"through": "^2.3.8"
"pause-stream": "0.0.11",
"split": "1.0.1",
"stream-combiner": "0.2.2",
"through": "2.3.8"
}
},
"expand-brackets": {
@@ -608,7 +608,7 @@
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
"requires": {
"is-posix-bracket": "^0.1.0"
"is-posix-bracket": "0.1.1"
}
},
"expand-range": {
@@ -617,7 +617,7 @@
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"requires": {
"fill-range": "^2.1.0"
"fill-range": "2.2.4"
}
},
"extend": {
@@ -632,7 +632,7 @@
"integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
"dev": true,
"requires": {
"kind-of": "^1.1.0"
"kind-of": "1.1.0"
}
},
"extglob": {
@@ -641,7 +641,7 @@
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
"is-extglob": "^1.0.0"
"is-extglob": "1.0.0"
},
"dependencies": {
"is-extglob": {
@@ -676,7 +676,7 @@
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
"requires": {
"pend": "~1.2.0"
"pend": "1.2.0"
}
},
"filename-regex": {
@@ -691,11 +691,11 @@
"integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
"dev": true,
"requires": {
"is-number": "^2.1.0",
"isobject": "^2.0.0",
"randomatic": "^3.0.0",
"repeat-element": "^1.1.2",
"repeat-string": "^1.5.2"
"is-number": "2.1.0",
"isobject": "2.1.0",
"randomatic": "3.1.0",
"repeat-element": "1.1.3",
"repeat-string": "1.6.1"
}
},
"first-chunk-stream": {
@@ -722,7 +722,7 @@
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"requires": {
"for-in": "^1.0.1"
"for-in": "1.0.2"
}
},
"forever-agent": {
@@ -737,9 +737,9 @@
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"asynckit": "0.4.0",
"combined-stream": "1.0.6",
"mime-types": "^2.1.12"
"mime-types": "2.1.20"
}
},
"from": {
@@ -760,10 +760,10 @@
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
"graceful-fs": "4.1.11",
"inherits": "2.0.3",
"mkdirp": "0.5.1",
"rimraf": "2.6.2"
}
},
"getpass": {
@@ -772,7 +772,7 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
"assert-plus": "1.0.0"
}
},
"glob": {
@@ -781,12 +781,12 @@
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"glob-base": {
@@ -795,8 +795,8 @@
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"dev": true,
"requires": {
"glob-parent": "^2.0.0",
"is-glob": "^2.0.0"
"glob-parent": "2.0.0",
"is-glob": "2.0.1"
},
"dependencies": {
"glob-parent": {
@@ -805,7 +805,7 @@
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"dev": true,
"requires": {
"is-glob": "^2.0.0"
"is-glob": "2.0.1"
}
},
"is-extglob": {
@@ -820,7 +820,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
"is-extglob": "^1.0.0"
"is-extglob": "1.0.0"
}
}
}
@@ -831,8 +831,8 @@
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
"is-glob": "3.1.0",
"path-dirname": "1.0.2"
}
},
"glob-stream": {
@@ -841,14 +841,14 @@
"integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
"dev": true,
"requires": {
"extend": "^3.0.0",
"glob": "^5.0.3",
"glob-parent": "^3.0.0",
"micromatch": "^2.3.7",
"ordered-read-streams": "^0.3.0",
"through2": "^0.6.0",
"to-absolute-glob": "^0.1.1",
"unique-stream": "^2.0.2"
"extend": "3.0.2",
"glob": "5.0.15",
"glob-parent": "3.1.0",
"micromatch": "2.3.11",
"ordered-read-streams": "0.3.0",
"through2": "0.6.5",
"to-absolute-glob": "0.1.1",
"unique-stream": "2.2.1"
},
"dependencies": {
"glob": {
@@ -857,11 +857,11 @@
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"isarray": {
@@ -876,10 +876,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
"string_decoder": "0.10.31"
}
},
"string_decoder": {
@@ -894,8 +894,8 @@
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
"readable-stream": "1.0.34",
"xtend": "4.0.1"
}
}
}
@@ -918,9 +918,9 @@
"integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=",
"dev": true,
"requires": {
"deep-assign": "^1.0.0",
"stat-mode": "^0.2.0",
"through2": "^2.0.0"
"deep-assign": "1.0.0",
"stat-mode": "0.2.2",
"through2": "2.0.3"
}
},
"gulp-filter": {
@@ -929,9 +929,9 @@
"integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=",
"dev": true,
"requires": {
"multimatch": "^2.0.0",
"plugin-error": "^0.1.2",
"streamfilter": "^1.0.5"
"multimatch": "2.1.0",
"plugin-error": "0.1.2",
"streamfilter": "1.0.7"
}
},
"gulp-gunzip": {
@@ -940,8 +940,8 @@
"integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=",
"dev": true,
"requires": {
"through2": "~0.6.5",
"vinyl": "~0.4.6"
"through2": "0.6.5",
"vinyl": "0.4.6"
},
"dependencies": {
"isarray": {
@@ -956,10 +956,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
"string_decoder": "0.10.31"
}
},
"string_decoder": {
@@ -974,8 +974,8 @@
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
"readable-stream": "1.0.34",
"xtend": "4.0.1"
}
}
}
@@ -986,11 +986,11 @@
"integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==",
"dev": true,
"requires": {
"event-stream": "^3.3.4",
"node.extend": "^1.1.2",
"request": "^2.79.0",
"through2": "^2.0.3",
"vinyl": "^2.0.1"
"event-stream": "3.3.6",
"node.extend": "1.1.6",
"request": "2.88.0",
"through2": "2.0.3",
"vinyl": "2.2.0"
},
"dependencies": {
"clone": {
@@ -1011,12 +1011,12 @@
"integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
"dev": true,
"requires": {
"clone": "^2.1.1",
"clone-buffer": "^1.0.0",
"clone-stats": "^1.0.0",
"cloneable-readable": "^1.0.0",
"remove-trailing-separator": "^1.0.1",
"replace-ext": "^1.0.0"
"clone": "2.1.2",
"clone-buffer": "1.0.0",
"clone-stats": "1.0.0",
"cloneable-readable": "1.1.2",
"remove-trailing-separator": "1.1.0",
"replace-ext": "1.0.0"
}
}
}
@@ -1027,11 +1027,11 @@
"integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
"dev": true,
"requires": {
"convert-source-map": "^1.1.1",
"graceful-fs": "^4.1.2",
"strip-bom": "^2.0.0",
"through2": "^2.0.0",
"vinyl": "^1.0.0"
"convert-source-map": "1.6.0",
"graceful-fs": "4.1.11",
"strip-bom": "2.0.0",
"through2": "2.0.3",
"vinyl": "1.2.0"
},
"dependencies": {
"clone": {
@@ -1052,8 +1052,8 @@
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
"clone": "1.0.4",
"clone-stats": "0.0.1",
"replace-ext": "0.0.1"
}
}
@@ -1065,10 +1065,10 @@
"integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=",
"dev": true,
"requires": {
"event-stream": "^3.3.1",
"mkdirp": "^0.5.1",
"queue": "^3.1.0",
"vinyl-fs": "^2.4.3"
"event-stream": "3.3.6",
"mkdirp": "0.5.1",
"queue": "3.1.0",
"vinyl-fs": "2.4.4"
}
},
"gulp-untar": {
@@ -1077,11 +1077,11 @@
"integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==",
"dev": true,
"requires": {
"event-stream": "~3.3.4",
"streamifier": "~0.1.1",
"tar": "^2.2.1",
"through2": "~2.0.3",
"vinyl": "^1.2.0"
"event-stream": "3.3.6",
"streamifier": "0.1.1",
"tar": "2.2.1",
"through2": "2.0.3",
"vinyl": "1.2.0"
},
"dependencies": {
"clone": {
@@ -1102,8 +1102,8 @@
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
"clone": "1.0.4",
"clone-stats": "0.0.1",
"replace-ext": "0.0.1"
}
}
@@ -1115,13 +1115,13 @@
"integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=",
"dev": true,
"requires": {
"event-stream": "^3.3.1",
"queue": "^4.2.1",
"through2": "^2.0.3",
"vinyl": "^2.0.2",
"vinyl-fs": "^2.0.0",
"yauzl": "^2.2.1",
"yazl": "^2.2.1"
"event-stream": "3.3.6",
"queue": "4.5.0",
"through2": "2.0.3",
"vinyl": "2.2.0",
"vinyl-fs": "2.4.4",
"yauzl": "2.10.0",
"yazl": "2.4.3"
},
"dependencies": {
"clone": {
@@ -1142,7 +1142,7 @@
"integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==",
"dev": true,
"requires": {
"inherits": "~2.0.0"
"inherits": "2.0.3"
}
},
"vinyl": {
@@ -1151,12 +1151,12 @@
"integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
"dev": true,
"requires": {
"clone": "^2.1.1",
"clone-buffer": "^1.0.0",
"clone-stats": "^1.0.0",
"cloneable-readable": "^1.0.0",
"remove-trailing-separator": "^1.0.1",
"replace-ext": "^1.0.0"
"clone": "2.1.2",
"clone-buffer": "1.0.0",
"clone-stats": "1.0.0",
"cloneable-readable": "1.1.2",
"remove-trailing-separator": "1.1.0",
"replace-ext": "1.0.0"
}
}
}
@@ -1173,8 +1173,8 @@
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
"ajv": "^5.3.0",
"har-schema": "^2.0.0"
"ajv": "5.5.2",
"har-schema": "2.0.0"
}
},
"has-ansi": {
@@ -1183,7 +1183,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
"ansi-regex": "2.1.1"
}
},
"has-flag": {
@@ -1204,12 +1204,12 @@
"integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
"dev": true,
"requires": {
"domelementtype": "^1.3.0",
"domhandler": "^2.3.0",
"domutils": "^1.5.1",
"entities": "^1.1.1",
"inherits": "^2.0.1",
"readable-stream": "^2.0.2"
"domelementtype": "1.3.0",
"domhandler": "2.4.2",
"domutils": "1.5.1",
"entities": "1.1.1",
"inherits": "2.0.3",
"readable-stream": "2.3.6"
}
},
"http-signature": {
@@ -1218,9 +1218,9 @@
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
"assert-plus": "1.0.0",
"jsprim": "1.4.1",
"sshpk": "1.14.2"
}
},
"inflight": {
@@ -1229,8 +1229,8 @@
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
@@ -1263,7 +1263,7 @@
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"dev": true,
"requires": {
"is-primitive": "^2.0.0"
"is-primitive": "2.0.0"
}
},
"is-extendable": {
@@ -1284,7 +1284,7 @@
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
"is-extglob": "^2.1.0"
"is-extglob": "2.1.1"
}
},
"is-number": {
@@ -1293,7 +1293,7 @@
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -1302,7 +1302,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
"is-buffer": "1.1.6"
}
}
}
@@ -1382,8 +1382,8 @@
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
"argparse": "1.0.10",
"esprima": "4.0.1"
}
},
"jsbn": {
@@ -1411,7 +1411,7 @@
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"requires": {
"jsonify": "~0.0.0"
"jsonify": "0.0.0"
}
},
"json-stringify-safe": {
@@ -1450,7 +1450,7 @@
"integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"dev": true,
"requires": {
"readable-stream": "^2.0.5"
"readable-stream": "2.3.6"
}
},
"linkify-it": {
@@ -1459,7 +1459,7 @@
"integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=",
"dev": true,
"requires": {
"uc.micro": "^1.0.1"
"uc.micro": "1.0.5"
}
},
"lodash": {
@@ -1486,11 +1486,11 @@
"integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"entities": "~1.1.1",
"linkify-it": "^2.0.0",
"mdurl": "^1.0.1",
"uc.micro": "^1.0.5"
"argparse": "1.0.10",
"entities": "1.1.1",
"linkify-it": "2.0.3",
"mdurl": "1.0.1",
"uc.micro": "1.0.5"
}
},
"math-random": {
@@ -1511,7 +1511,7 @@
"integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
"dev": true,
"requires": {
"readable-stream": "^2.0.1"
"readable-stream": "2.3.6"
}
},
"micromatch": {
@@ -1520,19 +1520,19 @@
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
"requires": {
"arr-diff": "^2.0.0",
"array-unique": "^0.2.1",
"braces": "^1.8.2",
"expand-brackets": "^0.1.4",
"extglob": "^0.3.1",
"filename-regex": "^2.0.0",
"is-extglob": "^1.0.0",
"is-glob": "^2.0.1",
"kind-of": "^3.0.2",
"normalize-path": "^2.0.1",
"object.omit": "^2.0.0",
"parse-glob": "^3.0.4",
"regex-cache": "^0.4.2"
"arr-diff": "2.0.0",
"array-unique": "0.2.1",
"braces": "1.8.5",
"expand-brackets": "0.1.5",
"extglob": "0.3.2",
"filename-regex": "2.0.1",
"is-extglob": "1.0.0",
"is-glob": "2.0.1",
"kind-of": "3.2.2",
"normalize-path": "2.1.1",
"object.omit": "2.0.1",
"parse-glob": "3.0.4",
"regex-cache": "0.4.4"
},
"dependencies": {
"arr-diff": {
@@ -1541,7 +1541,7 @@
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
"requires": {
"arr-flatten": "^1.0.1"
"arr-flatten": "1.1.0"
}
},
"is-extglob": {
@@ -1556,7 +1556,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
"is-extglob": "^1.0.0"
"is-extglob": "1.0.0"
}
},
"kind-of": {
@@ -1565,7 +1565,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
"is-buffer": "1.1.6"
}
}
}
@@ -1588,7 +1588,7 @@
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"dev": true,
"requires": {
"mime-db": "~1.36.0"
"mime-db": "1.36.0"
}
},
"minimatch": {
@@ -1597,7 +1597,7 @@
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
"brace-expansion": "1.1.11"
}
},
"minimist": {
@@ -1645,12 +1645,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
}
}
@@ -1667,10 +1667,10 @@
"integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
"dev": true,
"requires": {
"array-differ": "^1.0.0",
"array-union": "^1.0.1",
"arrify": "^1.0.0",
"minimatch": "^3.0.0"
"array-differ": "1.0.0",
"array-union": "1.0.2",
"arrify": "1.0.1",
"minimatch": "3.0.4"
}
},
"mute-stream": {
@@ -1685,7 +1685,7 @@
"integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=",
"dev": true,
"requires": {
"is": "^3.1.0"
"is": "3.2.1"
}
},
"normalize-path": {
@@ -1694,7 +1694,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
"remove-trailing-separator": "^1.0.1"
"remove-trailing-separator": "1.1.0"
}
},
"nth-check": {
@@ -1703,7 +1703,7 @@
"integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
"dev": true,
"requires": {
"boolbase": "~1.0.0"
"boolbase": "1.0.0"
}
},
"oauth-sign": {
@@ -1724,8 +1724,8 @@
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"dev": true,
"requires": {
"for-own": "^0.1.4",
"is-extendable": "^0.1.1"
"for-own": "0.1.5",
"is-extendable": "0.1.1"
}
},
"once": {
@@ -1734,7 +1734,7 @@
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
"wrappy": "1.0.2"
}
},
"ordered-read-streams": {
@@ -1743,8 +1743,8 @@
"integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
"dev": true,
"requires": {
"is-stream": "^1.0.1",
"readable-stream": "^2.0.1"
"is-stream": "1.1.0",
"readable-stream": "2.3.6"
}
},
"os-homedir": {
@@ -1765,8 +1765,8 @@
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
"os-homedir": "1.0.2",
"os-tmpdir": "1.0.2"
}
},
"parse-glob": {
@@ -1775,10 +1775,10 @@
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"dev": true,
"requires": {
"glob-base": "^0.3.0",
"is-dotfile": "^1.0.0",
"is-extglob": "^1.0.0",
"is-glob": "^2.0.0"
"glob-base": "0.3.0",
"is-dotfile": "1.0.3",
"is-extglob": "1.0.0",
"is-glob": "2.0.1"
},
"dependencies": {
"is-extglob": {
@@ -1793,7 +1793,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
"is-extglob": "^1.0.0"
"is-extglob": "1.0.0"
}
}
}
@@ -1804,7 +1804,7 @@
"integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=",
"dev": true,
"requires": {
"semver": "^5.1.0"
"semver": "5.5.1"
}
},
"parse5": {
@@ -1813,7 +1813,7 @@
"integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
"dev": true,
"requires": {
"@types/node": "*"
"@types/node": "8.10.34"
}
},
"path-dirname": {
@@ -1840,7 +1840,7 @@
"integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
"dev": true,
"requires": {
"through": "~2.3"
"through": "2.3.8"
}
},
"pend": {
@@ -1861,11 +1861,11 @@
"integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
"dev": true,
"requires": {
"ansi-cyan": "^0.1.1",
"ansi-red": "^0.1.1",
"arr-diff": "^1.0.1",
"arr-union": "^2.0.1",
"extend-shallow": "^1.1.2"
"ansi-cyan": "0.1.1",
"ansi-red": "0.1.1",
"arr-diff": "1.1.0",
"arr-union": "2.1.0",
"extend-shallow": "1.1.4"
}
},
"preserve": {
@@ -1922,7 +1922,7 @@
"integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=",
"dev": true,
"requires": {
"inherits": "~2.0.0"
"inherits": "2.0.3"
}
},
"randomatic": {
@@ -1931,9 +1931,9 @@
"integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
"dev": true,
"requires": {
"is-number": "^4.0.0",
"kind-of": "^6.0.0",
"math-random": "^1.0.1"
"is-number": "4.0.0",
"kind-of": "6.0.2",
"math-random": "1.0.1"
},
"dependencies": {
"is-number": {
@@ -1956,7 +1956,7 @@
"integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
"dev": true,
"requires": {
"mute-stream": "~0.0.4"
"mute-stream": "0.0.7"
}
},
"readable-stream": {
@@ -1965,13 +1965,13 @@
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.2",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
}
},
"regex-cache": {
@@ -1980,7 +1980,7 @@
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
"dev": true,
"requires": {
"is-equal-shallow": "^0.1.3"
"is-equal-shallow": "0.1.3"
}
},
"remove-trailing-separator": {
@@ -2013,26 +2013,26 @@
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
"aws-sign2": "0.7.0",
"aws4": "1.8.0",
"caseless": "0.12.0",
"combined-stream": "1.0.6",
"extend": "3.0.2",
"forever-agent": "0.6.1",
"form-data": "2.3.2",
"har-validator": "5.1.0",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.20",
"oauth-sign": "0.9.0",
"performance-now": "2.1.0",
"qs": "6.5.2",
"safe-buffer": "5.1.2",
"tough-cookie": "2.4.3",
"tunnel-agent": "0.6.0",
"uuid": "3.3.2"
}
},
"requires-port": {
@@ -2047,7 +2047,7 @@
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"dev": true,
"requires": {
"path-parse": "^1.0.5"
"path-parse": "1.0.6"
}
},
"rimraf": {
@@ -2056,7 +2056,7 @@
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "^7.0.5"
"glob": "7.1.3"
}
},
"safe-buffer": {
@@ -2089,8 +2089,8 @@
"integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
"buffer-from": "1.1.1",
"source-map": "0.6.1"
}
},
"split": {
@@ -2099,7 +2099,7 @@
"integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"dev": true,
"requires": {
"through": "2"
"through": "2.3.8"
}
},
"sprintf-js": {
@@ -2114,15 +2114,15 @@
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
"dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
"asn1": "0.2.4",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.2",
"dashdash": "1.14.1",
"ecc-jsbn": "0.1.2",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"safer-buffer": "2.1.2",
"tweetnacl": "0.14.5"
}
},
"stat-mode": {
@@ -2137,8 +2137,8 @@
"integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
"dev": true,
"requires": {
"duplexer": "~0.1.1",
"through": "~2.3.4"
"duplexer": "0.1.1",
"through": "2.3.8"
}
},
"stream-shift": {
@@ -2153,7 +2153,7 @@
"integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==",
"dev": true,
"requires": {
"readable-stream": "^2.0.2"
"readable-stream": "2.3.6"
}
},
"streamifier": {
@@ -2168,7 +2168,7 @@
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
"safe-buffer": "5.1.2"
}
},
"strip-ansi": {
@@ -2177,7 +2177,7 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
"ansi-regex": "2.1.1"
}
},
"strip-bom": {
@@ -2186,7 +2186,7 @@
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
"is-utf8": "0.2.1"
}
},
"strip-bom-stream": {
@@ -2195,8 +2195,8 @@
"integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
"dev": true,
"requires": {
"first-chunk-stream": "^1.0.0",
"strip-bom": "^2.0.0"
"first-chunk-stream": "1.0.0",
"strip-bom": "2.0.0"
}
},
"supports-color": {
@@ -2205,7 +2205,7 @@
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
"dev": true,
"requires": {
"has-flag": "^2.0.0"
"has-flag": "2.0.0"
}
},
"tar": {
@@ -2214,9 +2214,9 @@
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"dev": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
"block-stream": "0.0.9",
"fstream": "1.0.11",
"inherits": "2.0.3"
}
},
"through": {
@@ -2231,8 +2231,8 @@
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"dev": true,
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
"readable-stream": "2.3.6",
"xtend": "4.0.1"
}
},
"through2-filter": {
@@ -2241,8 +2241,8 @@
"integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
"dev": true,
"requires": {
"through2": "~2.0.0",
"xtend": "~4.0.0"
"through2": "2.0.3",
"xtend": "4.0.1"
}
},
"tmp": {
@@ -2251,7 +2251,7 @@
"integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
"dev": true,
"requires": {
"os-tmpdir": "~1.0.1"
"os-tmpdir": "1.0.2"
}
},
"to-absolute-glob": {
@@ -2260,7 +2260,7 @@
"integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1"
"extend-shallow": "2.0.1"
},
"dependencies": {
"extend-shallow": {
@@ -2269,7 +2269,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
"is-extendable": "0.1.1"
}
}
}
@@ -2280,8 +2280,8 @@
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
"psl": "1.1.29",
"punycode": "1.4.1"
}
},
"tslib": {
@@ -2296,18 +2296,18 @@
"integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
"dev": true,
"requires": {
"babel-code-frame": "^6.22.0",
"builtin-modules": "^1.1.1",
"chalk": "^2.3.0",
"commander": "^2.12.1",
"diff": "^3.2.0",
"glob": "^7.1.1",
"js-yaml": "^3.7.0",
"minimatch": "^3.0.4",
"resolve": "^1.3.2",
"semver": "^5.3.0",
"tslib": "^1.8.0",
"tsutils": "^2.27.2"
"babel-code-frame": "6.26.0",
"builtin-modules": "1.1.1",
"chalk": "2.4.1",
"commander": "2.18.0",
"diff": "3.3.1",
"glob": "7.1.3",
"js-yaml": "3.12.0",
"minimatch": "3.0.4",
"resolve": "1.8.1",
"semver": "5.5.1",
"tslib": "1.9.3",
"tsutils": "2.29.0"
}
},
"tslint-config-prettier": {
@@ -2322,7 +2322,7 @@
"integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
"dev": true,
"requires": {
"tslib": "^1.8.1"
"tslib": "1.9.3"
}
},
"tunnel": {
@@ -2337,7 +2337,7 @@
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
"safe-buffer": "5.1.2"
}
},
"tweetnacl": {
@@ -2389,8 +2389,8 @@
"integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
"dev": true,
"requires": {
"json-stable-stringify": "^1.0.0",
"through2-filter": "^2.0.0"
"json-stable-stringify": "1.0.1",
"through2-filter": "2.0.0"
}
},
"url-join": {
@@ -2405,8 +2405,8 @@
"integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
"dev": true,
"requires": {
"querystringify": "^2.0.0",
"requires-port": "^1.0.0"
"querystringify": "2.0.0",
"requires-port": "1.0.0"
}
},
"util-deprecate": {
@@ -2433,9 +2433,9 @@
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"assert-plus": "1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
"extsprintf": "1.3.0"
}
},
"vinyl": {
@@ -2444,8 +2444,8 @@
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"dev": true,
"requires": {
"clone": "^0.2.0",
"clone-stats": "^0.0.1"
"clone": "0.2.0",
"clone-stats": "0.0.1"
}
},
"vinyl-fs": {
@@ -2454,23 +2454,23 @@
"integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
"dev": true,
"requires": {
"duplexify": "^3.2.0",
"glob-stream": "^5.3.2",
"graceful-fs": "^4.0.0",
"duplexify": "3.6.0",
"glob-stream": "5.3.5",
"graceful-fs": "4.1.11",
"gulp-sourcemaps": "1.6.0",
"is-valid-glob": "^0.3.0",
"lazystream": "^1.0.0",
"lodash.isequal": "^4.0.0",
"merge-stream": "^1.0.0",
"mkdirp": "^0.5.0",
"object-assign": "^4.0.0",
"readable-stream": "^2.0.4",
"strip-bom": "^2.0.0",
"strip-bom-stream": "^1.0.0",
"through2": "^2.0.0",
"through2-filter": "^2.0.0",
"vali-date": "^1.0.0",
"vinyl": "^1.0.0"
"is-valid-glob": "0.3.0",
"lazystream": "1.0.0",
"lodash.isequal": "4.5.0",
"merge-stream": "1.0.1",
"mkdirp": "0.5.1",
"object-assign": "4.1.1",
"readable-stream": "2.3.6",
"strip-bom": "2.0.0",
"strip-bom-stream": "1.0.0",
"through2": "2.0.3",
"through2-filter": "2.0.0",
"vali-date": "1.0.0",
"vinyl": "1.2.0"
},
"dependencies": {
"clone": {
@@ -2491,8 +2491,8 @@
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
"clone": "1.0.4",
"clone-stats": "0.0.1",
"replace-ext": "0.0.1"
}
}
@@ -2504,8 +2504,8 @@
"integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=",
"dev": true,
"requires": {
"through2": "^2.0.3",
"vinyl": "^0.4.3"
"through2": "2.0.3",
"vinyl": "0.4.6"
}
},
"vsce": {
@@ -2514,23 +2514,23 @@
"integrity": "sha512-Hf2HE9O/MRQHxUUgWHAm7mOkz0K5swuF2smaE/sP7+OWp/5DdIPFwmLEYCCZHxG25l3GBRoO0dAL8S5w//et+g==",
"dev": true,
"requires": {
"cheerio": "^1.0.0-rc.1",
"commander": "^2.8.1",
"denodeify": "^1.2.1",
"glob": "^7.0.6",
"lodash": "^4.17.10",
"markdown-it": "^8.3.1",
"mime": "^1.3.4",
"minimatch": "^3.0.3",
"osenv": "^0.1.3",
"parse-semver": "^1.1.1",
"read": "^1.0.7",
"semver": "^5.1.0",
"cheerio": "1.0.0-rc.2",
"commander": "2.18.0",
"denodeify": "1.2.1",
"glob": "7.1.3",
"lodash": "4.17.11",
"markdown-it": "8.4.2",
"mime": "1.6.0",
"minimatch": "3.0.4",
"osenv": "0.1.5",
"parse-semver": "1.1.1",
"read": "1.0.7",
"semver": "5.5.1",
"tmp": "0.0.29",
"url-join": "^1.1.0",
"url-join": "1.1.0",
"vso-node-api": "6.1.2-preview",
"yauzl": "^2.3.1",
"yazl": "^2.2.2"
"yauzl": "2.10.0",
"yazl": "2.4.3"
}
},
"vscode": {
@@ -2539,20 +2539,20 @@
"integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==",
"dev": true,
"requires": {
"glob": "^7.1.2",
"gulp-chmod": "^2.0.0",
"gulp-filter": "^5.0.1",
"glob": "7.1.3",
"gulp-chmod": "2.0.0",
"gulp-filter": "5.1.0",
"gulp-gunzip": "1.0.0",
"gulp-remote-src-vscode": "^0.5.0",
"gulp-symdest": "^1.1.0",
"gulp-untar": "^0.0.7",
"gulp-vinyl-zip": "^2.1.0",
"mocha": "^4.0.1",
"request": "^2.83.0",
"semver": "^5.4.1",
"source-map-support": "^0.5.0",
"url-parse": "^1.4.3",
"vinyl-source-stream": "^1.1.0"
"gulp-remote-src-vscode": "0.5.0",
"gulp-symdest": "1.1.0",
"gulp-untar": "0.0.7",
"gulp-vinyl-zip": "2.1.0",
"mocha": "4.1.0",
"request": "2.88.0",
"semver": "5.5.1",
"source-map-support": "0.5.9",
"url-parse": "1.4.3",
"vinyl-source-stream": "1.1.2"
}
},
"vscode-jsonrpc": {
@@ -2565,7 +2565,7 @@
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.4.2.tgz",
"integrity": "sha512-9TUzsg1UM6n1UEyPlWbDf7tK1wJAK7UGFRmGDN8sz4KmbbDiVRh6YicaB/5oRSVTpuV47PdJpYlOl3SJ0RiK1Q==",
"requires": {
"vscode-languageserver-protocol": "^3.10.3"
"vscode-languageserver-protocol": "3.13.0"
}
},
"vscode-languageserver-protocol": {
@@ -2573,7 +2573,7 @@
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz",
"integrity": "sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==",
"requires": {
"vscode-jsonrpc": "^4.0.0",
"vscode-jsonrpc": "4.0.0",
"vscode-languageserver-types": "3.13.0"
}
},
@@ -2588,10 +2588,10 @@
"integrity": "sha1-qrNUbfJFHs2JTgcbuZtd8Zxfp48=",
"dev": true,
"requires": {
"q": "^1.0.1",
"q": "1.5.1",
"tunnel": "0.0.4",
"typed-rest-client": "^0.9.0",
"underscore": "^1.8.3"
"typed-rest-client": "0.9.0",
"underscore": "1.9.1"
}
},
"wrappy": {
@@ -2612,8 +2612,8 @@
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
"requires": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
"buffer-crc32": "0.2.13",
"fd-slicer": "1.1.0"
}
},
"yazl": {
@@ -2622,7 +2622,7 @@
"integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=",
"dev": true,
"requires": {
"buffer-crc32": "~0.2.3"
"buffer-crc32": "0.2.13"
}
}
}
+3 -1
View File
@@ -2,6 +2,7 @@ import * as applySourceChange from './apply_source_change';
import * as extendSelection from './extend_selection';
import * as joinLines from './join_lines';
import * as matchingBrace from './matching_brace';
import * as on_enter from './on_enter';
import * as parentModule from './parent_module';
import * as runnables from './runnables';
import * as syntaxTree from './syntaxTree';
@@ -13,5 +14,6 @@ export {
matchingBrace,
parentModule,
runnables,
syntaxTree
syntaxTree,
on_enter,
};
+29
View File
@@ -0,0 +1,29 @@
import * as vscode from 'vscode';
import * as lc from 'vscode-languageclient';
import { Server } from '../server';
import { handle as applySourceChange, SourceChange } from './apply_source_change';
interface OnEnterParams {
textDocument: lc.TextDocumentIdentifier;
position: lc.Position;
}
export async function handle(event: { text: string }): Promise<boolean> {
const editor = vscode.window.activeTextEditor;
if (editor == null || editor.document.languageId !== 'rust' || event.text !== '\n') {
return false;
}
const request: OnEnterParams = {
textDocument: { uri: editor.document.uri.toString() },
position: Server.client.code2ProtocolConverter.asPosition(editor.selection.active),
};
const change = await Server.client.sendRequest<undefined | SourceChange>(
'm/onEnter',
request
);
if (!change) {
return false;
}
await applySourceChange(change);
return true
}
+19 -1
View File
@@ -15,6 +15,23 @@ export function activate(context: vscode.ExtensionContext) {
function registerCommand(name: string, f: any) {
disposeOnDeactivation(vscode.commands.registerCommand(name, f));
}
function overrideCommand(
name: string,
f: (...args: any[]) => Promise<boolean>,
) {
const defaultCmd = `default:${name}`;
const original = async (...args: any[]) => await vscode.commands.executeCommand(defaultCmd, ...args);
registerCommand(name, async (...args: any[]) => {
const editor = vscode.window.activeTextEditor;
if (!editor || !editor.document || editor.document.languageId !== 'rust') {
return await original(...args);
}
if (!await f(...args)) {
return await original(...args);
}
})
}
// Commands are requests from vscode to the language server
registerCommand('ra-lsp.syntaxTree', commands.syntaxTree.handle);
@@ -27,11 +44,12 @@ export function activate(context: vscode.ExtensionContext) {
'ra-lsp.applySourceChange',
commands.applySourceChange.handle
);
overrideCommand('type', commands.on_enter.handle)
// Notifications are events triggered by the language server
const allNotifications: Iterable<
[string, lc.GenericNotificationHandler]
> = [['m/publishDecorations', notifications.publishDecorations.handle]];
> = [['m/publishDecorations', notifications.publishDecorations.handle]];
// The events below are plain old javascript events, triggered and handled by vscode
vscode.window.onDidChangeActiveTextEditor(