octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: option for enabling/disabling auto-suggest feature


From: Rik
Subject: Re: option for enabling/disabling auto-suggest feature
Date: Wed, 2 May 2018 13:46:07 -0700

On 05/02/2018 11:12 AM, Sudeepam Pandey wrote:
> > > On Wed, May 2, 2018 at 9:34 PM, Rik <address@hidden> wrote: > > > Here is a demo I made just now... It is able to do the job of a on/off feature. The initial try/catch block is for the first time when the preference 'autosuggestion' will not be present in the group 'Octave'. Later on, the user can turn the feature on/off using setpref(); > > ------------------------------------------------------------------------------------------------------------------------------------- > > function txt = __suggestions__(fcn) > > try > getpref ("Octave", "autosuggestion"); > catch err > if (strcmpi (err.message, "getpref: preference autosuggest does not exist in GROUP Octave")) > addpref ("Octave", "autosuggestion", true); > endif > end > > pref = getpref ("Octave", "autosuggestion"); > if (pref == false) > disp ("Disabled"); > elseif (pref == true) > disp ("Did you mean any of the following..."); > endif > > endfunction; > > ---------------------------------------------------------------------------------------------------------------------------------------- > > Note: It is a sample code, it may not strictly adhere to the Octave style of coding.
Looks good.  For performance, you can use the try/catch block to get the value of the preference just once.  See below

  pref = false;
  try
    pref = getpref ("Octave", "autosuggestion");
  catch err
    if (strcmp (err.message, "getpref: preference autosuggest does not exist in GROUP Octave"))
      addpref ("Octave", "autosuggestion", true);
      pref = true;
    endif
  end

  if (pref == true)
    disp ("Did you mean any of the following...");
  else
    disp ("Disabled");
  endif
 
endfunction

>> >> 2) Another thing that bothers me is the absence of missing_property_hook() function...the approach that we have discussed does not work when we make a typo while typing a graphic/line property etc.. We can choose to add a missing_property_hook() function but this would have additional challenges. Examples are... >> a) How do we do it? What files do we tweak? >> b) If we finally make it, what does the parser prioritize when it doesn't recognize an identifier? missing_function_hook or the missing_property_hook? > > If you implement it the way I suggested then the two functions are at different levels of parsing and missing_function_hook would take precedence over missing_property_hook. > > > I understand. There are a few doubts however... > > 1) Will this file, libinterp/corefcn/graphics.cc cover all the major properties (figure, line, axis, etc...)?
Yes.

> 2) Can you tell me where I can find missing_function_hook() so that I could make missing_property_hook() similar to that?
See libinterp/corefcn/variables.cc:2581.

--Rik


reply via email to

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