Skip to content

Latest commit

History

History
122 lines (110 loc) 路 6.92 KB

ROADMAP.md

File metadata and controls

122 lines (110 loc) 路 6.92 KB

ROADMAP

High-level overview of the project鈥檚 goals, tasks, and milestones for future releases.

Any new ideas related to the content here are welcome.

Sections:

General Codebase Changes

  • Refactor unused files & data-structures
  • Read a user's specific configuration they have set
    • env_variables could be set via zod
    • set options via cli flags, fish-lsp start --enable ... --disable ...
    • read from a global json file
  • Supporting fish feature flags and handling proper syntax changes

Server Features and Providers

  • Add Diagnostics
    • add a diagnostic queue to store diagnostics
    • enable/disable specific features:
      • Error - missing end to block
      • Error - missing switch/case fall through check case '*' or case \*
      • Warning - prefer command/builtin prefix for commands or builtins
      • Warning - missing completions file from a functions/<file>.fish
      • ...add more features...
    • write verbose tests for each new diagnostic
  • Add CodeActions
    • Create completions file
    • Quickfix diagnostic error
    • Rename autoloaded filename (for a fish function), that doesn't have a matching function name
    • Prefer command prefix for possible aliased shell commands.
    • Move function in ~/.config/fish/config.fish to it's own file, ~/.config/fish/functions/<file>.fish and call it inline.
    • if statement to and/or equivalent, combiner
  • Add CodeLens support
    • Decide what would be useful to display
  • Add CommandExecutor provider
  • Add function SignatureHelp provider.
  • FormatOnType provider (useful for small files)
  • Enable server via shebang's:
    • #!/usr/bin/fish
    • #!/usr/local/bin/fish
    • #!/usr/bin/env fish
  • Add DocumentHighlight provider
  • Extend symbol definitions recognized by the server:
    • variables created by fish_opt && argparse commands
    • alias names
    • abbr names
    • include theme variables
    • event handlers for function _ --on-event event
    • universal variables
  • Descriptions for array indexing: echo $PATH[-1..2]
    • ensure array indexes are: 1 >= idx <= -1
  • source command use cases, for workspaces outside of default configurations. (The source command, can be used similar to import in other languages)
  • status variable documentation
    0 is generally the exit status of commands if they successfully performed the requested operation.
    1 is generally the exit status of commands if they failed to perform the requested operation.
    121 is generally the exit status of commands if they were supplied with invalid arguments.
    123 means that the command was not executed because the command name contained invalid characters.
    124 means that the command was not executed because none of the wildcards in the command produced any matches.
    125 means that while an executable with the specified name was located, the operating system could not actually execute the command.
    126 means that while a file with the specified name was located, it was not executable.
    127 means that no function, builtin or command with the given name could be located.
    
  • Options to enable from client configuration
    • if_statement must be silent: if command -s -> if command -sq
    • prefer command _ prefix for ambiguous commands
    • default case for switch_statement
    • test number/string flags from condition argument's
    • function requires returning a status number
    • fish_add_path instead of set -gx PATH _
    • logger location
    • private functions need underscore prefix
    • prefer universal scope, or prefer global scope
    • prefer specific redirect to /dev/null
    • hover documentation fallback: tldr, cht.sh, ...
    • format specific options
    • remove showing lsp kind in completions list

Automation and pipelines

  • (POTENTIALLY) Use pnpm instead of yarn
  • Minimize test-suite for master branch's PR compatibility
    • run via: yarn test-hook
    • could be improved with more tests
  • Include refactoring/tree-shaking help to scripts: yarn refactor
  • Release binary downloadable files, per machine OS
    • need a build pipeline as well
    • handle scope specific dependencies
  • Action for updating fish-lsp.dev documentation on new publishes
    • write script for generating fish-lsp --help screenshot

Documentation

  • Add new editor configurations:
  • Add fish-lsp.dev website
    • add monaco support -- testing lsp in web-editor
  • Add improved gif file, showcasing lsp's capabilities to README.md
  • include tree-sitter-fish.wasm in downloaded project
  • README.md changes:
  • Extend documentation provided via wiki
    • workflows - guide for creating new workflows
    • testing - guide for writing tests
    • layout - guide for project layout & design patterns via mermaid charts