36 #include <sys/types.h>
96 typedef std::map<std::string, std::string>
map_type;
100 template<
typename T, std::
size_t z>
111 @deftypefn {Operator} {} !\n\
112 Logical 'not' operator.\n\
118 @deftypefn {Operator} {} ~\n\
119 Logical 'not' operator.\n\
125 @deftypefn {Operator} {} !=\n\
126 Logical 'not equals' operator.\n\
132 @deftypefn {Operator} {} ~=\n\
133 Logical 'not equals' operator.\n\
139 @deftypefn {Operator} {} \"\n\
145 @deftypefn {Operator} {} #\n\
146 Begin comment character.\n\
147 @seealso{%, #@\\{}\n\
152 @deftypefn {Operator} {} %\n\
153 Begin comment character.\n\
154 @seealso{#, %@\\{}\n\
159 @deftypefn {Operator} {} #@{\n\
160 Begin block comment. There must be nothing else, other than\n\
161 whitespace, in the line both before and after @code{#@{}.\n\
162 It is possible to nest block comments.\n\
163 @seealso{%@\\{, #@\\}, #}\n\
168 @deftypefn {Operator} {} %@{\n\
169 Begin block comment. There must be nothing else, other than\n\
170 whitespace, in the line both before and after @code{%@{}.\n\
171 It is possible to nest block comments.\n\
172 @seealso{#@\\{, %@\\}, %}\n\
177 @deftypefn {Operator} {} #@}\n\
178 Close block comment. There must be nothing else, other than\n\
179 whitespace, in the line both before and after @code{#@}}.\n\
180 It is possible to nest block comments.\n\
181 @seealso{%@\\}, #@\\{, #}\n\
186 @deftypefn {Operator} {} %@}\n\
187 Close block comment. There must be nothing else, other than\n\
188 whitespace, in the line both before and after @code{%@}}.\n\
189 It is possible to nest block comments.\n\
190 @seealso{#@\\}, %@\\{, %}\n\
195 @deftypefn {Operator} {} ...\n\
196 Continuation marker. Joins current line with following line.\n\
201 @deftypefn {Operator} {} &\n\
202 Element by element logical 'and' operator.\n\
208 @deftypefn {Operator} {} &&\n\
209 Logical 'and' operator (with short-circuit evaluation).\n\
215 @deftypefn {Operator} {} '\n\
216 Matrix transpose operator. For complex matrices, computes the\n\
217 complex conjugate (Hermitian) transpose.\n\
219 The single quote character may also be used to delimit strings, but\n\
220 it is better to use the double quote character, since that is never\n\
222 @seealso{.', transpose}\n\
227 @deftypefn {Operator} {} (\n\
228 Array index or function argument delimiter.\n\
233 @deftypefn {Operator} {} )\n\
234 Array index or function argument delimiter.\n\
239 @deftypefn {Operator} {} *\n\
240 Multiplication operator.\n\
241 @seealso{.*, times}\n\
246 @deftypefn {Operator} {} **\n\
247 Power operator. This may return complex results for real inputs. Use\n\
248 @code{realsqrt}, @code{cbrt}, @code{nthroot}, or @code{realroot} to obtain\n\
249 real results when possible.\n\
250 @seealso{power, ^, .**, .^, realpow, realsqrt, cbrt, nthroot}\n\
255 @deftypefn {Operator} {} ^\n\
256 Power operator. This may return complex results for real inputs. Use\n\
257 @code{realsqrt}, @code{cbrt}, @code{nthroot}, or @code{realroot} to obtain\n\
258 real results when possible.\n\
259 @seealso{power, **, .^, .**, realpow, realsqrt, cbrt, nthroot}\n\
264 @deftypefn {Operator} {} +\n\
265 Addition operator.\n\
271 @deftypefn {Operator} {} ++\n\
272 Increment operator. As in C, may be applied as a prefix or postfix\n\
279 @deftypefn {Operator} {} ,\n\
280 Array index, function argument, or command separator.\n\
285 @deftypefn {Operator} {} -\n\
286 Subtraction or unary negation operator.\n\
292 @deftypefn {Operator} {} --\n\
293 Decrement operator. As in C, may be applied as a prefix or postfix\n\
300 @deftypefn {Operator} {} .'\n\
301 Matrix transpose operator. For complex matrices, computes the\n\
302 transpose, @emph{not} the complex conjugate transpose.\n\
303 @seealso{', transpose}\n\
308 @deftypefn {Operator} {} .*\n\
309 Element by element multiplication operator.\n\
310 @seealso{*, times}\n\
315 @deftypefn {Operator} {} .*\n\
316 Element by element power operator. If several complex results are possible,\n\
317 returns the one with smallest non-negative argument (angle). Use\n\
318 @code{realpow}, @code{realsqrt}, @code{cbrt}, or @code{nthroot} if a\n\
319 real result is preferred.\n\
320 @seealso{**, ^, .^, power, realpow, realsqrt, cbrt, nthroot}\n\
325 @deftypefn {Operator} {} .^\n\
326 Element by element power operator. If several complex results are possible,\n\
327 returns the one with smallest non-negative argument (angle). Use\n\
328 @code{realpow}, @code{realsqrt}, @code{cbrt}, or @code{nthroot} if a\n\
329 real result is preferred.\n\
330 @seealso{.**, ^, **, power, realpow, realsqrt, cbrt, nthroot}\n\
335 @deftypefn {Operator} {} ./\n\
336 Element by element right division operator.\n\
337 @seealso{/, .\\, rdivide, mrdivide}\n\
342 @deftypefn {Operator} {} /\n\
343 Right division operator.\n\
344 @seealso{./, \\, rdivide, mrdivide}\n\
349 @deftypefn {Operator} {} .\\\n\
350 Element by element left division operator.\n\
351 @seealso{\\, ./, rdivide, mrdivide}\n\
356 @deftypefn {Operator} {} \\\n\
357 Left division operator.\n\
358 @seealso{.\\, /, ldivide, mldivide}\n\
363 @deftypefn {Operator} {} :\n\
364 Select entire rows or columns of matrices.\n\
369 @deftypefn {Operator} {} ;\n\
370 Array row or command separator.\n\
376 @deftypefn {Operator} {} <\n\
377 'Less than' operator.\n\
383 @deftypefn {Operator} {} <=\n\
384 'Less than' or 'equals' operator.\n\
390 @deftypefn {Operator} {} =\n\
391 Assignment operator.\n\
396 @deftypefn {Operator} {} ==\n\
397 Equality test operator.\n\
403 @deftypefn {Operator} {} >\n\
404 'Greater than' operator.\n\
410 @deftypefn {Operator} {} >=\n\
411 'Greater than' or 'equals' operator.\n\
417 @deftypefn {Operator} {} [\n\
418 Return list delimiter.\n\
424 @deftypefn {Operator} {} ]\n\
425 Return list delimiter.\n\
431 @deftypefn {Operator} {} |\n\
432 Element by element logical 'or' operator.\n\
438 @deftypefn {Operator} {} ||\n\
439 Logical 'or' (with short-circuit evaluation) operator.\n\
448 @deftypefn {Keyword} {} break\n\
449 Exit the innermost enclosing do, while or for loop.\n\
450 @seealso{do, while, for, parfor, continue}\n\
455 @deftypefn {Keyword} {} case @{@var{value}@}\n\
456 A case statement in an switch. Octave cases are exclusive and do not\n\
457 fall-through as do C-language cases. A switch statement must have at least\n\
458 one case. See @code{switch} for an example.\n\
464 @deftypefn {Keyword} {} catch\n\
465 Begin the cleanup part of a try-catch block.\n\
471 @deftypefn {Keyword} {} continue\n\
472 Jump to the end of the innermost enclosing do, while or for loop.\n\
473 @seealso{do, while, for, parfor, break}\n\
478 @deftypefn {Keyword} {} do\n\
479 Begin a do-until loop. This differs from a do-while loop in that the\n\
480 body of the loop is executed at least once.\n\
490 @seealso{for, until, while}\n\
495 @deftypefn {Keyword} {} else\n\
496 Alternate action for an if block. See @code{if} for an example.\n\
502 @deftypefn {Keyword} {} elseif (@var{condition})\n\
503 Alternate conditional test for an if block. See @code{if} for an example.\n\
509 @deftypefn {Keyword} {} end\n\
510 Mark the end of any @code{for}, @code{if}, @code{do}, @code{while}, or\n\
511 @code{function} block.\n\
512 @seealso{for, parfor, if, do, while, function}\n\
517 @deftypefn {Keyword} {} end_try_catch\n\
518 Mark the end of an @code{try-catch} block.\n\
519 @seealso{try, catch}\n\
524 @deftypefn {Keyword} {} end_unwind_protect\n\
525 Mark the end of an unwind_protect block.\n\
526 @seealso{unwind_protect}\n\
531 @deftypefn {Keyword} {} endfor\n\
532 Mark the end of a for loop. See @code{for} for an example.\n\
538 @deftypefn {Keyword} {} endfunction\n\
539 Mark the end of a function.\n\
540 @seealso{function}\n\
545 @deftypefn {Keyword} {} endif\n\
546 Mark the end of an if block. See @code{if} for an example.\n\
552 @deftypefn {Keyword} {} endparfor\n\
553 Mark the end of a parfor loop. See @code{parfor} for an example.\n\
559 @deftypefn {Keyword} {} endswitch\n\
560 Mark the end of a switch block. See @code{switch} for an example.\n\
566 @deftypefn {Keyword} {} endwhile\n\
567 Mark the end of a while loop. See @code{while} for an example.\n\
568 @seealso{do, while}\n\
573 @deftypefn {Keyword} {} for @var{i} = @var{range}\n\
583 @seealso{do, parfor, while}\n\
588 @deftypefn {Keyword} {} function @var{outputs} = function (@var{input}, @dots{})\n\
589 @deftypefnx {Keyword} {} function {} function (@var{input}, @dots{})\n\
590 @deftypefnx {Keyword} {} function @var{outputs} = function\n\
591 Begin a function body with @var{outputs} as results and @var{inputs} as\n\
598 @deftypefn {Keyword} {} global\n\
599 Declare variables to have global scope.\n\
604 if (isempty (@var{x}))\n\
609 @seealso{persistent}\n\
614 @deftypefn {Keyword} {} if (@var{cond}) @dots{} endif\n\
615 @deftypefnx {Keyword} {} if (@var{cond}) @dots{} else @dots{} endif\n\
616 @deftypefnx {Keyword} {} if (@var{cond}) @dots{} elseif (@var{cond}) @dots{} endif\n\
617 @deftypefnx {Keyword} {} if (@var{cond}) @dots{} elseif (@var{cond}) @dots{} else @dots{} endif\n\
618 Begin an if block.\n\
628 disp (\"not one or two\");\n\
637 @deftypefn {Keyword} {} otherwise\n\
638 The default statement in a switch block (similar to else in an if block).\n\
644 @deftypefn {Keyword} {} parfor @var{i} = @var{range}\n\
645 @deftypefnx {Keyword} {} parfor (@var{i} = @var{range}, @var{maxproc})\n\
646 Begin a for loop that may execute in parallel.\n\
655 @seealso{for, do, while}\n\
660 @deftypefn {Keyword} {} persistent @var{var}\n\
661 Declare variables as persistent. A variable that has been declared\n\
662 persistent within a function will retain its contents in memory between\n\
663 subsequent calls to the same function. The difference between persistent\n\
664 variables and global variables is that persistent variables are local in \n\
665 scope to a particular function and are not visible elsewhere.\n\
671 @deftypefn {Keyword} {} return\n\
672 Return from a function.\n\
673 @seealso{function}\n\
678 @deftypefn {Keyword} {} static\n\
679 This function has been deprecated in favor of persistent.\n\
680 @seealso{persistent}\n\
685 @deftypefn {Keyword} {} switch @var{statement}\n\
686 Begin a switch block.\n\
693 case @{\"Yes\" \"yes\" \"YES\" \"y\" \"Y\"@}\n\
695 case @{\"No\" \"no\" \"NO\" \"n\" \"N\"@}\n\
698 error (\"invalid value\");\n\
702 @seealso{if, case, otherwise}\n\
707 @deftypefn {Keyword} {} try\n\
708 Begin a try-catch block.\n\
710 If an error occurs within a try block, then the catch code will be run and\n\
711 execution will proceed after the catch block (though it is often\n\
712 recommended to use the lasterr function to re-throw the error after cleanup\n\
714 @seealso{catch, unwind_protect}\n\
719 @deftypefn {Keyword} {} until\n\
720 End a do-until loop. See @code{do} for an example.\n\
726 @deftypefn {Keyword} {} unwind_protect\n\
727 Begin an unwind_protect block.\n\
729 If an error occurs within the first part of an unwind_protect block\n\
730 the commands within the unwind_protect_cleanup block are executed before\n\
731 the error is thrown. If an error is not thrown, then the\n\
732 unwind_protect_cleanup block is still executed (in other words, the\n\
733 unwind_protect_cleanup will be run with or without an error in the\n\
734 unwind_protect block).\n\
735 @seealso{unwind_protect_cleanup, try}\n\
740 @deftypefn {Keyword} {} unwind_protect_cleanup\n\
741 Begin the cleanup section of an unwind_protect block.\n\
742 @seealso{unwind_protect}\n\
747 @deftypefn {Keyword} {} varargin\n\
748 Pass an arbitrary number of arguments into a function.\n\
749 @seealso{varargout, nargin, isargout, nargout, nthargout}\n\
754 @deftypefn {Keyword} {} varargout\n\
755 Pass an arbitrary number of arguments out of a function.\n\
756 @seealso{varargin, nargin, isargout, nargout, nthargout}\n\
761 @deftypefn {Keyword} {} while\n\
762 Begin a while loop.\n\
772 @seealso{do, endwhile, for, until}\n\
782 for (
map_iter iter = lst.begin (); iter != lst.end (); iter ++)
783 retval[j++] = iter->first;
796 const int key_len = keyword_names.
length ();
799 const int bif_len = bif.
length ();
802 const int cfl_len = cfl.
length ();
805 const int lcl_len = lcl.
length ();
808 const int ffl_len = ffl.
length ();
811 const int afl_len = afl.
length ();
814 = key_len + bif_len + cfl_len + lcl_len + ffl_len + afl_len;
822 for (i = 0; i < key_len; i++)
823 list[j++] = keyword_names[i];
825 for (i = 0; i < bif_len; i++)
828 for (i = 0; i < cfl_len; i++)
831 for (i = 0; i < lcl_len; i++)
834 for (i = 0; i < ffl_len; i++)
837 for (i = 0; i < afl_len; i++)
846 const size_t p1 = msg.find (
'\n');
847 std::string t = msg.substr (0, p1);
849 const size_t p2 = t.find (
"<html");
851 return (p2 != std::string::npos);
857 p1 = msg.find (
'\n');
859 std::string t = msg.substr (0, p1);
861 if (p1 == std::string::npos)
864 size_t p2 = t.find (
"-*- texinfo -*-");
866 return (p2 != std::string::npos);
871 std::string&
w,
bool& symbol_found)
893 ?
"command-line function" :
"built-in function";
902 std::string& file,
bool& symbol_found)
919 symbol_found = (idx != map.end ());
920 h = (symbol_found) ? idx->second :
"";
925 raw_help (
const std::string& nm,
bool& symbol_found)
939 DEFUN (built_in_docstrings_file, args, nargout,
941 @deftypefn {Built-in Function} {@var{val} =} built_in_docstrings_file ()\n\
942 @deftypefnx {Built-in Function} {@var{old_val} =} built_in_docstrings_file (@var{new_val})\n\
943 @deftypefnx {Built-in Function} {} built_in_docstrings_file (@var{new_val}, \"local\")\n\
944 Query or set the internal variable that specifies the name of the\n\
945 file containing docstrings for built-in Octave functions.\n\
946 The default value is\n\
947 @file{@var{octave-home}/share/octave/@var{version}/etc/built-in-docstrings},\n\
948 in which @var{octave-home} is the root directory of the Octave installation,\n\
949 and @var{version} is the Octave version number.\n\
950 The default value may be overridden by the environment variable\n\
951 @w{@env{OCTAVE_BUILT_IN_DOCSTRINGS_FILE}}, or the command line argument\n\
952 @samp{--built-in-docstrings-file FNAME}.\n\
954 Note: This variable is only used when Octave is initializing itself.\n\
955 Modifying it during a running session of Octave will have no effect.\n\
966 std::ifstream file (fname.c_str (), std::ios::in | std::ios::binary);
971 file.ignore (1000, 0x1d);
973 if (file.gcount () == 1000)
980 std::cerr <<
"warning: is builtin-docstrings file corrupted?"
986 size_t bufsize = 100000;
990 while (! file.eof ())
992 file.getline (buf, bufsize, 0x1d);
994 std::string tmp (buf);
996 size_t pos = tmp.find (
'\n');
998 std::string fcn = tmp.substr (0, pos);
1008 tmp = tmp.substr (pos+1);
1013 while (tmp.length () > 2 && tmp[0] ==
'@' && tmp[1] ==
'c')
1015 pos = tmp.find (
'\n');
1016 tmp = tmp.substr (pos+1);
1028 std::cerr <<
"warning: docstring file '" << fname <<
"' not found"
1036 std::string& format)
1038 bool symbol_found =
false;
1039 text =
raw_help (name, symbol_found);
1041 format =
"Not found";
1047 format =
"Not documented";
1052 text.erase (0, idx);
1060 format =
"plain text";
1065 DEFUN (get_help_text, args, ,
"-*- texinfo -*-\n\
1066 @deftypefn {Built-in Function} {[@var{text}, @var{format}] =} get_help_text (@var{name})\n\
1067 Return the raw help text of function @var{name}.\n\
1069 The raw help text is returned in @var{text} and the format in @var{format}\n\
1070 The format is a string which is one of @qcode{\"texinfo\"},\n\
1071 @qcode{\"html\"}, or @qcode{\"plain text\"}.\n\
1076 if (args.length () == 1)
1078 const std::string name = args (0).string_value ();
1091 error (
"get_help_text: invalid input");
1101 std::string& format)
1103 bool symbol_found =
false;
1109 format =
"Not found";
1115 format =
"Not documented";
1120 text.erase (0, idx);
1128 format =
"plain text";
1133 DEFUN (get_help_text_from_file, args, ,
1135 @deftypefn {Built-in Function} {[@var{text}, @var{format}] =} get_help_text_from_file (@var{fname})\n\
1136 Return the raw help text from the file @var{fname}.\n\
1138 The raw help text is returned in @var{text} and the format in @var{format}\n\
1139 The format is a string which is one of @qcode{\"texinfo\"},\n\
1140 @qcode{\"html\"}, or @qcode{\"plain text\"}.\n\
1145 if (args.length () == 1)
1147 const std::string fname = args(0).string_value ();
1160 error (
"get_help_text_from_file: invalid input");
1171 DEFUN (__operators__, , ,
1173 @deftypefn {Function File} __operators__ ()\n\
1174 Undocumented internal function.\n\
1183 DEFUN (__keywords__, , ,
1185 @deftypefn {Function File} __keywords__ ()\n\
1186 Undocumented internal function.\n\
1195 DEFUN (__builtins__, , ,
1197 @deftypefn {Function File} __builtins__ ()\n\
1198 Undocumented internal function.\n\
1211 type = std::string ();
1215 if (name.find_first_of (
'.') == std::string::npos)
1228 type =
"command-line function";
1232 type =
"built-in function";
1237 ? std::string (
"script") : std::string (
"function");
1252 if (name.size () > 1 && name[name.size () - 1] ==
'.')
1276 DEFUN (__which__, args, ,
1278 @deftypefn {Built-in Function} {} __which__ (@var{name}, @dots{})\n\
1279 Undocumented internal function.\n\
1288 int argc = argv.
length ();
1295 Cell files (1, argc-1);
1296 Cell types (1, argc-1);
1298 for (
int i = 1; i < argc; i++)
1300 std::string name = argv[i];
1304 std::string file =
do_which (name, type);
1311 m.
assign (
"name", names);
1312 m.
assign (
"file", files);
1313 m.
assign (
"type", types);
1328 if (filename.find (dir) == 0)
1330 const int dir_len = dir.size ();
1331 const int filename_len = filename.size ();
1336 for (
int i = dir_len; i < filename_len; i++)
1340 return (num_seps <= max_allowed_seps);
1350 DEFUN (__list_functions__, args, ,
1352 @deftypefn {Function File} {@var{retval} =} __list_functions__ ()\n\
1353 @deftypefnx {Function File} {@var{retval} =} __list_functions__ (@var{directory})\n\
1354 Undocumented internal function.\n\
1363 if (args.length () == 0)
1367 std::string dir = args (0).string_value ();
1384 error (
"__list_functions__: DIRECTORY argument must be a string");
1390 DEFUN (doc_cache_file, args, nargout,
1392 @deftypefn {Built-in Function} {@var{val} =} doc_cache_file ()\n\
1393 @deftypefnx {Built-in Function} {@var{old_val} =} doc_cache_file (@var{new_val})\n\
1394 @deftypefnx {Built-in Function} {} doc_cache_file (@var{new_val}, \"local\")\n\
1395 Query or set the internal variable that specifies the name of the\n\
1396 Octave documentation cache file. A cache file significantly improves\n\
1397 the performance of the @code{lookfor} command. The default value is \n\
1398 @file{@var{octave-home}/share/octave/@var{version}/etc/doc-cache},\n\
1399 in which @var{octave-home} is the root directory of the Octave installation,\n\
1400 and @var{version} is the Octave version number.\n\
1401 The default value may be overridden by the environment variable\n\
1402 @w{@env{OCTAVE_DOC_CACHE_FILE}}, or the command line argument\n\
1403 @samp{--doc-cache-file FNAME}.\n\
1405 When called from inside a function with the @qcode{\"local\"} option, the\n\
1406 variable is changed locally for the function and any subroutines it calls. \n\
1407 The original variable value is restored when exiting the function.\n\
1408 @seealso{doc_cache_create, lookfor, info_program, doc, help, makeinfo_program}\n\
1414 DEFUN (texi_macros_file, args, nargout,
1416 @deftypefn {Built-in Function} {@var{val} =} texi_macros_file ()\n\
1417 @deftypefnx {Built-in Function} {@var{old_val} =} texi_macros_file (@var{new_val})\n\
1418 @deftypefnx {Built-in Function} {} texi_macros_file (@var{new_val}, \"local\")\n\
1419 Query or set the internal variable that specifies the name of the\n\
1420 file containing Texinfo macros that are prepended to documentation strings\n\
1421 before they are passed to makeinfo. The default value is \n\
1422 @file{@var{octave-home}/share/octave/@var{version}/etc/macros.texi},\n\
1423 in which @var{octave-home} is the root directory of the Octave installation,\n\
1424 and @var{version} is the Octave version number.\n\
1425 The default value may be overridden by the environment variable\n\
1426 @w{@env{OCTAVE_TEXI_MACROS_FILE}}, or the command line argument\n\
1427 @samp{--texi-macros-file FNAME}.\n\
1429 When called from inside a function with the @qcode{\"local\"} option, the\n\
1430 variable is changed locally for the function and any subroutines it calls. \n\
1431 The original variable value is restored when exiting the function.\n\
1432 @seealso{makeinfo_program}\n\
1438 DEFUN (info_file, args, nargout,
1440 @deftypefn {Built-in Function} {@var{val} =} info_file ()\n\
1441 @deftypefnx {Built-in Function} {@var{old_val} =} info_file (@var{new_val})\n\
1442 @deftypefnx {Built-in Function} {} info_file (@var{new_val}, \"local\")\n\
1443 Query or set the internal variable that specifies the name of the\n\
1444 Octave info file. The default value is\n\
1445 @file{@var{octave-home}/info/octave.info}, in\n\
1446 which @var{octave-home} is the root directory of the Octave installation.\n\
1447 The default value may be overridden by the environment variable\n\
1448 @w{@env{OCTAVE_INFO_FILE}}, or the command line argument\n\
1449 @samp{--info-file FNAME}.\n\
1451 When called from inside a function with the @qcode{\"local\"} option, the\n\
1452 variable is changed locally for the function and any subroutines it calls. \n\
1453 The original variable value is restored when exiting the function.\n\
1454 @seealso{info_program, doc, help, makeinfo_program}\n\
1460 DEFUN (info_program, args, nargout,
1462 @deftypefn {Built-in Function} {@var{val} =} info_program ()\n\
1463 @deftypefnx {Built-in Function} {@var{old_val} =} info_program (@var{new_val})\n\
1464 @deftypefnx {Built-in Function} {} info_program (@var{new_val}, \"local\")\n\
1465 Query or set the internal variable that specifies the name of the\n\
1466 info program to run. The default value is\n\
1467 @file{@var{octave-home}/libexec/octave/@var{version}/exec/@var{arch}/info}\n\
1468 in which @var{octave-home} is the root directory of the Octave installation,\n\
1469 @var{version} is the Octave version number, and @var{arch}\n\
1470 is the system type (for example, @code{i686-pc-linux-gnu}). The\n\
1471 default value may be overridden by the environment variable\n\
1472 @w{@env{OCTAVE_INFO_PROGRAM}}, or the command line argument\n\
1473 @samp{--info-program NAME}.\n\
1475 When called from inside a function with the @qcode{\"local\"} option, the\n\
1476 variable is changed locally for the function and any subroutines it calls. \n\
1477 The original variable value is restored when exiting the function.\n\
1478 @seealso{info_file, doc, help, makeinfo_program}\n\
1484 DEFUN (makeinfo_program, args, nargout,
1486 @deftypefn {Built-in Function} {@var{val} =} makeinfo_program ()\n\
1487 @deftypefnx {Built-in Function} {@var{old_val} =} makeinfo_program (@var{new_val})\n\
1488 @deftypefnx {Built-in Function} {} makeinfo_program (@var{new_val}, \"local\")\n\
1489 Query or set the internal variable that specifies the name of the\n\
1490 program that Octave runs to format help text containing\n\
1491 Texinfo markup commands. The default value is @code{makeinfo}.\n\
1493 When called from inside a function with the @qcode{\"local\"} option, the\n\
1494 variable is changed locally for the function and any subroutines it calls. \n\
1495 The original variable value is restored when exiting the function.\n\
1496 @seealso{texi_macros_file, info_file, info_program, doc, help}\n\
1502 DEFUN (suppress_verbose_help_message, args, nargout,
1504 @deftypefn {Built-in Function} {@var{val} =} suppress_verbose_help_message ()\n\
1505 @deftypefnx {Built-in Function} {@var{old_val} =} suppress_verbose_help_message (@var{new_val})\n\
1506 @deftypefnx {Built-in Function} {} suppress_verbose_help_message (@var{new_val}, \"local\")\n\
1507 Query or set the internal variable that controls whether Octave\n\
1508 will add additional help information to the end of the output from\n\
1509 the @code{help} command and usage messages for built-in commands.\n\
1511 When called from inside a function with the @qcode{\"local\"} option, the\n\
1512 variable is changed locally for the function and any subroutines it calls. \n\
1513 The original variable value is restored when exiting the function.\n\