summaryrefslogtreecommitdiff
path: root/ext/readline
diff options
context:
space:
mode:
Diffstat (limited to 'ext/readline')
-rw-r--r--ext/readline/README.ja18
-rw-r--r--ext/readline/extconf.rb1
-rw-r--r--ext/readline/readline.c48
3 files changed, 67 insertions, 0 deletions
diff --git a/ext/readline/README.ja b/ext/readline/README.ja
index b8337780f5..fda469d07a 100644
--- a/ext/readline/README.ja
+++ b/ext/readline/README.ja
@@ -186,6 +186,15 @@ Readline.vi_editing_mode -> nil
$SAFE が 4 の場合、例外 SecurityError が発生します。
+Readline.vi_editing_mode? -> bool
+
+ 編集モードが vi モードの場合、true を返します。そうでなければ false
+ を返します。
+
+ サポートしていない環境では、例外 NotImplementedError が発生します。
+
+ $SAFE が 4 の場合、例外 SecurityError が発生します。
+
Readline.emacs_editing_mode -> nil
編集モードを Emacs モードにします。
@@ -196,6 +205,15 @@ Readline.emacs_editing_mode -> nil
$SAFE が 4 の場合、例外 SecurityError が発生します。
+Readline.emacs_editing_mode? -> bool
+
+ 編集モードが Emacs モードの場合、true を返します。そうでなければ false
+ を返します。
+
+ サポートしていない環境では、例外 NotImplementedError が発生します。
+
+ $SAFE が 4 の場合、例外 SecurityError が発生します。
+
Readline.completion_append_character = char
ユーザの入力の補完が完了した場合に、最後に付加する文字 char を指定し
diff --git a/ext/readline/extconf.rb b/ext/readline/extconf.rb
index 84fb9b14a6..1d74e29124 100644
--- a/ext/readline/extconf.rb
+++ b/ext/readline/extconf.rb
@@ -58,6 +58,7 @@ have_readline_var("rl_completer_quote_characters")
have_readline_var("rl_filename_quote_characters")
have_readline_var("rl_attempted_completion_over")
have_readline_var("rl_library_version")
+have_readline_var("rl_editing_mode")
# workaround for native windows.
/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && have_readline_var("rl_event_hook")
have_readline_func("rl_cleanup_after_signal")
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",