From: Pascal Bourguignon <spam@thalassa.informatimago.com>
Subject: Re: A couple rudimentary elisp questions
Date: 01 Mar 2004 03:17:55 +0100 [thread overview]
Message-ID: <87smgtxqcs.fsf@thalassa.informatimago.com> (raw)
In-Reply-To: mailman.810.1078098980.340.help-gnu-emacs@gnu.org
exits funnel <exitsfunnel@yahoo.com> writes:
> Hello,
>
> I'm pretty new to emacs and I've decided it's time to
> take a crack at some simple lisp. I have a couple
> silly questions:
>
> 1) Is there no way to specify multi-line comments? I
> read the 'comments' section in the 'Emacs Lisp
> Reference Manual' and it seems to indicate not, but it
> seems kind of hard to believe. I'm trying to write a
> custom c-style and it would be helpful if I could
> comment/uncomment large chunks of my .emacs file and
> reload it so I could try to figure out what's going
> on. If there really are no multi line comments is
> there any tricks for kludging it?
In emacs lisp there's no multiline comment. You can use
comment-region / uncomment-region to comment several lines at once.
Otherwise you can use this trick: use a multi-line string as a
comment, like you do for documentation strings:
(defun my-fun ()
" This
is the documentation
string of the function
my-fun that appears
when you ask for the
function documentation
with (describe-function 'my-fun)
or C-h C-f my-fun RET
"
(do-something)
" Here is a ''comment''
spread on several
lines.
Actually, it's not a
comment, it's a string
that is ''evaluated''
in the course of this
function, but since
we don't do anything
with it, it's finally
ignored. "
(do-something-else)
(get-result))
Of course, since the strings are syntactically significant, you must
take care where you put them. You can't put them inside function
argument lists, or inside other data lists. They eventually get
ignored only in statement lists, inside progn and equivalent (and not
in a result position!).
Perhaps a cleaner way to do it would be to defined a comment macro:
(defmacro rem (&rest args))
(defun my-fun ()
" This
is the documentation
string of the function
my-fun that appears
when you ask for the
function documentation
with (describe-function 'my-fun)
or C-h C-f my-fun RET
"
(do-something)
(rem Here we have a "comment"
but it is still scanned
and tokenized.
"So we may still use strings
and use any kind of invalid
token such as . . . :-)
But note that you must still
escape double-quotes such as: \"
")
(do-something-else)
(get-result))
You get two advantages with this rem macro:
1- a code walker can find your comments if you need to process them.
2- since the macro generates nothing, the comment/strings don't
eventually appear in compiled code, and the execution of
compiled code is strictly equivalent with or without the (rem ...)
(that could be not the case without the macro).
> 2) I see alot of lists of the form (foo . bar). What
> does the dot specify?
It's the notation for a cons cell:
(cons 'foo 'bar) == (foo . bar)
Lists are built on cons cells, starting from the empty list ():
(cons 'foo ()) == (foo . ()) == (foo)
(cons 'bar (cons 'foo ())) == (bar . (foo . ())) == (bar foo)
(cons 'baz
(cons 'bar
(cons 'foo ()))) == (baz . (bar . (foo . ()))) == (baz bar foo)
The value assigned to the symbol nil is (), the empty list, which is
actually a special atom.
The empty list () is NOT a cons: (consp ()) == nil, (atom ()) == t.
--
__Pascal_Bourguignon__ http://www.informatimago.com/
There is no worse tyranny than to force a man to pay for what he doesn't
want merely because you think it would be good for him.--Robert Heinlein
http://www.theadvocates.org/
next prev parent reply other threads:[~2004-03-01 2:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.810.1078098980.340.help-gnu-emacs@gnu.org>
2004-03-01 0:56 ` A couple rudimentary elisp questions Guldo K
2004-03-01 0:57 ` Johan Bockgård
2004-03-01 1:09 ` exits funnel
2004-03-01 2:17 ` Pascal Bourguignon [this message]
2004-03-02 21:40 ` exits funnel
[not found] <mailman.812.1078103660.340.help-gnu-emacs@gnu.org>
2004-03-01 17:09 ` Stefan Monnier
2004-02-29 23:55 exits funnel
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=87smgtxqcs.fsf@thalassa.informatimago.com \
--to=spam@thalassa.informatimago.com \
/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).