codecompletion

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2024 License: MIT Imports: 25 Imported by: 0

README

Code Completion

This package implements completion for Inoxlang code. The main API is the FindCompletions function and the Completion type. There are several completion modes:

  • ShellCompletions - used by the REPL
  • LspCompletions - used by the project (LSP) server

Documentation

Index

Constants

View Source
const (
	MAJOR_PERM_KIND_TEXT = "major permission kind"
	MINOR_PERM_KIND_TEXT = "minor permission kind"
)

Variables

View Source
var (
	CONTEXT_INDEPENDENT_STMT_STARTING_KEYWORDS                   = []string{"if", "drop-perms", "for", "assign", "switch", "match", "return", "assert"}
	GLOBALNAMES_WITHOUT_IDENT_CONVERSION_TO_VAR_IN_CMD_LIKE_CALL = []string{globalnames.HELP_FN}
)
View Source
var (
	MANIFEST_SECTION_DEFAULT_VALUE_COMPLETIONS = map[string]string{
		core.MANIFEST_ENV_SECTION_NAME:              "%{}",
		core.MANIFEST_DATABASES_SECTION_NAME:        "{}",
		core.MANIFEST_PARAMS_SECTION_NAME:           "{}",
		core.MANIFEST_PERMS_SECTION_NAME:            "{}",
		core.MANIFEST_LIMITS_SECTION_NAME:           "{}",
		core.MANIFEST_HOST_DEFINITIONS_SECTION_NAME: ":{}",
		core.MANIFEST_PREINIT_FILES_SECTION_NAME:    "{}",
	}

	MANIFEST_SECTION_DOC = map[string]string{
		core.MANIFEST_PARAMS_SECTION_NAME:    utils.MustGet(help.HelpFor("manifest/parameters-section", helpMessageConfig)),
		core.MANIFEST_ENV_SECTION_NAME:       utils.MustGet(help.HelpFor("manifest/env-section", helpMessageConfig)),
		core.MANIFEST_PERMS_SECTION_NAME:     utils.MustGet(help.HelpFor("manifest/permissions-section", helpMessageConfig)),
		core.MANIFEST_DATABASES_SECTION_NAME: utils.MustGet(help.HelpFor("manifest/databases-section", helpMessageConfig)),
	}

	MANIFEST_DB_DESC_DEFAULT_VALUE_COMPLETIONS = map[string]string{
		core.MANIFEST_DATABASE__RESOURCE_PROP_NAME:               "ldb://main  # (example) local database named 'main'",
		core.MANIFEST_DATABASE__RESOLUTION_DATA_PROP_NAME:        "nil",
		core.MANIFEST_DATABASE__EXPECTED_SCHEMA_UPDATE_PROP_NAME: "false  # should be set to true if the module performs a schema update (update_schema call)",
		core.MANIFEST_DATABASE__ASSERT_SCHEMA_UPDATE_PROP_NAME:   "# object pattern to check the actual schema against",
	}

	MANIFEST_DB_DESC_DOC = map[string]string{
		core.MANIFEST_DATABASE__RESOURCE_PROP_NAME:               utils.MustGet(help.HelpFor("manifest/databases-section/resource", helpMessageConfig)),
		core.MANIFEST_DATABASE__RESOLUTION_DATA_PROP_NAME:        utils.MustGet(help.HelpFor("manifest/databases-section/resolution-data", helpMessageConfig)),
		core.MANIFEST_DATABASE__EXPECTED_SCHEMA_UPDATE_PROP_NAME: utils.MustGet(help.HelpFor("manifest/databases-section/expected-schema-update", helpMessageConfig)),
		core.MANIFEST_DATABASE__ASSERT_SCHEMA_UPDATE_PROP_NAME:   utils.MustGet(help.HelpFor("manifest/databases-section/assert-schema", helpMessageConfig)),
	}

	MODULE_IMPORT_SECTION_DEFAULT_VALUE_COMPLETIONS = map[string]string{
		core.IMPORT_CONFIG__ALLOW_PROPNAME:     "{}",
		core.IMPORT_CONFIG__ARGUMENTS_PROPNAME: "{}",
	}

	MODULE_IMPORT_SECTION_DOC = map[string]string{
		core.IMPORT_CONFIG__ALLOW_PROPNAME:     utils.MustGet(help.HelpFor("module-import-config/allow-section", helpMessageConfig)),
		core.IMPORT_CONFIG__ARGUMENTS_PROPNAME: utils.MustGet(help.HelpFor("module-import-config/arguments-section", helpMessageConfig)),
	}

	MODULE_IMPORT_SECTION_LABEL_DETAILS = map[string]string{
		core.IMPORT_CONFIG__ALLOW_PROPNAME:      "granted permissions",
		core.IMPORT_CONFIG__ARGUMENTS_PROPNAME:  "module arguments",
		core.IMPORT_CONFIG__VALIDATION_PROPNAME: "validation string (base64 encoded sha256 hash)",
	}

	LTHREAD_META_SECTION_LABEL_DETAILS = map[string]string{
		symbolic.LTHREAD_META_ALLOW_SECTION:   "granted permissions",
		symbolic.LTHREAD_META_GLOBALS_SECTION: "globals of embedded module",
		symbolic.LTHREAD_META_GROUP_SECTION:   "group the lthread will be added to",
	}

	LTHREAD_META_SECTION_DOC = map[string]string{
		symbolic.LTHREAD_META_ALLOW_SECTION:   utils.MustGet(help.HelpFor("lthreads/allow-section", helpMessageConfig)),
		symbolic.LTHREAD_META_GLOBALS_SECTION: utils.MustGet(help.HelpFor("lthreads/globals-section", helpMessageConfig)),
	}

	LTHREAD_META_SECTION_DEFAULT_VALUE_COMPLETIONS = map[string]string{
		symbolic.LTHREAD_META_ALLOW_SECTION:   "{}",
		symbolic.LTHREAD_META_GLOBALS_SECTION: "{}",
	}
)

Functions

This section is empty.

Types

type Completion

type Completion struct {
	ShownString           string                    `json:"shownString"`
	Value                 string                    `json:"value"`
	ReplacedRange         parse.SourcePositionRange `json:"replacedRange"`
	Kind                  defines.CompletionItemKind
	LabelDetail           string
	MarkdownDocumentation string
}

A Completion represents a single completion item.

func FindCompletions

func FindCompletions(args SearchArgs) []Completion

type InputData

type InputData struct {
	StaticFileURLPaths []string      //examples: /index.js, /index.css
	ServerAPI          *httpspec.API //optional
}

type Mode

type Mode int

Mode informs FindCompletions about what environment the completions are intended for and where to get data.

const (
	ShellCompletions Mode = iota
	LspCompletions
)

func (Mode) String

func (m Mode) String() string

type SearchArgs

type SearchArgs struct {
	State       *core.TreeWalkState
	Chunk       *parse.ParsedChunkSource
	CursorIndex int
	Mode        Mode
	InputData   InputData
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL