The picture you posted confuses the question somewhat. The picture shows a file selector. Files and buffers are different in Emacs. When you open a file, you visit it. That is, the file contents are read into Emacs and the file remains available to other processes. The file contents and the buffer are not guaranteed to be the same at all points in time. Some modern IDEs conflate loading/saving which can obscure how processes actually happen (looking at you PyCharm). Because there isn't always a direct comparison between Emacs and IDEs, I will address both file browsers and a static file buffer list here so that you can decide what works best for you. You may find Emacs offers a better workflow that your previous IDE couldn't.
File browser
For a file browser, my preference is neotree:
A basic setup requires:
(package-initialize)
(require 'package)
(require 'neotree)
To toggle it, I like to use (global-set-key (kbd "C-x M-f") 'neotree-toggle)
.
Static buffer list
I don't know of a persistent buffer list package that currently exists. It could surely be created, but it seems like most Emacs users are happy with the default list-buffers
or something like helm-buffers-list.
However, here's a rough way to get a persistent buffer list:
- Create a split using
C-x 3
- Open
buffer-menu
- Select a buffer with
o
(Buffer-menu-other-window
)
This will open the selected buffer in the other window.
You'll notice that <RET>
opens the buffer in the current window. You could rebind Buffer-menu-other-window
to <RET>
with:
(define-key Buffer-menu-mode-map (kbd "<return>") 'Buffer-menu-other-window)
Note that this will work best with two windows open. Specifying a specific window among several is a non-trivial problem that has been addressed elsewhere.
M-x list-buffers
and navigate to a buffer is the lettero
, which will "Select that buffer in another window, so the Buffer Menu remains visible in its window". To learn about the other commands that are supported when usinglist-buffers
, from the*Buffer List*
window, typeC-h m
and you will be presented with a variety of information including, but limited to common keyboard shortcuts that work within that buffer. There are other built-in buffer lists navigation tools and a plethora that can be added.Speedbar->Display
offers also theBuffers
display. That is almost what you want. I post this because as a comment because it lists the buffers in an extra frame not in an extra window. There is alsosr-speedbar.el
which shows the speedbar in an extra window. But, I do not know whether that package still works with recent Emacs versions.