# HG changeset patch # User Dave Love <fx@gnu.org> # Date 959600473 0 # Node ID fcb030c7708ec8362360cd9ac306dd23037f9346 # Parent 6f7f86b9324756e3d5636632858d10397d30d428 (get_local_map): Extra arg to allow looking for `keymap' too. diff -r 6f7f86b93247 -r fcb030c7708e src/intervals.c --- 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