From aacad999c468c4a5b9ad7b6d3a87e0ec4aceeff5 Mon Sep 17 00:00:00 2001 From: Alexandros Naskos Date: Tue, 12 May 2020 19:59:16 +0300 Subject: [PATCH 1/2] Made function snippet generation better. --- src/analysis.zig | 29 ++++++++++++++++++++++++----- src/main.zig | 2 ++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/analysis.zig b/src/analysis.zig index e5c3c0e..98bc7c2 100644 --- a/src/analysis.zig +++ b/src/analysis.zig @@ -88,22 +88,41 @@ pub fn getFunctionSnippet(allocator: *std.mem.Allocator, tree: *ast.Tree, func: var param_it = func.params.iterator(0); while (param_it.next()) |param_ptr| : (param_num += 1) { const param = param_ptr.*; + const param_decl = param.cast(ast.Node.ParamDecl).?; if (param_num != 1) try buffer.appendSlice(", ${") else try buffer.appendSlice("${"); try buf_stream.print("{}:", .{param_num}); - var curr_tok = param.firstToken(); - const end_tok = param.lastToken(); - var first_tok = true; + if (param_decl.comptime_token) |_| { + try buffer.appendSlice("comptime "); + } + + if (param_decl.noalias_token) |_| { + try buffer.appendSlice("noalias "); + } + + if (param_decl.name_token) |name_token| { + try buffer.appendSlice(tree.tokenSlice(name_token)); + try buffer.appendSlice(": "); + } + + if (param_decl.var_args_token) |_| { + try buffer.appendSlice("..."); + } + + var curr_tok = param_decl.type_node.firstToken(); + var end_tok = param_decl.type_node.lastToken(); while (curr_tok <= end_tok) : (curr_tok += 1) { try buffer.appendSlice(tree.tokenSlice(curr_tok)); - if (!first_tok and curr_tok != end_tok) try buffer.append(' ') - else first_tok = false; + if (tree.tokens.at(curr_tok).id == .Comma) try buffer.append(' '); } try buffer.append('}'); + if (param_it.peek() != null) { + try buffer.appendSlice(", "); + } } try buffer.append(')'); diff --git a/src/main.zig b/src/main.zig index 59bb7ac..6234a74 100644 --- a/src/main.zig +++ b/src/main.zig @@ -253,6 +253,8 @@ fn completeGlobal(id: i64, document: *types.TextDocument, config: Config) !void else null; + if (insert_text != null) try log("SNIP: {}", .{insert_text}); + var doc_comments = try analysis.getDocComments(&arena.allocator, tree, decl); var doc = types.MarkupContent{ .kind = .Markdown, From 4f2828f9cb9e77ce4689c3b548fd9a0720d79d54 Mon Sep 17 00:00:00 2001 From: Alexandros Naskos Date: Tue, 12 May 2020 20:02:22 +0300 Subject: [PATCH 2/2] Removed debug log --- src/main.zig | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main.zig b/src/main.zig index 6234a74..59bb7ac 100644 --- a/src/main.zig +++ b/src/main.zig @@ -253,8 +253,6 @@ fn completeGlobal(id: i64, document: *types.TextDocument, config: Config) !void else null; - if (insert_text != null) try log("SNIP: {}", .{insert_text}); - var doc_comments = try analysis.getDocComments(&arena.allocator, tree, decl); var doc = types.MarkupContent{ .kind = .Markdown,