Long time ago, in mid-2000-s I tried to switch to Emacs or Vim from Visual Studio.
I wanted to have a simple project file tree as a side panel and multiple editor tabs on the right. I spent a week toying with various elisp scripts, Vim plugins, and digging out information from a then-moribund XEmacs mailing list.
And I couldn't do what I wanted in the end. Nothing worked seamlessly or reliably.
Yes, with built-in packages there are at least two different ways - speedbar, or Dired in a side window. And what even "out-of-the-box" means? In Emacs-land packages are not like extensions in other editors and IDEs, they more like recipe books. You can collect literally over a thousand of them without ever explicitly loading them until that specific moment that happens once in a decade and you won't ever notice their presence until then. And there are tons and tons of different packages that do the sidebar directory listing - treemacs, dired-sidebar, dired-subtree, direx, ztree, etc. You seriously thought that in 50 effing years nobody, just nobody thought of making a sidebar directory tree that works in Emacs?
Nothing worked seamlessly or reliably.
Skill issue. You. You couldn't figure it out. And then decided it can't be done, period. Brilliant.
It always could be. Go into vim and type `let g:netrw_liststyle = 3` then `:Vex`. The window size won't be what you want, but is the core idea? Because if it is, you just set the liststyle in your vimrc and have netrw start on load, with proper pane location and width.
That or most people have used NerdTree for a decade
I see, so nothing has actually changed within the last 20 years.
A project tree is NOT a file list. It's a persistent panel that allows you to navigate within the project. It should also integrate with tools like recursive search (so it doesn't recurse into ignored folders like `node_modules`), build tools, code intelligence, and a debugger.
A lot has changed, but a lot of features have been there for a long time too. There's a reason people use neovim too
> It's a persistent panel that allows you to navigate within the project.
Trivial to do with netrw. Again, NerdTree is a common alternative
> It should also integrate with tools like recursive search (so it doesn't recurse into ignored folders like `node_modules`)
`:vim /re/ */* +`
Or checkout telescope, FZF, or rg. There's plenty of integrations
> build tools
`:make`, `:grep`, `:compiler`. I mean you can do any terminal command...
Or plugins, dispatch.vim, overseer.nvim, vim-test
> code intelligence
Ctags, or nvim has a LSP so I don't use ctags (or cscope) much anymore. Common plugins are: coc.nvim, ALE, vim-lsp, YouCompleteMe
> debugger
termdebug Is native? Also check nvim-dap (Neovim), vimspector
Most of the plugins listed mostly just make things nicer, not add functionality that doesn't exist. There's a ton of native things I didn't even list.
I'm not saying you have to like it nor that it looks/works the way you like/want/are used to, but you're claiming the functionality doesn't exist and that isn't correct. If it want you argue over style, that's perfectly okay. The reason a lot of us use vim/emacs is because we customize the tools to what works best for us. That's one of their best features! You don't have to use vim, emacs, or any TUI. The tools you should use are the tools best suited to you. Full stop.
But I'll also add that I haven't seen a single thing VS Code or any GUI IDE can do that I can't do in vim while also using a lot fewer compute resources to accomplish it. Personally, I program better and faster in vim because I have years of experience in it and I'm at the point that reaching for the mouse just slows me down. The learning curve isn't that steep to get pretty comfortable in vim, but the depth is enormous and that takes a long time to master. But honestly, the latter is true about most tools. And frankly, I'd rather have a tool where I can keep progressing and do crazy things in than a tool that caps my limits or puts a huge barrier if I want to extend. I moved away from IDEs because I found I could do more in vim quicker. But that's me, not you. Your experience will certainly be different and there's nothing wrong with that. We're just different people and that's perfectly fine.
The only thing really being argued here is your claim that "x can't do y" and as a user of "x", I assure you, I can do "y"
I don't know about emacs, but its definitely doable in neovim. I don't know if the built in file explorer suits your needs, but now that nvim has a proper built in plugin manager, it's just one line of config to install neo-tree or something like that.
Comments
Sigh.
Long time ago, in mid-2000-s I tried to switch to Emacs or Vim from Visual Studio.
I wanted to have a simple project file tree as a side panel and multiple editor tabs on the right. I spent a week toying with various elisp scripts, Vim plugins, and digging out information from a then-moribund XEmacs mailing list.
And I couldn't do what I wanted in the end. Nothing worked seamlessly or reliably.
Can this be done out-of-the-box now?
Yes, with built-in packages there are at least two different ways - speedbar, or Dired in a side window. And what even "out-of-the-box" means? In Emacs-land packages are not like extensions in other editors and IDEs, they more like recipe books. You can collect literally over a thousand of them without ever explicitly loading them until that specific moment that happens once in a decade and you won't ever notice their presence until then. And there are tons and tons of different packages that do the sidebar directory listing - treemacs, dired-sidebar, dired-subtree, direx, ztree, etc. You seriously thought that in 50 effing years nobody, just nobody thought of making a sidebar directory tree that works in Emacs?
Skill issue. You. You couldn't figure it out. And then decided it can't be done, period. Brilliant.
That or most people have used NerdTree for a decade
I see, so nothing has actually changed within the last 20 years.
A project tree is NOT a file list. It's a persistent panel that allows you to navigate within the project. It should also integrate with tools like recursive search (so it doesn't recurse into ignored folders like `node_modules`), build tools, code intelligence, and a debugger.
A lot has changed, but a lot of features have been there for a long time too. There's a reason people use neovim too
Trivial to do with netrw. Again, NerdTree is a common alternative `:vim /re/ */* +`Or checkout telescope, FZF, or rg. There's plenty of integrations
`:make`, `:grep`, `:compiler`. I mean you can do any terminal command...Or plugins, dispatch.vim, overseer.nvim, vim-test
Ctags, or nvim has a LSP so I don't use ctags (or cscope) much anymore. Common plugins are: coc.nvim, ALE, vim-lsp, YouCompleteMe termdebug Is native? Also check nvim-dap (Neovim), vimspectorMost of the plugins listed mostly just make things nicer, not add functionality that doesn't exist. There's a ton of native things I didn't even list.
I'm not saying you have to like it nor that it looks/works the way you like/want/are used to, but you're claiming the functionality doesn't exist and that isn't correct. If it want you argue over style, that's perfectly okay. The reason a lot of us use vim/emacs is because we customize the tools to what works best for us. That's one of their best features! You don't have to use vim, emacs, or any TUI. The tools you should use are the tools best suited to you. Full stop.
But I'll also add that I haven't seen a single thing VS Code or any GUI IDE can do that I can't do in vim while also using a lot fewer compute resources to accomplish it. Personally, I program better and faster in vim because I have years of experience in it and I'm at the point that reaching for the mouse just slows me down. The learning curve isn't that steep to get pretty comfortable in vim, but the depth is enormous and that takes a long time to master. But honestly, the latter is true about most tools. And frankly, I'd rather have a tool where I can keep progressing and do crazy things in than a tool that caps my limits or puts a huge barrier if I want to extend. I moved away from IDEs because I found I could do more in vim quicker. But that's me, not you. Your experience will certainly be different and there's nothing wrong with that. We're just different people and that's perfectly fine.
The only thing really being argued here is your claim that "x can't do y" and as a user of "x", I assure you, I can do "y"
As I said, nothing has changed.
Instead of a coherent IDE, you have a lot of semi-broken pieces that don't work well together.
And that's also why projects like this one are really helpful.
I don't know about emacs, but its definitely doable in neovim. I don't know if the built in file explorer suits your needs, but now that nvim has a proper built in plugin manager, it's just one line of config to install neo-tree or something like that.
`neo-tree` is indeed close to what I'd love to see in a real text-mode IDE. I'm going to play around with it.
Yes, speedbar, with speedbar-prefer-window set to t
Or use any of the various file tree packages in [M]ELPA
XEmacs has always been moribund. Use GNU Emacs.