help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug, or newbie error?


From: weemattisnot
Subject: Re: Bug, or newbie error?
Date: Wed, 6 Jul 2011 09:24:36 -0700 (PDT)

Awesome.  This worked.  Thank you!  


Eric Abrahamsen-2 wrote:
> 
> 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
> 
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Bug%2C-or-newbie-error--tp31975451p32006326.html
Sent from the Emacs - Help mailing list archive at Nabble.com.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]