Skip to content

Latest commit

 

History

History
267 lines (229 loc) · 13.5 KB

TASKS.md

File metadata and controls

267 lines (229 loc) · 13.5 KB

To-Do Lists

To-Do

Plugins/Tooling

  • Auto-completion (revisit for advanced configuration)
    • cmp-conventionalcommits
    • cmp-dictionary
  • Auto-correction of diagnostics/linting errors
  • Auto-imports
  • Case Changer (i.e.: CamelCaseEr, snake_case_er, Title-Er, UPPERER, lowerer, etc.er)
  • Code actions
  • Debugger
  • File templates
  • Opening in existing nvim instances (neovim-remote)
  • Refactoring
  • Snippets
  • Unit test integrations
    • Ability to run from nvim
    • Ability to view/act on results
    • Ability to debug and step through execution

LSP Support

  • Fish
  • Go
  • Java
  • JavaScript
  • Jq
  • Json
  • K8S Yaml
  • Terraform
  • Toml
  • TypeScript
  • Yaml
  • Zsh

Tasks

  • I'm not totally happy w/ my tab/buffer management schemes and my non-workflows that haven't really come to be w/ my current tooling
  • Incorporate tabs (and windows?) into workflows (not very concrete)
  • How can I open multiple files at once w/ nvimtree?
  • Add (relative) line numbers by default to diffview, undotree, spectre, etc.
  • Create lualine extensions for diffview, undotree, and spectre
  • Add ability to refactor imports on file move
  • Add LuaSnip custom snippets
  • Enhance styling (i.e.: selective bolding, diff fonts, etc.)
  • Refactor nvim utils to separate repo? (at least those that would be/are useful for plugins as well)
  • Use lsp hooks to plug into lsp, instead of baking dependent code directly into lsp setup
  • Continue comments only in docstrings
  • Automatically add new params to docstrings
  • Add unit tests
  • Add more systematic logging
  • Add more systematic error-handling
  • Add tracebacks to error logging
  • Add ability to make file "un-executable" from nvim-tree
  • Configure auto-completion support for neorepl
  • Add barbar + session integration so buffers are restored in correct order
  • Integrate scopes.nvim w/ session manager
  • Configure (layouts) for individual telescope pickers, based on usability, and extensions, to the extent possible
  • Convert user commands to lua apis?
  • Add ability to open spectre in a arbitrary splits, own buffer, tab, modal, etc.
  • Add ability to specify max log size and to "retire" (update name to include date, or something similar) and create a new log file

Fixes

  • Issue upgrading LuaSnip
  • Figure out why barbar diagnostics don't work
  • "Fix plugins extension" (?)
  • Disable cmdline auto-completion for specific commands (ls, for example)
  • Barbar shouldn't reopen non-editable/help buffers (i.e.: nvimtree, diffview, side panel, etc.)
  • Bufresize should ignore certain window types (i.e.: nvimtree, diffview, side panel, etc.)
  • Figure out why neorepl doesn't always seem to have the latest version of code, even when I stop/start nvim (maybe due to my "on_bind" global imports...?)
  • Fix snippet loading
  • Fix statusline crowding in specific utility buffers (i.e.: nvimtree, diffview file tree, probably others)
  • Editorconfig line length constraints aren't being enforced
  • Fix issues w/ duplicate sessions (one w/ branch + one w/o)
  • Fix session save logic that closes non-restorable buffers
  • Figure out why session seem not to save sometimes, or don't save w/ the right cwd
  • Fix markdown and vimdoc highlighting
  • Fix colorizer autocmds
  • Fix text wrap/line continuation issues

Ideas

Refactor

  • Change parameter position, or otherwise change parameters
    • Update docs
    • Update call sites
  • Make function, method, field, etc public/private/package/protected
    • For lua, convert function to/from local
  • Easily wrap values in function calls/or arbitrary braces
  • Easily move functions/methods w/in a file
  • Moving files w/ path dependent imports changes imports
  • Change case style (i.e.: CamelCaseEr, snake_case_er, Title-Er, UPPERER, lowerer, etc.er)
  • Auto-fill completed function params
  • Deleting a control structure and automatically reindenting interior code
  • Remove control structure, i.e.: remove loops/if statements/etc, fix indentation/formatting of code contained therein

File Create Sub-Menu

