Current Features, and Documentation - ndonfris/fish-lsp GitHub Wiki

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