I would guess your primary concern is to have a convenient way to switch buffer, not to understand the emacs' source code, so I would strongly recommend to check helm
package out: http://tuhdo.github.io/helm-intro.html
It will take about 10 to 20 minutes to install and follow the tutorial, and it is well worth. I promise.
After installing helm
and enabling it, the key sequence for you is Ctrl-x b: Shows open buffers, recently opened files
You will get a power pack of many other tools to work in emacs. I had the same problem with switching buffers, and seemingly 'chaotic' buffer popup. After helm
installation, the problem is minimized to invisible because it is so easy to switch to the buffers you want.
Update:
To deal package installation errors and package compatibility:
M-x list-load-path-shadows
to see if there is any conflicting packages. And since you may not have many external packages, I suggest backup ~/.emacs.d
and have a new empty one. Also, most of the case when install packages, I try to use emacs package manager. Benefits of using package manger:
- help check dependencies
- avoid to manual download and unpack.
- can do batch update of installed packages
Following is a workflow of enabling melpa
repo and installing packages
M-x customize-group RET package
# Click or move cursor to and enter: Package Archives
# Insert the melpa repository.
Archive name: melpa
URL or directory name: http://stable.melpa.org/packages/
#Save above settings and then you can use the following to install packages:
M-x list-packages RET
f to filer package names
i to mark for installation
x for execution of installation
u for unmark package at cursor.
# to avoid using load-path repeatedly,
# I have this in my .emacs before any 'require' command:
; Set path recursively to one folder
(let ((default-directory "~/.emacs.d/elpa/"))(normal-top-level-add-subdirs-to-load-path))
M-x report-emacs-bug
. – Drewdisplay-buffer
. I suggest that you read the doc-string of that function, which can be viewed by typing:M-x describe-function RET display-buffer RET
. The functionlist-buffers
is one (1) line of code excluding the doc-string and interactive statement -- i.e.,(display-buffer (list-buffers-noselect arg))
. Noselect is self-explanitory -- i.e.., a buffer is generated containing the ingredients you are accustomed to seeing, and then it just sits there waiting to be displayed -- e.g., bydisplay-buffer
. – lawlistdisplay-buffer
anddisplay-buffer-alist
, as well as the behavior they try to describe and explain, is indeed "way far beyond my meer [sic] mortal perception (and understanding). FWIW, I'm with you on that one - I've never been able to fathom it either. – Drew