summaryrefslogtreecommitdiff
path: root/ext/readline/readline.c
diff options
context:
space:
mode:
authorkouji <kouji@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-11 08:31:45 +0000
committerkouji <kouji@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-11 08:31:45 +0000
commitaa2a222f9c515d4221f07510723385ad03ae4d21 (patch)
tree9fd170b3636275b5ae2cc1fa5ff2eb692fcaf244 /ext/readline/readline.c
parente956f28724a40de9b51b8d049e259af96dc738d5 (diff)
* ext/readline/README.ja: added API document for
Readline.vi_editing_mode? and Readline.emacs_editing_mode?. * ext/readline/extconf.rb: checked rl_editing_mode variable in Readline library. * ext/readline/readline.c (readline_s_emacs_editing_mode_p): added Readline.emacs_editing_mode? method. (readline_s_vi_editing_mode_p): added Readline.vi_editing_mode? method. (Init_readline): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/readline/readline.c')
-rw-r--r--ext/readline/readline.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 7f80f83704..41914dca01 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -457,6 +457,28 @@ readline_s_vi_editing_mode(VALUE self)
/*
* call-seq:
+ * Readline.vi_editing_mode? -> bool
+ *
+ * Returns true if vi mode is active. Returns false if not.
+ *
+ * Raises NotImplementedError if the using readline library does not support.
+ *
+ * Raises SecurityError exception if $SAFE is 4.
+ */
+static VALUE
+readline_s_vi_editing_mode_p(VALUE self)
+{
+#ifdef HAVE_RL_EDITING_MODE
+ rb_secure(4);
+ return rl_editing_mode == 0 ? Qtrue : Qfalse;
+#else
+ rb_notimplement();
+ return Qnil; /* not reached */
+#endif /* HAVE_RL_EDITING_MODE */
+}
+
+/*
+ * call-seq:
* Readline.emacs_editing_mode -> nil
*
* Specifies Emacs editing mode. The default is this mode. See the
@@ -481,6 +503,28 @@ readline_s_emacs_editing_mode(VALUE self)
/*
* call-seq:
+ * Readline.emacs_editing_mode? -> bool
+ *
+ * Returns true if emacs mode is active. Returns false if not.
+ *
+ * Raises NotImplementedError if the using readline library does not support.
+ *
+ * Raises SecurityError exception if $SAFE is 4.
+ */
+static VALUE
+readline_s_emacs_editing_mode_p(VALUE self)
+{
+#ifdef HAVE_RL_EDITING_MODE
+ rb_secure(4);
+ return rl_editing_mode == 1 ? Qtrue : Qfalse;
+#else
+ rb_notimplement();
+ return Qnil; /* not reached */
+#endif /* HAVE_RL_EDITING_MODE */
+}
+
+/*
+ * call-seq:
* Readline.completion_append_character = char
*
* Specifies a character to be appended on completion.
@@ -1154,8 +1198,12 @@ Init_readline()
readline_s_get_completion_case_fold, 0);
rb_define_singleton_method(mReadline, "vi_editing_mode",
readline_s_vi_editing_mode, 0);
+ rb_define_singleton_method(mReadline, "vi_editing_mode?",
+ readline_s_vi_editing_mode_p, 0);
rb_define_singleton_method(mReadline, "emacs_editing_mode",
readline_s_emacs_editing_mode, 0);
+ rb_define_singleton_method(mReadline, "emacs_editing_mode?",
+ readline_s_emacs_editing_mode_p, 0);
rb_define_singleton_method(mReadline, "completion_append_character=",
readline_s_set_completion_append_character, 1);
rb_define_singleton_method(mReadline, "completion_append_character",