octave-maintainers
[Top][All Lists]
Advanced

[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/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]