Mercurial > emacs
changeset 12542:f86a10208f7e
(current_minor_maps): Catch errors in Findirect_function.
(current_minor_maps_error): New function.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Mon, 17 Jul 1995 22:21:54 +0000 |
parents | 33a4586124e9 |
children | 13aa3e939a4d |
files | src/keymap.c |
diffstat | 1 files changed, 20 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keymap.c Mon Jul 17 22:21:21 1995 +0000 +++ b/src/keymap.c Mon Jul 17 22:21:54 1995 +0000 @@ -799,6 +799,13 @@ static Lisp_Object *cmm_modes, *cmm_maps; static int cmm_size; +/* Error handler used in current_minor_maps. */ +static Lisp_Object +current_minor_maps_error () +{ + return Qnil; +} + /* Store a pointer to an array of the keymaps of the currently active minor modes in *buf, and return the number of maps it contains. @@ -830,6 +837,8 @@ && (val = find_symbol_value (var), ! EQ (val, Qunbound)) && ! NILP (val)) { + Lisp_Object temp; + if (i >= cmm_size) { Lisp_Object *newmodes, *newmaps; @@ -865,9 +874,17 @@ else break; } - cmm_modes[i] = var; - cmm_maps [i] = Findirect_function (XCONS (assoc)->cdr); - i++; + + /* Get the keymap definition--or nil if it is not defined. */ + temp = internal_condition_case_1 (Findirect_function, + XCONS (assoc)->cdr, + Qerror, current_minor_maps_error); + if (!NILP (temp)) + { + cmm_modes[i] = var; + cmm_maps [i] = temp; + i++; + } } if (modeptr) *modeptr = cmm_modes;