Skip to content

lcpichette/sensible-oxo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(Sensible) Neovim Dotfiles, Oxocarbon-Themed

2024-12-24@04 33 36 December-24@2x 2024-12-26@13 11 55 December-26@2x

See gallery and random showcases for more...

✨ Features

  • Easy to Change: Using a different plugin is as easy as tweaking false->true in oxo_config.lua.
  • Minimalist Design: Clean and focused user interface.
  • Modern Plugins: Oldies can be goodies, but some of these new plugins just better(ies?)
  • Modular Configuration: Easy to extend and maintain.
  • Intuitive Keybindings: Streamlined navigation and editing experience.
  • Rich Developer Tools: LSP, Treesitter, Git integration, and more.
  • Enhanced Aesthetics: Eye-pleasing themes.

🎥 Random Showcases

  • LSP diagnositcs
  • Multi-line EasyMotion via Hop
2024-12-27@11.54.50.December-27.mp4

  • File fuzzy searching (fzf-lua)
  • Better quickfix lists and opening results into paneled splits on the same buffer (fzf-lua + bqf)
2024-12-24@04.49.43.December-24.mp4

  • Motions:
    • Spider (w on B for BufReadPre goes to R instead of next word)
    • Hop (fts search across buffer for ts).
2024-12-22@14.39.15.December-22.mp4

🛠️ Installation

  1. Backup Your Existing Configuration
    Before proceeding, ensure you back up your current Neovim configuration to avoid losing any important settings:
    mv ~/.config/nvim ~/.config/nvim.backup
    mv ~/.local/share/nvim ~/.local/share/nvim.backup
    mv ~/.cache/nvim ~/.cache/nvim.backup
  2. Clone the repository into your Neovim config directory:
    git clone https://github.com/lcpichette/sensible-oxo ~/.config/nvim

⚙️ Configuration

Below you can see the oxo_config.lua file (subject to change, as TODOs indicate):

return {
  -- Functionality-level
  autocomplete = {
    blink = true,
  },
  dap = false, -- TODO: Expand to permit specifying DAPs
  lsp = true, -- TODO: Expand to permit specifying LSPs
  lint = true, --etc.
  format = true, --etc.
  fancyLSPPreviews = true,
  improvedMotions = true, -- Spider.nvim
  lspStatusIndicators = true, -- Messages visible bottom right indiciating load status of LSPs
  fileSearch = {
    fzf_lua = true,
  },
  quickfix = {
    quicker = true,
  },
  statusline = {
    lualine = false,
    statusline = true,
  },
  autopairs = {
    mini = true,
    autopairs = false,
  },
  commentToggling = true,

  -- Package-level
  git = {
    neogit = true, -- UI Git interaction in neovim; "Magik" for nvim
    gitsigns = true, -- git diff indicators in buffer (left of line numbers)
  },
  neorg = false,
  grugfar = false,
  markview = true,
  blankline = true,
  hardtime = false,
  glance = true,

  -- Experimental Custom Plugins
  custom = {
    notes = true, --TODO: Make this config opt matter
    silver_search = false, --TODO: Make this config opt matter
    search_utils = true, --TODO: Make this config opt matter
  },
}

In the above, for example, by changing dap = false to dap = true, we enable a few plugins that enable DAP keybinds and plugins! I went ahead and recorded this example into a kind of Configuration "Demo" video, so that you can see how it works. In the video we see mappings and plugins being enabled and disabled as per what's set in the config.

Configuration Demo

sensible-oxo-DAP.mp4

🎨 Gallery

2025-01-08@03 05 28 January-08@2x

📦 Plugin Overview

Installed Plugins

