summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_keymap.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2004-04-06 09:16:57 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2004-04-06 09:16:57 +0000
commit4688564c0a891a2e3fa73255cf907dd269a62a2e (patch)
tree58b7565400d484cfeb1ffd30784ad98b6daf0f9a /Src/Zle/zle_keymap.c
parent294ce1cd6a605a96d92aa270c7bcb47a30fadc1f (diff)
downloadzsh-4688564c0a891a2e3fa73255cf907dd269a62a2e.tar.gz
zsh-4688564c0a891a2e3fa73255cf907dd269a62a2e.zip
19733 with docs tweaked: keymaps for vared and zed
Diffstat (limited to 'Src/Zle/zle_keymap.c')
-rw-r--r--Src/Zle/zle_keymap.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c
index f28dec775..7e5fd02ee 100644
--- a/Src/Zle/zle_keymap.c
+++ b/Src/Zle/zle_keymap.c
@@ -169,8 +169,7 @@ freekeymapnamnode(HashNode hn)
KeymapName kmn = (KeymapName) hn;
zsfree(kmn->nam);
- if(!--kmn->keymap->rc)
- deletekeymap(kmn->keymap);
+ unrefkeymap(kmn->keymap);
zfree(kmn, sizeof(*kmn));
}
@@ -355,8 +354,7 @@ linkkeymap(Keymap km, char *name, int imm)
return 1;
if(n->keymap == km)
return 0;
- if(!--n->keymap->rc)
- deletekeymap(n->keymap);
+ unrefkeymap(n->keymap);
n->keymap = km;
} else {
n = makekeymapnamnode(km);
@@ -364,10 +362,23 @@ linkkeymap(Keymap km, char *name, int imm)
n->flags |= KMN_IMMORTAL;
keymapnamtab->addnode(keymapnamtab, ztrdup(name), n);
}
- km->rc++;
+ refkeymap(km);
return 0;
}
+/**/
+void refkeymap(Keymap km)
+{
+ km->rc++;
+}
+
+/**/
+void unrefkeymap(Keymap km)
+{
+ if (!--km->rc)
+ deletekeymap(km);
+}
+
/* Select a keymap as the current ZLE keymap. Can optionally fall back *
* on the guaranteed safe keymap if it fails. */