Skip to content

Current Features, and Documentation

nick edited this page Apr 30, 2024 · 2 revisions

DEMO of Current Features

usage gif

Note

Checkout the Roadmap for other information

Documentation about features

server.ts methods are bound as handlers to the client. Unchecked nested bullets are either: handlers which are currently WIP or features to further possibly extend a hanlder's functionality.

  • onComplete
    • documentation to support chained short options (e.g. ls -la)
    • get unique local symbols
    • get fallback to global symbols
    • implementation does not consider all possible cases. Currently has issues with completions being found on empty word.
  • onCompleteResolve
  • onHover
    • support chained short options: ls -la
    • support commands with subcommands: git commit
    • support local symbols: ~/.config/fish/config.fish, ~/.config/fish/functions/*.fish
    • support nearest reference: set var "1"; set var "2";
  • onDefinition
  • onReferences
    • when searching for global references, remove new locally defined references from matches
  • onRename, (does not work for renaming autoloaded files)
    • when searching for global references, remove new locally defined references from matches
  • onDocumentSymbol
  • onWorkspaceSymbol
  • onFold
  • onFormat
  • onFormatRange
  • diagnostics
    • tons of possibility for future ideas here. Diagnostic Provider is implemented upstream.
  • onCodeAction
  • onOutgoingCallHierarchy
  • onIncomingCallHierarchy
  • onRefactor
  • onInlayHints: previous implementation too slow
  • documentation.ts
  • analyze.ts
    • implement diagnostics
    • analyze() cache a document and its relevant information for later use.
    • getCommandAtLine() for onComplete()/onHover()
    • initiateBackgroundAnalysis() non-blocking analysis over workspace paths, to analyze/cache all auto-loaded files.
  • completion.ts
    • add pipe, status, escape char, and wild card completions
    • add completion short options, that are chained together via retrigger command.
    • add option for sorting by short/long options first
    • add option for client completion-menu FishDocumentItem.detail to be shown
    • add completion type resolver (strategy to construct FishCompletionItem[])
  • logger.ts logging for a FishServer connection. Will log to ./logs.txt by default.
  • cli.ts starts the language server. A client will attach to this endpoint, and provide specific configuration options on startup.
  • code-actions.ts implement code actions
    • use CodeActionContext.create() to create contexts, potentially while also creating diagnostics at the same time.
    • Need to get range working for CodeActions. Otherwise, it will only work on the first line of the document.
  • code-lens.ts implement code lens
  • calls.ts implement outgoingCalls and incomingCalls provider
  • translation convert data-types across various package api's.
  • parser.ts contains initializeParser() to use .wasm tree-sitter module web-tree-sitter.
    • Convert from web-tree-sitter to tree-sitter-node. NOTICE: Notice that executing .wasm files in node.js is considerably slower than running node.js bindings.
  • configManager.ts implement configuration manager. Client Configuration Settings accessible during startup. @TODO needs refactor
Clone this wiki locally