down-mouse-1 is a "button-down" event which is generated immediately when you press the mouse button. mouse-1 is a "click" event, which is generated if you release the button at the same position as the "button-down" event. drag-mouse-1 is a "drag" event which would be generated if you released the button at a ...


They are duplicates, indeed. The reason they exist is to make it more ergonomic to type digit arguments regardless if the next command uses Meta or Control. For example, typing C-5 M-f is very convoluted; M-5 M-f is much easier. You are free to bind them to your own commands if you like.


Yes, they are duplicates. If you want to use one of them for your own purposes, I would recommend to keep the meta ones and rebind the control ones. One reason to keep the meta ones is that if you run Emacs in a terminal, most terminals don't transmit digit differently from plain Ctrl+digit, which makes Ctrl+digit bindings inaccessible. On the other hand ...


In a terminal the value of [(return)] doesn't apply. You need to use (kbd "RET") instead. (or probably other variations would do, but not [(return)]).


Programs running in the terminal can’t receive a lot of key combinations. Shifted arrow keys are just one more example in a long list. Run the Emacs gui instead. You can see this in action by using C-h k, then pressing a key combination. Emacs will tell you what it received and what command it would invoke.


You should steal the technique used by bind-key*. Basically, the bindings in minor modes take precedence over major modes, and minor modes in the emulation-mode-map-alists take über precedence. Mastering Emacs has a good outline of keymap lookup order. Here's a sampling from my config: (defvar my/keys-keymap (make-keymap) "Keymap for my/keys-mode"...


Emacs has no mechanism to prevent this other than convention. The convention is that all of the alphabetical keys starting with C-c are reserved for the user. You could change your key binding to C-c n and it wouldn’t be overwritten. The other alternative is to configure hook functions in your init file so that when a buffer enters a mode that shadows your C-...


Both SLIME and SLY are user interfaces for interacting with a running Lisp process. SLY is much newer than SLIME, and so it copies some conventions and key bindings from SLIME. You can’t usefully use both at the same time, so the author of SLY made it check to see if you have SLIME configured as well. This is annoying you, but it would certainly annoy you ...

Only top voted, non community-wiki answers of a minimum length are eligible