ref: Make annotation API private in favor of neogen.setup (#66)

This commit is contained in:
danymat
2022-02-11 11:41:50 +01:00
parent c4b5638264
commit 75d306e19d
2 changed files with 27 additions and 28 deletions

View File

@@ -89,13 +89,14 @@ end
---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section) ---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section)
---@text # Notes~ ---@text # Notes~
--- ---
--- - to configure a language, just add your configurations in the `languages` table --- - to configure a language, just add your configurations in the `languages` table.
--- For example, for the `lua` lang: --- For example, for the `lua` lang:
--- > --- >
--- languages = { --- languages = {
--- lua = { -- Configuration here } --- lua = { -- Configuration here }
--- } --- }
--- < --- <
--- Default configurations for a languages can be found in `lua/neogen/configurations/<you_language>.lua`
--- ---
---@toc_entry Configure the setup ---@toc_entry Configure the setup
---@tag neogen-configuration ---@tag neogen-configuration
@@ -140,6 +141,7 @@ neogen.match_commands = helpers.match_commands
--- Get a template for a particular filetype --- Get a template for a particular filetype
---@param filetype? string ---@param filetype? string
---@return neogen.TemplateConfig? ---@return neogen.TemplateConfig?
---@private
neogen.get_template = function(filetype) neogen.get_template = function(filetype)
local template local template
local ft_conf = filetype and conf.languages[filetype] or conf.languages[vim.bo.filetype] local ft_conf = filetype and conf.languages[filetype] or conf.languages[vim.bo.filetype]
@@ -195,17 +197,21 @@ end
---@tag neogen-develop ---@tag neogen-develop
---@toc_entry Contributing ---@toc_entry Contributing
--- We use semantic versioning ! (https://semver.org)
--- Here is the current Neogen version: --- Here is the current Neogen version:
---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section) ---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section)
---@text # Changelog~ ---@text # Changelog~
--- ---
--- ## 2.0.0~
--- - We made the template API private, only for initial template configuration.
--- If you want to make a change to a template, please see:
--- |neogen-template-configuration| and |neogen-annotation|
--- ## 1.0.0~ --- ## 1.0.0~
--- - Neogen is officially out ! We support 16 languages as of right now, --- - Neogen is officially out ! We support 16 languages as of right now,
--- with multiple annotation conventions. --- with multiple annotation conventions.
---@tag neogen-changelog ---@tag neogen-changelog
---@toc_entry Changes in neogen plugin ---@toc_entry Changes in neogen plugin
neogen.version = "1.0.0" neogen.version = "2.0.0"
--minidoc_afterlines_end --minidoc_afterlines_end
return neogen return neogen

View File

@@ -5,9 +5,6 @@
--- as well as providing custom configurations in order to be precise about --- as well as providing custom configurations in order to be precise about
--- how to customize the annotations. --- how to customize the annotations.
--- ---
--- We exposed some API to help you customize a template, and add your own custom annotations
--- For this, please go to |neogen.template_api|
---
---@type neogen.TemplateConfig ---@type neogen.TemplateConfig
--- ---
--- Default values: --- Default values:
@@ -66,28 +63,11 @@ local neogen_template = {
--- < --- <
-- TODO: Add section to tell about annotation convention -- TODO: Add section to tell about annotation convention
--- # Templates API~
---
--- Welcome to the neogen API section for templates.
---
--- A template is an entity relative to a filetype that holds configurations for how to place
--- annotations.
--- With it, you can add an annotation convention to a filetype, change defaults,
--- and even provide your own annotation convention !
--- I exposed some API's, available after you get a template.
--- Please see |neogen.get_template()| for how to get a template.
---
--- Example:
--- >
--- neogen.get_template("python"):config({ annotation_convention = ... })
--- <
---@tag neogen-template-api
---@toc_entry API to customize templates
--- Updates a template configuration --- Updates a template configuration
---@signature <template_obj>:config(tbl) ---@signature <template_obj>:config(tbl)
---@param tbl neogen.TemplateConfig Override the template with provided config ---@param tbl neogen.TemplateConfig Override the template with provided config
---@tag neogen-template-api.config() ---@tag neogen-template-api.config()
---@private
neogen_template.config = function(self, tbl) neogen_template.config = function(self, tbl)
self = vim.tbl_extend("force", self, tbl) self = vim.tbl_extend("force", self, tbl)
return self return self
@@ -97,6 +77,7 @@ end
---@signature <template_obj>:add_annotation(name) ---@signature <template_obj>:add_annotation(name)
---@param name string The name of the annotation convention ---@param name string The name of the annotation convention
---@tag neogen-template-api.add_annotation() ---@tag neogen-template-api.add_annotation()
---@private
neogen_template.add_annotation = function(self, name) neogen_template.add_annotation = function(self, name)
local ok, _t = pcall(require, "neogen.templates." .. name) local ok, _t = pcall(require, "neogen.templates." .. name)
@@ -112,6 +93,7 @@ end
---@signature <template_obj>:add_default_annotation(name) ---@signature <template_obj>:add_default_annotation(name)
---@param name string The name of the annotation convention ---@param name string The name of the annotation convention
---@tag neogen-template-api.add_default_annotation() ---@tag neogen-template-api.add_default_annotation()
---@private
neogen_template.add_default_annotation = function(self, name) neogen_template.add_default_annotation = function(self, name)
self.annotation_convention = name self.annotation_convention = name
self = self:add_annotation(name) self = self:add_annotation(name)
@@ -123,6 +105,7 @@ end
---@param annotation table The annotation template (see |neogen-annotation|) ---@param annotation table The annotation template (see |neogen-annotation|)
---@param default? boolean Marks the annotation as default one ---@param default? boolean Marks the annotation as default one
---@tag neogen-template-api.add_custom_annotation() ---@tag neogen-template-api.add_custom_annotation()
---@private
neogen_template.add_custom_annotation = function(self, name, annotation, default) neogen_template.add_custom_annotation = function(self, name, annotation, default)
if default == true then if default == true then
self.annotation_convention = name self.annotation_convention = name
@@ -177,7 +160,7 @@ end
--- `-@param hello ` (will a parameter named `hello`) --- `-@param hello ` (will a parameter named `hello`)
--- ---
--- - The third item is a `table` (optional), and are the local options for the line. --- - The third item is a `table` (optional), and are the local options for the line.
--- See below (`neogen.AnnotationLine.Opts`) for more information --- See below (`neogen.AnnotationLine.Opts`) for more information on what is required
--- ---
--- Now that you know every field, let's see how we could generate a basic annotation for a python function: --- Now that you know every field, let's see how we could generate a basic annotation for a python function:
--- > --- >
@@ -201,9 +184,19 @@ end
--- } --- }
--- < --- <
--- We recommend you look into the the content of `neogen/templates` for a list of the default annotation conventions. --- We recommend you look into the the content of `neogen/templates` for a list of the default annotation conventions.
--- Last step, if you want to use your own annotation convention for a language, you can use the API : ---
--- `neogen.get_template("python"):add_custom_annotation("my_annotation", annotation, true)` --- Last step, if you want to use your own annotation convention for a language:
--- (see |neogen-template-api| for more details) --- >
--- require('neogen').setup {
--- languages = {
--- python = {
--- template = {
--- annotation_convention = "my_annotation",
--- my_annotation = annotation
--- }
--- }
--- }
--- <
---@tag neogen-annotation ---@tag neogen-annotation
---@toc_entry How to create/customize an annotation ---@toc_entry How to create/customize an annotation