unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Emacs-Lisp Q: Minor mode keymap
@ 2007-04-27  1:18 Mark Elston
  2007-04-27  7:25 ` Sebastian Meisel
       [not found] ` <mailman.2580.1177659117.7795.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 5+ messages in thread
From: Mark Elston @ 2007-04-27  1:18 UTC (permalink / raw)
  To: help-gnu-emacs

I have read the relevant chapters (Keymaps and Modes) in the
Emacs Lisp Ref Manual a few times but I am still a little fuzzy
on how to do what I would like to do.  And that is, I have
a collection of Emacs Lisp functions that I have written to
support editing of a particular set of LaTeX files that I am
putting together.  Until now I have either been invoking them
through M-x or binding them with local-set-key whenever I visit
a buffer that I want to use them in.

What I would like to do is package these functions as a minor
mode with its own keymap and use \C-b in the LaTeX-mode-map
used in AucTeX.  Creating the minor mode map is pretty easy.
I assume that from there I do something like:

   (define-prefix-command my-mode-map)

or something similar.

But from there, I don't see what to do.  Do I have to modify my
.emacs to get the binding correct?  Can't I do it in the minor
mode file?

Thanks for any help.

Mark

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Emacs-Lisp Q: Minor mode keymap
  2007-04-27  1:18 Emacs-Lisp Q: Minor mode keymap Mark Elston
@ 2007-04-27  7:25 ` Sebastian Meisel
  2007-04-27  7:48   ` Lennart Borgman (gmail)
       [not found] ` <mailman.2580.1177659117.7795.help-gnu-emacs@gnu.org>
  1 sibling, 1 reply; 5+ messages in thread
From: Sebastian Meisel @ 2007-04-27  7:25 UTC (permalink / raw)
  To: Emacs Mailing List

Mark Elston schrieb:
>
> What I would like to do is package these functions as a minor
> mode with its own keymap and use \C-b in the LaTeX-mode-map
> used in AucTeX.  Creating the minor mode map is pretty easy.
> I assume that from there I do something like:
>
>   (define-prefix-command my-mode-map)
>
> or something similar.
>
> But from there, I don't see what to do.  Do I have to modify my
> .emacs to get the binding correct?  Can't I do it in the minor
> mode file?
Put something like that in your mode file:

(defvar YOUR-mode-map
  (let ((map  (make-sparse-keymap)))
    (define-key map "YOURKEYS"  'YOURFUN)
    ...
   map)
  "Keymap for YOUR-mode.")

(define-YOUR-mode
  "MY mode DOESSOMETHING.
Basic Commands
===== ========
\\[YOURFUN]\tDOESSOMETHING.
...
"
:lighter  "THISSHALLFILLMYENTIREMODELINETOSHOWMYMODEISON"
:keymap  YOUR-mode-map)
<----

Replace the uppercase parts ;-)

Sebastian Meisel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Emacs-Lisp Q: Minor mode keymap
  2007-04-27  7:25 ` Sebastian Meisel
@ 2007-04-27  7:48   ` Lennart Borgman (gmail)
  0 siblings, 0 replies; 5+ messages in thread
From: Lennart Borgman (gmail) @ 2007-04-27  7:48 UTC (permalink / raw)
  To: Sebastian Meisel; +Cc: Emacs Mailing List

Sebastian Meisel wrote:

> (define-YOUR-mode

(define-minor-mode YOUR-mode

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Emacs-Lisp Q: Minor mode keymap
       [not found] ` <mailman.2580.1177659117.7795.help-gnu-emacs@gnu.org>
@ 2007-04-27 17:49   ` Mark Elston
  2007-04-27 20:15     ` Mark Elston
  0 siblings, 1 reply; 5+ messages in thread
From: Mark Elston @ 2007-04-27 17:49 UTC (permalink / raw)
  To: help-gnu-emacs

* Sebastian Meisel wrote (on 4/27/2007 12:25 AM):
> Mark Elston schrieb:
>>
>> What I would like to do is package these functions as a minor
>> mode with its own keymap and use \C-b in the LaTeX-mode-map
>> used in AucTeX.  Creating the minor mode map is pretty easy.
>> I assume that from there I do something like:
>>
>>   (define-prefix-command my-mode-map)
>>
>> or something similar.
>>
>> But from there, I don't see what to do.  Do I have to modify my
>> .emacs to get the binding correct?  Can't I do it in the minor
>> mode file?
> Put something like that in your mode file:
> 
> (defvar YOUR-mode-map
>  (let ((map  (make-sparse-keymap)))
>    (define-key map "YOURKEYS"  'YOURFUN)
>    ...
>   map)
>  "Keymap for YOUR-mode.")
> 
> (define-YOUR-mode
>  "MY mode DOESSOMETHING.
> Basic Commands
> ===== ========
> \\[YOURFUN]\tDOESSOMETHING.
> ...
> "
> :lighter  "THISSHALLFILLMYENTIREMODELINETOSHOWMYMODEISON"
> :keymap  YOUR-mode-map)
> <----
> 
> Replace the uppercase parts ;-)

Let me be a little more clear about what I am trying to accomplish.

I understand how to create a keymap and how to use define-minor-mode
to create a mode that makes use of my keymap.

What I wanted to do was to assign my keymap to the \C-b key in the
LaTeX-mode-map in AucTeX.  Is there a way of doing that in my minor
mode package or do I need to add something to my .emacs to accomplish
this?

This is what I have so far but I haven't found a way of getting
what I am looking for yet.

------------------------------------------------------------------------