Menu in file-explorer (i.e.: nvim-tree) that allows you to choose specific kinds of files/dirs to create. Can include custom types as well as templates. Some examples:

  • New lang specific file
    • lua
    • python
    • shell (i.e.: bash)
  • New lang specific folder structure
    • Python project (i.e.: w/ project.toml)
    • Python module (i.e.: w/ init.py)
  • Create missing function/method/var, etc.

Buffer/Tab Interaction Feature

  • Pretty status/interaction menu consisting of
    • Tabs
    • Buffers, grouped by tabs if possible
  • Interactions include
    • Navigating to tab
    • Navigating to buffer
    • Opening/creating tabs
    • Opening/creating buffers
    • Closing/deleting tabs
    • Closing/deleting buffers
    • Renaming tabs
    • Moving tabs?
    • Moving/regrouping buffers?

Inspection Menu

Hydra menu w/ that enables contextual inspections, including:

  • Checking cwd
  • Current buffer info
  • Current tab info
  • Current window info
  • If session is recording

Log Interactions

  • Update logs opener to make buffer non-modifiable
  • Update logs opener to set custom filetype
  • Add buffer menu that lists logs available for exploration

Done

Plugins/Tooling

  • Auto-pairs
  • Code searching utility (always room for improvement here)
  • Code outline (still exploring other options)
  • Colorscheme (but always evolving)
  • Comments
  • Diff viewer (could be better though...)
  • Docstring template insertion (explore configuration options)
  • Filetree/explorer (not 100% happy, need to look into neo-tree, etc.)
  • Find + replace
  • Formatting
  • Fuzzy-find commands
  • General prettiness (😅)
  • Git in-file indicators (again, not 100% happy, want to continue exploring)
  • Git history interactions (i.e.: file history, git blame, etc.)
  • Git state interactions (commit, merge, rebase, cherry-pick, etc.) (lazygit)
  • Inline docs/hints
  • Linting
  • Merge tool (...at least needs further configuration)
  • Notifications
  • Persistent undo history
  • Project manager (still wanna see what other options are out there though)
  • Renaming
  • Session manager
  • Sniprun
  • Start screen? (again, wanna explore)
  • Status bar (would like to customize it more though) (and investigate extensions)
  • Surround
  • Syntax checking (for a small set of languages, guts are there at least)
  • Tab/buffer bar
  • The Line - a stylized indicator that a line is (almost) too long
  • Telescope
  • Undo tree (it works, but could look better... I dunno, wanna continue looking/tinkering)

Won't Do

  • Tag generator, viewer, and associated plugins
    • Generator - gutentags

LSP Support

  • Bash
  • Python3
  • Lua

