From b474b694d092b950e0aafce410bd3c5d9e195d25 Mon Sep 17 00:00:00 2001 From: danymat Date: Mon, 10 Jan 2022 16:26:33 +0100 Subject: [PATCH] feat(js) Add `type` annotation --- README.md | 4 ++-- lua/neogen/configurations/javascript.lua | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fd76725..33c5c58 100644 --- a/README.md +++ b/README.md @@ -182,8 +182,8 @@ There is a list of supported languages and fields, with their annotation style | python | | | `func`, `class`, `file` | | | [Google docstrings](https://google.github.io/styleguide/pyguide.html) (`"google_docstrings"`) | `Args`, `Attributes`, `Returns` | | | [Numpydoc](https://numpydoc.readthedocs.io/en/latest/format.html) (`"numpydoc"`)| `Arguments`, `Attributes`, `Returns`| -| javascript | | | `func`, `class`, `file`| -| | [JSDoc](https://jsdoc.app) (`"jsdoc"`) | `@param`, `@returns`, `@class`, `@classdesc`, `@module`| +| javascript | | | `func`, `class`, `file`, `type`| +| | [JSDoc](https://jsdoc.app) (`"jsdoc"`) | `@param`, `@returns`, `@class`, `@classdesc`, `@module`, `@type`| | typescript | | | `func`, `class`, `file`, `type` | | | [JSDoc](https://jsdoc.app) (`"jsdoc"`) | `@param`, `@returns`, `@class`, `@classdesc`, `@type`, `@module`| | c | | | `func`, `file`| diff --git a/lua/neogen/configurations/javascript.lua b/lua/neogen/configurations/javascript.lua index c564353..f1c134f 100644 --- a/lua/neogen/configurations/javascript.lua +++ b/lua/neogen/configurations/javascript.lua @@ -26,6 +26,7 @@ return { }, class = { "function_declaration", "expression_statement", "variable_declaration", "class_declaration" }, file = { "program" }, + type = { "variable_declaration", "lexical_declaration" }, }, data = { @@ -95,6 +96,15 @@ return { }, }, }, + type = { + ["variable_declaration|lexical_declaration"] = { + ["0"] = { + extract = function() + return {} + end, + }, + }, + }, }, template = { @@ -103,16 +113,17 @@ return { jsdoc = { { nil, "/* $1 */", { no_results = true, type = { "func", "class" } } }, + { nil, "/* @type $1 */", { no_results = true, type = { "type" } } }, { nil, "/**", { no_results = true, type = { "file" } } }, { nil, " * @module $1", { no_results = true, type = { "file" } } }, { nil, " */", { no_results = true, type = { "file" } } }, - { nil, "/**" }, + { nil, "/**", { type = { "class", "func" } } }, { "class_tag", " * @classdesc $1", { before_first_item = { " * ", " * @class" }, type = { "class" } } }, - { "parameters", " * @param {any} %s $1" }, - { "return_statement", " * @returns {$1|any}" }, - { nil, " */" }, + { "parameters", " * @param {any} %s $1", { type = { "func" } } }, + { "return_statement", " * @returns {$1|any}", { type = { "func" } } }, + { nil, " */", { type = { "class", "func" } } }, }, }, }