|
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 |
[Prev in Thread] | Current Thread | [Next in Thread] |