[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FWD: [OctDev] Patch: Improved filename/symbol completing
From: |
Tatsuro MATSUOKA |
Subject: |
FWD: [OctDev] Patch: Improved filename/symbol completing |
Date: |
Sat, 5 Apr 2008 09:16:05 +0900 (JST) |
--- Kristian Rumberg <address@hidden> wrote:
> On Sat, Apr 5, 2008 at 12:50 AM, Kristian Rumberg
> <address@hidden> wrote:
> > This very simple patch makes sure that only files and no matlab
> > symbols shows up when completing a "cd" och "ls" command. It also
> > makes sure no files are displayed when completing the first command on
> > the line. It's still not possible to complete a path-three such as "cd
> > projects/octave/stacking", only files/folders in the current directory
> > are showned in the completion list (just like before I touched the
> > code).
> >
> > The intelligence of "is_completing_dirfns" needs serious enhancement
> > but at least it's a start.
> >
> > Please leave feedback. Which kind of completion behavior do you prefer?
> >
> > === modified file 'liboctave/cmd-edit.cc'
> > @@ -136,6 +136,8 @@
> > string_vector
> > do_generate_filename_completions (const std::string& text);
> >
> > + std::string do_get_line_buffer (void);
> > +
> > void do_insert_text (const std::string& text);
> >
> > void do_newline (void);
> > @@ -501,6 +503,12 @@
> > return retval;
> > }
> >
> > +std::string
> > +gnu_readline::do_get_line_buffer (void)
> > +{
> > + return ::octave_rl_line_buffer ();
> > +}
> > +
> > void
> > gnu_readline::do_insert_text (const std::string& text)
> > {
> > @@ -726,6 +734,8 @@
> >
> > string_vector do_generate_filename_completions (const std::string& text);
> >
> > + std::string do_get_line_buffer (void);
> > +
> > void do_insert_text (const std::string&);
> >
> > void do_newline (void);
> > @@ -779,6 +789,12 @@
> > return string_vector ();
> > }
> >
> > +std::string
> > +default_command_editor::do_get_line_buffer (void)
> > +{
> > + return "";
> > +}
> > +
> > void
> > default_command_editor::do_insert_text (const std::string&)
> > {
> > @@ -1081,6 +1097,13 @@
> > ? instance->do_get_char_is_quoted_function () : 0;
> > }
> >
> > +std::string
> > +command_editor::get_line_buffer (void)
On Sat, Apr 5, 2008 at 12:50 AM, Kristian Rumberg
<address@hidden> wrote:
> This very simple patch makes sure that only files and no matlab
> symbols shows up when completing a "cd" och "ls" command. It also
> makes sure no files are displayed when completing the first command on
> the line. It's still not possible to complete a path-three such as "cd
> projects/octave/stacking", only files/folders in the current directory
> are showned in the completion list (just like before I touched the
> code).
>
> The intelligence of "is_completing_dirfns" needs serious enhancement
> but at least it's a start.
>
> Please leave feedback. Which kind of completion behavior do you prefer?
>
> === modified file 'liboctave/cmd-edit.cc'
> @@ -136,6 +136,8 @@
> string_vector
> do_generate_filename_completions (const std::string& text);
>
> + std::string do_get_line_buffer (void);
> +
> void do_insert_text (const std::string& text);
>
> void do_newline (void);
> @@ -501,6 +503,12 @@
> return retval;
> }
>
> +std::string
> +gnu_readline::do_get_line_buffer (void)
> +{
> + return ::octave_rl_line_buffer ();
> +}
> +
> void
> gnu_readline::do_insert_text (const std::string& text)
> {
> @@ -726,6 +734,8 @@
>
> string_vector do_generate_filename_completions (const std::string& text);
>
> + std::string do_get_line_buffer (void);
> +
> void do_insert_text (const std::string&);
>
> void do_newline (void);
> @@ -779,6 +789,12 @@
> return string_vector ();
> }
>
> +std::string
> +default_command_editor::do_get_line_buffer (void)
> +{
> + return "";
> +}
> +
> void
> default_command_editor::do_insert_text (const std::string&)
> {
> @@ -1081,6 +1097,13 @@
> ? instance->do_get_char_is_quoted_function () : 0;
> }
>
> +std::string
> +command_editor::get_line_buffer (void)
> +{
> + return (instance_ok())
> + ? instance->do_get_line_buffer() : "";
> +}
> +
> command_editor::user_accept_line_fcn
> command_editor::get_user_accept_line_function (void)
> {
>
> === modified file 'liboctave/cmd-edit.h'
> @@ -120,6 +120,8 @@
>
> static string_vector generate_filename_completions (const std::string&
> text);
>
> + static std::string get_line_buffer(void);
> +
> static void insert_text (const std::string& text);
>
> static void newline (void);
> @@ -252,6 +254,8 @@
>
> virtual string_vector do_generate_filename_completions (const
> std::string& text) = 0;
>
> + virtual std::string do_get_line_buffer(void) = 0;
> +
> virtual void do_insert_text (const std::string&) = 0;
>
> virtual void do_newline (void) = 0;
>
> === modified file 'src/input.cc'
> @@ -447,6 +447,21 @@
> return names;
> }
>
> +static bool
> +is_completing_dirfns (const std::string& line)
> +{
> + static std::string dirfns_commands[] = {"cd", "ls"};
> + static const size_t dirfns_commands_length = 2;
> +
> + for(size_t i=0; i < dirfns_commands_length; ++i)
> + {
> + int index = line.find (dirfns_commands[i] + " ");
> + if (index==0) return true;
> + }
> +
> + return false;
> +}
> +
> static std::string
> generate_completion (const std::string& text, int state)
> {
> @@ -473,7 +488,13 @@
>
> hint = text;
>
> - name_list = generate_possible_completions (text, prefix, hint);
> + std::string line = command_editor::get_line_buffer();
> +
> + // no reason to display matlab symbols while completing a
> file/directory operation
> + if (!is_completing_dirfns(line))
> + name_list = generate_possible_completions (text, prefix, hint);
> + else
> + name_list = string_vector();
>
> name_list_len = name_list.length ();
>
". It also makes sure no files are displayed when completing the first
command (word) on
the line." - that was a lie, and after all it may not be a good idea
--------------------------------------
GANBARE! NIPPON! Win your ticket to Olympic Games 2008.
http://pr.mail.yahoo.co.jp/ganbare-nippon/