all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: help-gnu-emacs@gnu.org
Subject: Re: Bug, or newbie error?
Date: Fri, 01 Jul 2011 20:36:07 -0400	[thread overview]
Message-ID: <8762nl34eg.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 31975451.post@talk.nabble.com

On Fri, Jul 01 2011, weemattisnot wrote:

> I am trying to write a bit of lisp to go in my .emacs file that binds
> C-1 to a command to change the color of the selected text (in
> enriched text minor-mode). I have success running the command M-x
> facemenu-set-foreground where I am prompted for a color, I type red,
> and it changes the selected region red. But, when I try to bind this
> command to a key-press, it doesn't work correctly, changing the color
> of the text at the very end of the document (such that if I add any
> text at the end of the document, it will be red). Here is my .emacs
> lisp (defun headingone () (interactive) (facemenu-set-foreground
> "red") ) (global-set-key (kbd "C-1") 'headingone) Have I done
> something wrong here? Any suggestions are welcome. Thank you in
> advance. Weemattisnot
>  
> View this message in context: Bug, or newbie error?
> Sent from the Emacs - Help mailing list archive at Nabble.com.

If you look at the documentation for facemenu-set-foreground you'll see
that it takes one mandatory argument (the color), and two optional
arguments (point and mark). Since your command is calling this function,
your command needs to first collect all the input that the function
might need. That means your command needs to use the interactive code
(see "Interactive Codes" in the e-lisp manual) that picks up the region.
That happens to be "r". Since "r" passes your command two arguments,
your command signature has to allow for those arguments. So:

(defun headingone (start end)
  (interactive "r")
  (facemenu-set-foreground "red" start end))

That will turn stuff red whether you have an active region or not
(probably not what you want), so you can check if there's an active
region before doing anything:


(defun headingone-2 (&optional start end)
  (interactive "r")
  (if (use-region-p)
      (facemenu-set-foreground "red" start end)
    (message "No active region")))

Hope that helps,

Eric




  reply	other threads:[~2011-07-02  0:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-01 17:23 Bug, or newbie error? weemattisnot
2011-07-02  0:36 ` Eric Abrahamsen [this message]
2011-07-06 16:24   ` weemattisnot

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8762nl34eg.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.