(defvar bibs-map nil "\
Keymap containing bindings to the Bibs functions.")

(define-prefix-command 'bibs-map)           ;;; <---Is this necessary?

(define-key bs-map "g" 'bibs-get-ref)
(define-key bs-map "v" 'bibs-find-v-num)
(define-key bs-map "f" 'bibs-fix-quotes)

(define-minor-mode bibs-mode
   ""
   ;; Initial Value
   nil
   ;; The indicator for the mode line
   " Bibs"
   ;; The minor mode bindings
   'bs-map
   (...)           ;;; <------ Is there something I can put here
                   ;;; to associate the (unused) \C-b key in AucTeX
                   ;;; LaTeX-mode-map as a prefix key for bibs-map?
   )


------------------------------------------------------------------------

Alternatively, I could (if necessary) put something in my .emacs that
associates bibs-map with the \C-b in LaTeX-mode-map.  I just don't know
how to do that.

Also, when I toggle off bibs-mode it should remove the keymap from the
\C-b prefix key in LaTeX-mode-map, right?  Again, how do I do that?

Mark

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Emacs-Lisp Q: Minor mode keymap
  2007-04-27 17:49   ` Mark Elston
@ 2007-04-27 20:15     ` Mark Elston
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Elston @ 2007-04-27 20:15 UTC (permalink / raw)
  To: help-gnu-emacs

Never mind.

I just noticed in abbrev.el the following 2 lines:

     (define-key map "\C-x\C-s" 'edit-abbrevs-redefine)
     (define-key map "\C-c\C-c" 'edit-abbrevs-redefine)

So I changed my define-key calls like so:

   (define-key bibs-map "\C-cbg" 'bibs-get-bible-ref)
   (define-key bibs-map "\C-cbv" 'bibs-find-vrs-num)
   (define-key bibs-map "\C-cbf" 'bibs-fix-quotes)

and it works like I wanted it to.  Simple, really, when
you know the 'trick'.  :)

Mark

* Mark Elston wrote (on 4/27/2007 10:49 AM):
> * Sebastian Meisel wrote (on 4/27/2007 12:25 AM):
>> Mark Elston schrieb:
>>>
>>> What I would like to do is package these functions as a minor
>>> mode with its own keymap and use \C-b in the LaTeX-mode-map
>>> used in AucTeX.  Creating the minor mode map is pretty easy.
>>> I assume that from there I do something like:
>>>
>>>   (define-prefix-command my-mode-map)
>>>
>>> or something similar.
>>>
>>> But from there, I don't see what to do.  Do I have to modify my
>>> .emacs to get the binding correct?  Can't I do it in the minor
>>> mode file?
>> Put something like that in your mode file:
>>
>> (defvar YOUR-mode-map
>>  (let ((map  (make-sparse-keymap)))
>>    (define-key map "YOURKEYS"  'YOURFUN)
>>    ...
>>   map)
>>  "Keymap for YOUR-mode.")
>>
>> (define-YOUR-mode
>>  "MY mode DOESSOMETHING.
>> Basic Commands
>> ===== ========
>> \\[YOURFUN]\tDOESSOMETHING.
>> ...
>> "
>> :lighter  "THISSHALLFILLMYENTIREMODELINETOSHOWMYMODEISON"
>> :keymap  YOUR-mode-map)
>> <----
>>
>> Replace the uppercase parts ;-)
> 
> Let me be a little more clear about what I am trying to accomplish.
> 
> I understand how to create a keymap and how to use define-minor-mode
> to create a mode that makes use of my keymap.
> 
> What I wanted to do was to assign my keymap to the \C-b key in the
> LaTeX-mode-map in AucTeX.  Is there a way of doing that in my minor
> mode package or do I need to add something to my .emacs to accomplish
> this?
> 
> This is what I have so far but I haven't found a way of getting
> what I am looking for yet.
> 
> ------------------------------------------------------------------------
> 
> (defvar bibs-map nil "\
> Keymap containing bindings to the Bibs functions.")
> 
> (define-prefix-command 'bibs-map)           ;;; <---Is this necessary?
> 
> (define-key bs-map "g" 'bibs-get-ref)
> (define-key bs-map "v" 'bibs-find-v-num)
> (define-key bs-map "f" 'bibs-fix-quotes)
> 
> (define-minor-mode bibs-mode
>   ""
>   ;; Initial Value
>   nil
>   ;; The indicator for the mode line
>   " Bibs"
>   ;; The minor mode bindings
>   'bs-map
>   (...)           ;;; <------ Is there something I can put here
>                   ;;; to associate the (unused) \C-b key in AucTeX
>                   ;;; LaTeX-mode-map as a prefix key for bibs-map?
>   )
> 
> 
> ------------------------------------------------------------------------
> 
> Alternatively, I could (if necessary) put something in my .emacs that
> associates bibs-map with the \C-b in LaTeX-mode-map.  I just don't know
> how to do that.
> 
> Also, when I toggle off bibs-mode it should remove the keymap from the
> \C-b prefix key in LaTeX-mode-map, right?  Again, how do I do that?
> 
> Mark

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-04-27 20:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-27  1:18 Emacs-Lisp Q: Minor mode keymap Mark Elston
2007-04-27  7:25 ` Sebastian Meisel
2007-04-27  7:48   ` Lennart Borgman (gmail)
     [not found] ` <mailman.2580.1177659117.7795.help-gnu-emacs@gnu.org>
2007-04-27 17:49   ` Mark Elston
2007-04-27 20:15     ` Mark Elston

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).