From 1788d73cd8c43eb252533be6fadf567f38e724d0 Mon Sep 17 00:00:00 2001
From: Sorin Ionescu <sorin.ionescu@gmail.com>
Date: Wed, 17 Oct 2012 12:43:48 -0400
Subject: [PATCH] [Fix #263, Fix #314] Ensure application mode is valid before
 use

---
 modules/editor/init.zsh | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh
index f9968515..53292923 100644
--- a/modules/editor/init.zsh
+++ b/modules/editor/init.zsh
@@ -146,16 +146,18 @@ zle -N editor-info
 function zle-keymap-select zle-line-init zle-line-finish {
   # The terminal must be in application mode when ZLE is active for $terminfo
   # values to be valid.
-  case "$0" in
-    (zle-line-init)
-      # Enable terminal application mode.
-      echoti smkx
-    ;;
-    (zle-line-finish)
-      # Disable terminal application mode.
-      echoti rmkx
-    ;;
-  esac
+  if (( $+terminfo[smkx] && $+terminfo[rmkx] )); then
+    case "$0" in
+      (zle-line-init)
+        # Enable terminal application mode.
+        echoti smkx
+      ;;
+      (zle-line-finish)
+        # Disable terminal application mode.
+        echoti rmkx
+      ;;
+    esac
+  fi
 
   # Update editor information.
   zle editor-info