Mercurial > hg > octave-lyh
diff scripts/prefs/rmpref.m @ 14540:ac8520c03fc9
rmpref.m: Fix function to delete, not just return, preference. (Bug #35712)
* rmpref.m: Fix function to delete, not just return, preference. (Bug #35712)
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Mon, 09 Apr 2012 13:07:08 -0700 |
parents | 72c96de7a403 |
children |
line wrap: on
line diff
--- a/scripts/prefs/rmpref.m +++ b/scripts/prefs/rmpref.m @@ -17,14 +17,15 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} rmpref (@var{group}, @var{pref}) +## @deftypefn {Function File} {} rmpref (@var{group}) +## @deftypefnx {Function File} {} rmpref (@var{group}, @var{pref}) ## Remove the named preference @var{pref} from the preference group ## @var{group}. ## ## The named preference group must be a character string. ## -## The preference @var{pref} may be a character string or a cell array -## of character strings. +## The preference @var{pref} may be a character string or cell array +## of strings. ## ## If @var{pref} is not specified, remove the preference group ## @var{group}. @@ -37,25 +38,48 @@ function retval = rmpref (group, pref) - prefs = loadprefs (); + if (nargin < 1 || nargin > 2) + print_usage (); + elseif (! ischar (group)) + error ("rmpref: GROUP must be a string"); + elseif (nargin == 2 && ! (ischar (pref) || iscellstr (pref))) + error ("rmpref: PREF must be a string or cell array of strings"); + endif if (nargin == 1) - if (ischar (group)) - retval = isfield (prefs, group); + if (ispref (group)) + prefs = loadprefs (); + prefs = rmfield (prefs, group); + saveprefs (prefs); else - error ("expecting group to be a character array"); - endif - elseif (nargin == 2) - grp = getpref (group, pref); - if (ischar (pref) || iscellstr (pref)) - retval = isfield (grp, pref); + error ("rmpref: group <%s> does not exist", group); endif else - print_usage (); + valid = ispref (group, pref); + if (all (valid)) + prefs = loadprefs (); + prefs.(group) = rmfield (prefs.(group), pref); + saveprefs (prefs); + else + if (! ispref (group)) + error ("rmpref: group <%s> does not exist", group); + else + idx = find (! valid, 1); + error ("rmpref: pref <%s> does not exist", (cellstr (pref)){idx} ); + endif + endif endif endfunction -%% Testing these functions will require some care to avoid wiping out -%% existing (or creating unwanted) preferences for the user running the -%% tests. + +## Testing these functions will require some care to avoid wiping out +## existing (or creating unwanted) preferences for the user running the +## tests. + +## Test input validation +%!error rmpref () +%!error rmpref (1,2,3) +%!error rmpref ({"__group1__"}) +%!error rmpref ("__group1__", 1) +