Tasks

  • Make gitsigns symbols more obvious (seems to be based on the colorscheme, but enabling numhl seems to have helped)
  • Add ability to optionally suppress notifications when logging w/ nvim logger
  • Add ability to parameterize persistence of notifications logged through nvim logger
  • Add augroup's to autocmds
  • Add leap highlight (more "won't do", as I've adopted folke's "flash.nvim" as my motion plugin of choice)
  • Bi-directional leap
  • Leap in nvimtree
  • Telescope picker for package dir (i.e.: plugins)
  • Homegrown session manager (got most [much?] of the way there and then figured out how to make session manager plugin do what I want it to [i.e.: session per dir, more or less])
  • Customize titles in contextual telescope extension search
  • Better nvim init error handling (unclear if it actually works, but it's there-ish)
  • Notifications/modals/confirmation menus on nvim init error
  • Logger should write to nvim application logs
  • Update nvim alias to include writing to logs (didn't do exactly this, but logs are being written and it's as configurable as it needs to be at this point)
  • Refactor KeyMapper to use state so as to avoid duplication "options" functions, etc.
  • Enable spell-checker/grammar helper/etc. (potentially investigate spellchecker plugins, i.e.: spelunker)
  • Enable minor auto-reformatting, i.e.: aligning spacing, remove trailing whitespace, automatic newlines + alignment, replacing tabs w/ spaces, etc. (editorconfig got me a lot of the way there, but I can still do better -> neoformat)
  • Add ability to close all buffers except "this one" (i.e.: the focused buffer)
  • Add ability to copy file contents from nvim-tree
  • Copy file content to clipboard from nvimtree (dup)
  • Add Lualine support for projects
  • Add Lualine support for sessions
  • Add ability to make file executable from nvim-tree
  • Add override key bindings for nvimtree contextual search (constrained contextual search to nvimtree buffer, updated relevant global key bindings to use builtins instead of contextual search functions)
  • Add ability to close neorepl from outside of its buffer
  • Hydra menu for interacting w/ log files
  • Add mechanism for automatically installing language components, not just lsp servers
  • Change diagnostic symbols to something snazzier
  • Leap "repeat"/"again" capability, like "n"/"N" in search? (got rid of leap in favor of flash)
  • Git interactions from nvimtree (partially there w/ stage/unstage)
  • Change diff/merge view colors to something that makes for better UX (colorscheme dependent unless I want to add/configure highlight groups)
  • Remap available spectre commands: https://github.com/nvim-pack/nvim-spectre (what I have works)

Fixes

  • !!! Diagnose and fix Treesitter issues (see fb465783acaa09ac0f8c1ab07eac6e22948f8ea3 for resolution notes)
  • Figure out why tabs.lua isn't being read from keymap/, then move from keymap/plugins -> keymap/ (ended up being an issues w/ the way "require paths" were being constructed for recursive calls)
  • Fix lua_ls workspace configuration prompt
  • Fix leap.nvim repeat functionality (didn't really fix this, but have opted, at least for the moment, to use flash.nvim, instead of leap, as my primary motion plugin)
  • DiffviewClose doesn't consistently close all diffview buffers/windows (the issue ended up being a usability problem really: it's possible for multiple diffview menus to open, and it's not always obvious what's happening when sequentially closing them)
  • Auto-session has issues saving/restoring "special" (maybe literally?) buffers, i.e.: nvim-tree, undotree (presumably), diffview, etc.... (ended up sticking w/ existing session manager plugin)
  • Re-install, or otherwise just fix, nvim-tmux-navigation
  • Fix buffer ordering (or fix sequential navigation, i.e.: navigate in visual order)
  • Fix "redo" custom mapping repeatability, i.e.: I can't hit leader (<space>) once and hit r N times to get N redo operations (got rid of mapping altogether)
  • Fix "redo" custom mapping wait time
  • Migrate nvimtree view.mappings to on_attach
  • nvimtree won't toggle hidden files (can't ever see/interact w/ them)
  • Nvim is complaining that the Lua LSP isn't installed (used mason to install)
  • Something seems to be wrong w/ treesitter plugin setup (opts is nil?) (I think this has been addressed; will know when next update is pushed)
  • Fix gitsigns on_attach (doesn't seem to be getting bound/called)
  • Add more words/better dictionaries ("suggest word(s)" action never actually suggests anything) (ended up being a misconfiguration: spell suggest setting shouldn't have been an int)
  • Update lua files/packages that export functions to encapsulate them in tables
  • Figure out why, even after changing the supposedly relevant vim configs., adding a new line from a comment, above or below the commented line, continues the comment
  • Fix issues w/ session mgr not restoring sessions from cwd even though I'm now manually setting it (switched session mgr from neovim-session-mgr to persisted.nvim + added custom session lifecycle mgmt)
  • Figure out auto-session <-> lualine integration issues, i.e.: can't import auto-session.lib (or auto-session at all, really) (switched session mgr from neovim-session-mgr to persisted.nvim + added custom session lifecycle mgmt)
  • Figure out why restoring sessions often causes barbar errors (switched session mgr from neovim-session-mgr to persisted.nvim + added custom session lifecycle mgmt)
  • Check for nvim-surround treesitter dependency; if it has one, add it to TreesitterPlugin and make downstream changes
  • Figure out cyclic import issue w/ logging
  • Fix aerial markdown issue
  • Fix indent-blankline
  • Figure out why telescope layout config params seem to not be respected sometimes (as it turns out, this seems to be an issues exclusively for extensions; unfortunately, extensions don't make guarantees about their configuration params, and so may not respect the same layout config options the builtin pickers do)
  • Figure out why additional key bindings to packages telescope finder aren't working (they weren't using the telescope api to get the selected value)

Won't Do

  • Figure out auto-session <-> lualine integration issues, i.e.: can't import auto-session.lib (or auto-session at all, really)
    • I no longer use auto-session (at least for the time being)

Ideas