Mercurial > emacs
changeset 29278:fcb030c7708e
(get_local_map): Extra arg to allow looking for `keymap' too.
author | Dave Love <fx@gnu.org> |
---|---|
date | Mon, 29 May 2000 11:41:13 +0000 |
parents | 6f7f86b93247 |
children | 618b9ba6a8c2 |
files | src/intervals.c |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/intervals.c Mon May 29 11:37:57 2000 +0000 +++ b/src/intervals.c Mon May 29 11:41:13 2000 +0000 @@ -2161,14 +2161,18 @@ return 1; } -/* Return the proper local map for position POSITION in BUFFER. - Use the map specified by the local-map property, if any. +/* If TYPE is `keymap', return the map specified by the `keymap' + property at POSITION in BUFFER or nil. + + Otherwise return the proper local map for position POSITION in + BUFFER. Use the map specified by the local-map property, if any. Otherwise, use BUFFER's local map. */ Lisp_Object -get_local_map (position, buffer) +get_local_map (position, buffer, type) register int position; register struct buffer *buffer; + enum map_property type; { Lisp_Object prop, tem, lispy_position, lispy_buffer; int old_begv, old_zv, old_begv_byte, old_zv_byte; @@ -2194,7 +2198,9 @@ --position; XSETFASTINT (lispy_position, position); XSETBUFFER (lispy_buffer, buffer); - prop = Fget_char_property (lispy_position, Qlocal_map, lispy_buffer); + prop = Fget_char_property (lispy_position, + type == keymap ? Qkeymap : Qlocal_map, + lispy_buffer); BUF_BEGV (buffer) = old_begv; BUF_ZV (buffer) = old_zv; @@ -2209,7 +2215,10 @@ && (tem = Fkeymapp (prop), !NILP (tem))) return prop; - return buffer->keymap; + if (type == keymap) + return Qnil; + else + return buffer->keymap; } /* Produce an interval tree reflecting the intervals in