From: pjb@informatimago.com (Pascal J. Bourguignon)
To: help-gnu-emacs@gnu.org
Subject: Re: [ELISP] How do you turn an array of chars into a string?
Date: Sun, 01 Aug 2010 23:52:12 +0200 [thread overview]
Message-ID: <87aap6f1bn.fsf@kuiper.lan.informatimago.com> (raw)
In-Reply-To: 87wrsae07o.fsf@kzsu.stanford.edu
Joseph Brenner <doom@kzsu.stanford.edu> writes:
> The elisp manual has this example, using "kbd" to convert a (relatively)
> readable string into the "internal Emacs key representation":
>
> (global-set-key (kbd "C-x C-\\") 'next-line)
>
> (global-set-key [?\C-x ?\C-\\] 'next-line)
>
> What's the inverse of kbd?
> What if you want to convert an array-of-chars
> into a string?
These are two radically different things.
The inverse of kbd doesn't convert an array of characters into a
string, it would produce a string containing a text describing in a
human readable form the keychoard sequence.
So what do you really want?
To convert a vector of characters to a string you could use:
(require 'cl) ; all the good stuff is always in there!
(coerce [?c ?a ?t] 'string) --> "cat"
(concatenate 'string "A " [?c ?a ?t] '(? ?e ?a ?t ?s) " a mouse.")
--> "A cat eats a mouse."
To convert a vector of key chords into a human readable description of
it, I don't know. But the command where-is seems to be knowing how to
do it, so let's read the source of where-is! Here, we find a:
(mapconcat 'key-description keys ", ") therefore key-description might
be the right function. Read the documentation. Yes! Notice how it
says nothing about converting vectors to string!!!
(key-description (kbd "C-x C-\\"))
--> "C-x C-\\"
(key-description (kbd "C-M-A-s-Z C-u 123 H-S-A-é"))
--> "A-C-M-s-z C-u 1 2 3 A-H-S-é"
Looks good...
> Things like this seem to work, but only for very simple chars:
>
> (mapconcat 'string [?c ?a ?t] "") ;; => "cat"
What is a non-simple character???
--
__Pascal Bourguignon__ http://www.informatimago.com/
next prev parent reply other threads:[~2010-08-01 21:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-01 17:01 [ELISP] How do you turn an array of chars into a string? Joseph Brenner
2010-08-01 21:52 ` Pascal J. Bourguignon [this message]
2010-08-01 23:07 ` Joseph Brenner
2010-08-02 21:22 ` Stefan Monnier
2010-08-02 21:55 ` Pascal J. Bourguignon
2010-08-02 22:41 ` Johan Bockgård
2010-08-02 22:57 ` Pascal J. Bourguignon
2010-08-03 9:33 ` Stefan Monnier
2010-08-03 20:57 ` Joseph Brenner
2010-08-04 9:27 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87aap6f1bn.fsf@kuiper.lan.informatimago.com \
--to=pjb@informatimago.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).