Plugin Purpose
alpha-nvim Start screen customization
arrow.nvim Smooth navigation and UI enhancements
Comment.nvim Commenting utility
conform.nvim Automatic formatting
dressing.nvim UI improvements for input/select
fidget.nvim LSP progress indicators
fzf-lua Fuzzy finder
gitsigns.nvim Git integration
hop.nvim Quick navigation
indent-blankline.nvim Indentation guides
lazy.nvim Plugin manager
lualine.nvim Statusline
noice.nvim Enhanced messaging
nui.nvim UI components library
nvim-lspconfig Configurations for LSP
nvim-notify Notification system
nvim-treesitter Syntax highlighting
nvim-web-devicons File icons
oil.nvim File explorer
oxocarbon.nvim Theme
plenary.nvim Common utilities
targets.vim Extended text objects
todo-comments.nvim Highlight and search TODOs
vim-sleuth Indentation detection
which-key.nvim Keybinding hints
cmp-buffer Autocompletion source for buffer
cmp-nvim-lsp LSP source for nvim-cmp
cmp-path Path completion
mason-lspconfig.nvim Mason LSP configs
mason.nvim LSP/DAP installer
nvim-autopairs Auto-closing pairs
nvim-bqf Better quickfix window
nvim-cmp Completion engine
nvim-spider Enhanced motions
showkeys.nvim Display active keybindings
trouble.nvim Diagnostics and quickfix UI
vim-startuptime Startup profiling
grug-far.nvim Search and replace w/ friendly UI
neogit Even with its 25ms+ impact, the impact comes upon starting the command :Neogit <...> -- the startup time of neovim (nvim <...>) isn't actually impacted.

Disabled Plugins

These are plugins that I may want to enable in the future -- whether I find myself needing them, willing to compromise the performance hit for them, or find additional ways to better mitigate their performance hits.

Due to this, I've left them in the codebase but disabled (no performance hit).

Plugin Purpose
rainbow-delimiters.nvim Disabled
hardtime.nvim Discourage bad habits; Disabled bc I find it doesn't pop-up often and it has non-zero perforamance imapct.

Rejected Plugins

These are plugins I tried and either felt didn't fit within the desired workflow or performance guidelines this project set out to meet.

Plugin Reason
Neorg Performance hit was 20+ms, and workflow can be met with simpler tooling
Telescope Performance hit was 15+ms even after optimizing it, fzf-lua fits the workflow and is more performant
Anything AI Coding is more fun when you know what you're doing
Trailblazer Arrow fits my personal development workflow better, open to moving this to disabled instead
Menu Anti-synergy between Mouse + Neovim IMO, maybe I'm misunderstanding if it has keyboard potential. Other plugins I'd rather have in exchange for its performance hit.

☑️ To-Do

Eventually I'd like to make a stupidly-simple interface for updating your neovim configuration while keeping it highly performant (sensible), with an opinionated styling, workflow, and toolset (oxo).

I'd like to think I'm 85% of the way their with the oxo, and about 20% of the way there with the sensible. Moving away from Astronvim removes bloat and LazyVim is innately pretty-easy to configure and the plugin location and file naming is I believe, mostly, pretty sensible.

To get oxo to 100% we're going to need community feedback about alternatives (some plugins like fzf-lua vs telescope was a very intentional decision and I will NOT be adding it as a config option due to its a performance issues). Approved (specifiable in config) tools should be able to be turned on and off via the variable config (which does not exist yet). But, if there's a plugin you'd like to see supported via config option specify that in an issue on this repo -- I'm open to suggestions!

NOT STARTED:

  • Add project navigation
  • Add quick terminal options (floating, horizontal, etc)
  • Add sessions, if not too harmful to load time

WIP:

  • [~] Variable configs
    • Description: Changing variables in a config table { ascii_art = "cat" } to { ascii_art = "saturn" } will, in this example, change the ascii art shown by alpha-nvim to be a saturn instead of the current cat.
    • Establish design Information Architecture that is easy to tweak and read sensible-oxo-specific configs that make performant changes to the overall project (We shouldn't load every config option; only load what we need and only when we need it)
    • Create config structure and default file.
    • [~] Support the following config options:
      • Ascii Art changes to "dashboard" { ascii_art = "cat" }
      • "Magic" LSP,Lint,Format selection based on desired supported filetypes { support_fts = { "lua", "ts", "js", "zig", "jsx", "tsx" } }
      • Git (buffer) { git_buffer = true }
      • Diagnostics (buffer) { diagnostics_buffer = true }
      • Lualine selectable presets { lualine_preset = "default" }
      • Commandline location { commandline_style = "floating" }

DONE:

  • Change / to use fzf-lua + vim search register w/ Oxo highlighting.
  • Fix inconsistent coloring in ascii art
  • Add custom notes
    • Syntax highlighting
    • Persistent changes
    • Incredibly quick to load notes and the module

🤝 Credits

Inspired by nyoom.nvim.
Built with ❤️ using Neovim and the amazing plugin ecosystem.

About

A config that looks and feels... sensible.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages