Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
925083d1
Commit
925083d1
authored
Apr 20, 1994
by
Karl Heuer
Browse files
(describe_map_tree, describe_map): Skip keymaps we've seen before.
parent
39e9ebcd
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
11 deletions
+23
-11
src/keymap.c
src/keymap.c
+23
-11
No files found.
src/keymap.c
View file @
925083d1
...
...
@@ -1878,8 +1878,8 @@ describe_map_tree (startmap, partial, shadow, prefix, title, nomenu)
char
*
title
;
int
nomenu
;
{
Lisp_Object
maps
;
struct
gcpro
gcpro1
;
Lisp_Object
maps
,
seen
;
struct
gcpro
gcpro1
,
gcpro2
;
int
something
=
0
;
char
*
key_heading
=
"\
...
...
@@ -1887,7 +1887,8 @@ key binding\n\
--- -------
\n
"
;
maps
=
Faccessible_keymaps
(
startmap
,
prefix
);
GCPRO1
(
maps
);
seen
=
Qnil
;
GCPRO2
(
maps
,
seen
);
if
(
nomenu
)
{
...
...
@@ -1967,7 +1968,8 @@ key binding\n\
sub_shadows
=
Fcons
(
shmap
,
sub_shadows
);
}
describe_map
(
Fcdr
(
elt
),
Fcar
(
elt
),
describe_command
,
partial
,
sub_shadows
);
describe_map
(
Fcdr
(
elt
),
Fcar
(
elt
),
describe_command
,
partial
,
sub_shadows
,
&
seen
);
skip:
;
}
...
...
@@ -2024,15 +2026,16 @@ shadow_lookup (shadow, key, flag)
/* Describe the contents of map MAP, assuming that this map itself is
reached by the sequence of prefix keys KEYS (a string or vector).
PARTIAL, SHADOW
is
as in `describe_map_tree' above. */
PARTIAL, SHADOW
are
as in `describe_map_tree' above. */
static
void
describe_map
(
map
,
keys
,
elt_describer
,
partial
,
shadow
)
describe_map
(
map
,
keys
,
elt_describer
,
partial
,
shadow
,
seen
)
register
Lisp_Object
map
;
Lisp_Object
keys
;
int
(
*
elt_describer
)
();
int
partial
;
Lisp_Object
shadow
;
Lisp_Object
*
seen
;
{
Lisp_Object
elt_prefix
;
Lisp_Object
tail
,
definition
,
event
;
...
...
@@ -2044,7 +2047,6 @@ describe_map (map, keys, elt_describer, partial, shadow)
if
(
!
NILP
(
keys
)
&&
XFASTINT
(
Flength
(
keys
))
>
0
)
{
Lisp_Object
tem
;
/* Call Fkey_description first, to avoid GC bug for the other string. */
tem
=
Fkey_description
(
keys
);
elt_prefix
=
concat2
(
tem
,
build_string
(
" "
));
...
...
@@ -2063,17 +2065,17 @@ describe_map (map, keys, elt_describer, partial, shadow)
GCPRO3
(
elt_prefix
,
definition
,
kludge
);
for
(
tail
=
XCONS
(
map
)
->
cdr
;
CONSP
(
tail
);
tail
=
Fcdr
(
tail
))
for
(
tail
=
map
;
CONSP
(
tail
);
tail
=
XCONS
(
tail
)
->
cdr
)
{
QUIT
;
if
(
XTYPE
(
XCONS
(
tail
)
->
car
)
==
Lisp_Vector
)
describe_vector
(
XCONS
(
tail
)
->
car
,
elt_prefix
,
elt_describer
,
partial
,
shadow
);
else
else
if
(
CONSP
(
XCONS
(
tail
)
->
car
))
{
event
=
Fcar_safe
(
Fcar
(
tail
))
;
definition
=
get_keyelt
(
Fcdr_safe
(
Fcar
(
tail
))
,
0
);
event
=
XCONS
(
XCONS
(
tail
)
->
car
)
->
car
;
definition
=
get_keyelt
(
XCONS
(
XCONS
(
tail
)
->
car
)
->
cdr
,
0
);
/* Don't show undefined commands or suppressed commands. */
if
(
NILP
(
definition
))
continue
;
...
...
@@ -2114,6 +2116,16 @@ describe_map (map, keys, elt_describer, partial, shadow)
for alignment purposes. */
(
*
elt_describer
)
(
definition
);
}
else
if
(
EQ
(
XCONS
(
tail
)
->
car
,
Qkeymap
))
{
/* The same keymap might be in the structure twice, if we're
using an inherited keymap. So skip anything we've already
encountered. */
tem
=
Fassq
(
tail
,
*
seen
);
if
(
CONSP
(
tem
)
&&
Fequal
(
XCONS
(
tem
)
->
car
,
keys
))
break
;
*
seen
=
Fcons
(
Fcons
(
tail
,
keys
),
*
seen
);
}
}
UNGCPRO
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment