* Rafael Laboissiere <[email protected]> [2010-08-12 20:24]:
> * Prof Brian Ripley <[email protected]> [2010-08-12 18:25]:
>
> > If you provide a patch with these extremely important issues
> > resolved, we will consider its merits. But not otherwise.
>
> Please, tell me whether what I wrote above is okay and I will prepare a
> new patch containing the copyright clarification.
I did not hear from you but I went ahead and prepared a patch according
to your recommendations, attached below. I hope that the copyright and
licensing issues are correctly sorted out now.
As I explained in my previous post, none of the lines of code that I
added are mine, so it does not make sense for me to claim copyright on
sys-std.c. I did add my name and my personal email address though, for
credit purposes, but feel free to do whatever you think is appropriate.
Best regards,
Rafael Laboissiere
Index: src/unix/sys-std.c
===================================================================
--- src/unix/sys-std.c (revision 52720)
+++ src/unix/sys-std.c (working copy)
@@ -591,6 +591,88 @@
onintr();
}
+/* ============================================================
+ Add a function that accepts the current line for execution and
+ fetch the next line relative to the current line from the history for
+ editing.
+
+ The code below is taken as is from the bashline.c file of the
+ Bash sources, version 3.0, available from
+ ftp://ftp.gnu.org/gnu/bash/bash-3.0.tar.gz
+
+ The header to this file contains the following copyright notice and
+ licencing conditions:
+
+ ============================================================
+ Copyright (C) 1987-2004 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ Bash is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash; see the file COPYING. If not, write to the Free
+ Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+ ============================================================
+
+ This change was contributed originally by
+ Rafael Laboissiere <[email protected]>
+
+*/
+
+#ifdef HAVE_READLINE_HISTORY_H
+
+/* === Start of code taken from bashline.c === */
+
+static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
+
+static int saved_history_line_to_use = -1;
+
+static int
+set_saved_history ()
+{
+ if (saved_history_line_to_use >= 0)
+ rl_get_previous_history (history_length - saved_history_line_to_use, 0);
+ saved_history_line_to_use = -1;
+ rl_startup_hook = old_rl_startup_hook;
+ return (0);
+}
+
+static int
+operate_and_get_next(int count, int c)
+{
+ int where;
+
+ /* Accept the current line. */
+ rl_newline (1, c);
+
+ /* Find the current line, and find the next line to use. */
+ where = where_history ();
+
+ if ((history_is_stifled () && (history_length >= history_max_entries)) ||
+ (where >= history_length - 1))
+ saved_history_line_to_use = where;
+ else
+ saved_history_line_to_use = where + 1;
+
+ old_rl_startup_hook = rl_startup_hook;
+ rl_startup_hook = set_saved_history;
+
+ return 0;
+}
+
+/* === End of code taken from bashline.c === */
+
+#endif
+
#ifdef HAVE_RL_COMPLETION_MATCHES
/* ============================================================
function-completion interface formerly in package rcompletion by
@@ -887,6 +969,10 @@
#ifdef HAVE_RL_COMPLETION_MATCHES
initialize_rlcompletion();
#endif
+#ifdef HAVE_READLINE_HISTORY_H
+ rl_add_defun ("operate-and-get-next", operate_and_get_next,
+ CTRL ('O'));
+#endif
}
else
#endif /* HAVE_LIBREADLINE */
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel