Check out the TODO section for upcoming features.
nux_demo.mp4
- Project Picker: Quickly switch between projects.
- Custom Project Layouts: Define project roots and specify which files open in a new tab. Tabs open files in a spiral layout.
- Smart Tab Naming: Tabs automatically adapt names to match the current project.
- Terminal Integration: Open terminal sessions from your project configuration using term.
- Flexible File Selection (WIP): Advanced filtering with a domain-specific language (DSL) for selecting files by folder, type, or last modified time.
vim.pack
vim.pack.add(
{ src = "https://github.com/tayheau/nux.nvim" }
)lazy.nvim
{
"tayheau/nux.nvim"
}- Create a
projectsfile (currently in.config/nvim) specifying the root and the files you want to open:
~/Foo/bar far.c term
termopens a terminal in that tab.
- Open the project picker: select the project using
:Nux pickprojectsand let nux.nvim arrange your workspace automatically. - Tabs: Tabs will be named smartly based on your project, keeping your workspace organized.
Currently, the plugin is purely lazy loaded so there is no need to call setup() but it also mean no configuration at the moment. This is the very first commit so this is more of a personnal project but once again you are more than welcome to contribute to it and help nux.nvim to become a complete and robust nvim multiplexer !
One personnal recommandation would be to bind some key to the :Nux pickprojects command :
vim.keymap.set('n', '<leader>p', ':Nux pickprojects<CR>')- select if you want the built-in header setup()
- close all buffers of the tab when closing the tab (except potentially running term process and non saved files) setup()
- save current layout on quit
- launch terminal process in background or front
- dont allow duplicates (show it in the picker too)
- allow custom name (inplace or not) rename(tabId, newName, inplace:bool) renameInplace() = partial rename(tabId, newName, true)
Floating window selector - shows files in different hl- make parser and domain specific language to allow more control on files :
- e.g: {LAST_MODIFIED:folder}/*.py
- 1st LEXING : split into tokens
- 2nd PARSING: understanding thoses tokens
- 3rd BUILDING : return a comprehensive list of instructions (dict root, files)