Open GregDavidson opened 5 years ago
Hi Greg,
This is interesting. As you may know, I'm not the author of Outshine, just the current maintainer. I had never noticed the backslash in that code.
In my own config, I have the same code, which is in the :config
section of a (use-package outshine
form. After starting Emacs, I evaluated this code with the results in comments (on Emacs 26.1):
outline-minor-mode-prefix ;;=> "@" (GitHub renders this differently; in Emacs, it looks like "^C@")
(defvar outline-minor-mode-prefix "\M-#") ;;=> outline-minor-mode-prefix
outline-minor-mode-prefix ;;=> "\243"
(defvar what "\M-#")
what ;;=> "\243"
(defvar what* "M-#")
what* ;;=> "M-#"
I see that in outline.el
, outline-minor-mode-prefix
is also defined, like this:
(defcustom outline-minor-mode-prefix "\C-c@"
"Prefix key to use for Outline commands in Outline minor mode.
The value of this variable is checked as part of loading Outline mode.
After that, changing the prefix key requires manipulating keymaps."
:type 'string
:group 'outlines)
So the initial value of it in my config was that default value.
Of course, that variable probably shouldn't be redefined in this package. Long-term, that's something we should fix.
Anyway, about your issue: I don't know why you're seeing it as "£". Looking at the Elisp manual, section 2.3.8.3, it says:
Properly speaking, strings cannot hold meta characters; but when a
string is to be used as a key sequence, there is a special convention
that provides a way to represent meta versions of ASCII characters in a
string. If you use the ‘\M-’ syntax to indicate a meta character in a
string constant, this sets the 2**7 bit of the character in the string.
If the string is used in ‘define-key’ or ‘lookup-key’, this numeric code
is translated into the equivalent meta character. *Note Character
Type::.
If I understand correctly, it could also be written with kbd
without using a backslash like:
(defvar outline-minor-mode-prefix (kbd "M-#"))
I don't know of anyone else reporting a problem with this. How is it interfering with your usage? Can you reproduce it with emacs -q
? Maybe there's something else in your config causing the problem.
When I use the recommended (defvar outline-minor-mode-prefix "\M-#") I discover that outline-minor-mode-prefix is "£" (British pound sterling symbol) which string-bytes says is a 1-byte string! This was a surprise to me and is also interfering with my using outshine commands. I'm using Emacs 26.2 and I am not familiar with whatever exotic feature I've stumbled upon! If I double the backslash I then get a 4-byte string starting with a literal backslash - is this what is desired for Outshine?