Recently I have been working on projects that often have multiple files of the same name. By default emacs doesn’t give much information to help you switch between the buffers of open files of the same name. At the same moment that I was thinking I need to find a solution to this Pragmatic Emacs posted a nice little solution using uniquify.
This is how do the same using use-package:
(use-package uniquify
:config
(setq uniquify-buffer-name-style 'forward)
(setq uniquify-separator "/")
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified
(setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers
)
Update: See my other post, launching emacs from cygwin
There are a few tricks to installing emacs in cygwin. Here’s what I do.
Installing cygwin
First, install cygwin.
Then, install the very nice tool apt-cyg which makes package management much easier in cygwin.
Then to save yourself lots of agony of trying to work out which cygwin packages you need to install to be able to compile emacs, here is the list of all the packages I have installed. It may be a little bit of overkill but it will save you time. I obtained the list like this:
gitclonegit://git.savannah.gnu.org/emacs.gitcdemacs./configure--with-w32# to ditch gtk and the concomitant gtk bug, thanks jlfmake
If make is successful, test the build by running emacs from the src directory:
src/emacs-Q
If that worked ok, you can:
makeinstall
Setting up your home
I like my cygwin home directory to be the same as windows %USERPROFILE% so I set the environment variable HOME=%USERPROFILE%.
Set up a shortcut to launch emacs
Make a shortcut to c:cygwinbinrun.exe on your desktop, and rename it to emacs.
Edit the shortcut to:
Target: C:cygwinbinrun.exe /usr/local/bin/emacsclient "-c" "-a" "/usr/local/bin/emacs.exe" #
Start in: %USERPROFILE%
The target part makes sure emacs launches a new window whether or not its already running. If it is already running and as a server, it will create a new frame connected to the server.
The start in part makes sure the new instance’s default-directory is your home directory which I think makes most sense for when you are launching from a shortcut.
Drop the shortcut onto your start menu. You should now be able to launch emacs from the start menu, or by pressing the Windows key and typing emacs.
If you are writing a complex regex search in emacs and need to edit the string, arrow keys takes you out of the search. M-e allows you to really edit the string.
Sometimes you don’t want the completion that ido is offering me in Emacs, for instance when trying to create a temporary buffer C-x C-b sometempbuffername. C-j will to get ido to accept what you typed rather than the completion.
In org-mode in emacs, M-<RET> will add either a new heading or if your insertion point is between a list item and a heading, it will add a new list item. This is not always desirable. To add a new heading try C-U M-<RET>.
I only discovered this as I got frustrated with org-mode insisting on adding an item to the list rather than creating a new heading. The emacs way around problems like this is to prefix the command with C-U to make it do something slightly different.
ido-mode in emacs has this great feature where it remembers old buffers you have had open in the past and offers then as choices when switching buffer using C-x b. The problem is that sometimes it will have names in the list you’d rather it didn’t remember. The solution is easy, simply hit C-k to instantly kill the entry under point.
The gnus README.w32 says gnutls should be installed and in the path. I found that it must be in the windows system path to make it work. Setting the path within emacs was not good enough. So add C:\Program Files (x86)\gnutls\bin;C:\Program Files (x86)\gnutls\lib to your system path by going to Start/Edit System Environment Variables then click Environment Variables and edit Path in System Variables
you need to edit the emacs variable gnutls-trustfiles to point to windows paths to .crt files. by default it had paths to unix locations. The only way I could find to get these files was to install cygwin and then make gnutls-trustfiles equal to ("C:/cygwin/usr/ssl/certs/ca-bundle.trust.crt" "C:/cygwin/usr/ssl/certs/ca-bundle.crt")
Unfortunately these last two steps were not obvious to me and it took me quite some time to work through them.
Tip: if you need to debug gnutls, try setting (setq gnutls-log-level 50).
Now all I need to do is learn gnus!