annotate libinterp/corefcn/help.cc @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents f18f5cae2b06
children 83f9f8bda883
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30325
diff changeset
3 // Copyright (C) 1993-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
26 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21200
diff changeset
27 # include "config.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
28 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
29
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1315
diff changeset
30 #include <cstdlib>
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1315
diff changeset
31 #include <cstring>
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1315
diff changeset
32
5769
2b9a5ce46678 [project @ 2006-04-18 15:57:06 by jwe]
jwe
parents: 5768
diff changeset
33 #include <algorithm>
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
34 #include <fstream>
25438
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25395
diff changeset
35 #include <istream>
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
36 #include <map>
5765
7ba9ad1fec11 [project @ 2006-04-17 05:05:15 by jwe]
jwe
parents: 5738
diff changeset
37 #include <sstream>
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
38 #include <string>
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
39
3295
35a6d027772c [project @ 1999-10-19 10:13:02 by jwe]
jwe
parents: 3259
diff changeset
40 #include "cmd-edit.h"
35a6d027772c [project @ 1999-10-19 10:13:02 by jwe]
jwe
parents: 3259
diff changeset
41 #include "file-ops.h"
6253
f1676652d808 [project @ 2007-01-24 20:43:36 by jwe]
jwe
parents: 6243
diff changeset
42 #include "file-stat.h"
25548
d6050ba12c0c Call get_ASCII_filename for std::ifstream (bug #49118).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25460
diff changeset
43 #include "lo-sysdep.h"
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2900
diff changeset
44 #include "oct-env.h"
19269
65554f5847ac don't include oct-locbuf.h in header files unnecessarily
John W. Eaton <jwe@octave.org>
parents: 19152
diff changeset
45 #include "oct-locbuf.h"
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
46 #include "str-vec.h"
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
47
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
48 #include "Cell.h"
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
49 #include "builtin-defun-decls.h"
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
50 #include "defaults.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
51 #include "defun.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
52 #include "error.h"
21100
e39e05d90788 Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents: 21017
diff changeset
53 #include "errwarn.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
54 #include "help.h"
2177
0bddc913621b [project @ 1996-05-13 16:36:11 by jwe]
jwe
parents: 2124
diff changeset
55 #include "input.h"
23438
d24d01273bd0 eliminate load-path singleton
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
56 #include "interpreter-private.h"
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
57 #include "interpreter.h"
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
58 #include "load-path.h"
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
59 #include "ov-classdef.h"
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
60 #include "ov-fcn-handle.h"
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
61 #include "ov-usr-fcn.h"
20940
48b2ad5ee801 maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents: 20939
diff changeset
62 #include "ovl.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
63 #include "pager.h"
3018
5708b8bb4f06 [project @ 1997-06-03 21:48:05 by jwe]
jwe
parents: 3016
diff changeset
64 #include "parse.h"
1466
2f85a175308f [project @ 1995-09-22 07:48:59 by jwe]
jwe
parents: 1443
diff changeset
65 #include "pathsearch.h"
3295
35a6d027772c [project @ 1999-10-19 10:13:02 by jwe]
jwe
parents: 3259
diff changeset
66 #include "procstream.h"
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
67 #include "quit.h"
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
68 #include "sighandlers.h"
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
69 #include "symtab.h"
8672
2a49c32d4322 allow help to work with files containing only comments
John W. Eaton <jwe@octave.org>
parents: 8631
diff changeset
70 #include "unwind-prot.h"
242
742c4795aea9 [project @ 1993-11-30 21:26:43 by jwe]
jwe
parents: 240
diff changeset
71 #include "utils.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
72 #include "variables.h"
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3296
diff changeset
73 #include "version.h"
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
74
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
75 #include "default-defs.h"
2189
d01936305d99 [project @ 1996-05-14 03:31:57 by jwe]
jwe
parents: 2177
diff changeset
76
29960
939bef0b66e0 merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
77 OCTAVE_NAMESPACE_BEGIN
939bef0b66e0 merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
78
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
79 const static char * const operators[] =
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
80 {
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
81 "!",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
82 "~",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
83 "!=",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
84 "~=",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
85 R"(")",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
86 "#",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
87 "%",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
88 "#{",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
89 "%{",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
90 "#}",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
91 "%}",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
92 "...",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
93 "&",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
94 "&&",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
95 "'",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
96 "(",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
97 ")",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
98 "*",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
99 "^",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
100 "+",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
101 "++",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
102 ",",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
103 "-",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
104 "--",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
105 ".'",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
106 ".*",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
107 ".^",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
108 "./",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
109 "/",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
110 R"(.\)",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
111 R"(\)",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
112 ":",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
113 ";",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
114 "<",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
115 "<=",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
116 "=",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
117 "==",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
118 ">",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
119 ">=",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
120 "[",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
121 "]",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
122 "|",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
123 "||",
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
124 nullptr
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
125 };
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
126
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
127 const static string_vector operator_names (operators);
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
128
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
129 static bool
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
130 looks_like_html (const std::string& msg)
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
131 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
132 const std::size_t p1 = msg.find ('\n');
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
133 std::string t = msg.substr (0, p1);
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
134 // FIXME: this comparison should be case-insensitive
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
135 const std::size_t p2 = t.find ("<html");
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
136
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
137 return (p2 != std::string::npos);
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
138 }
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
139
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
140 static bool
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
141 looks_like_texinfo (const std::string& msg, std::size_t& p1)
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
142 {
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
143 p1 = msg.find ('\n');
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
144
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
145 std::string t = msg.substr (0, p1);
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
146
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
147 if (p1 == std::string::npos)
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
148 p1 = 0;
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
149
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
150 std::size_t p2 = t.find ("-*- texinfo -*-");
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
151
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
152 return (p2 != std::string::npos);
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
153 }
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27037
diff changeset
154
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
155 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
156 help_system::built_in_docstrings_file (const octave_value_list& args,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
157 int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
158 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
159 return set_internal_variable (m_built_in_docstrings_file, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
160 "built_in_docstrings_file", false);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
161 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
162
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
163 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
164 help_system::doc_cache_file (const octave_value_list& args, int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
165 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
166 return set_internal_variable (m_doc_cache_file, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
167 "doc_cache_file", false);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
168 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
169
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
170 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
171 help_system::info_file (const octave_value_list& args, int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
172 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
173 return set_internal_variable (m_info_file, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
174 "info_file", false);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
175 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
176
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
177 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
178 help_system::info_program (const octave_value_list& args, int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
179 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
180 return set_internal_variable (m_info_program, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
181 "info_program", false);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
182 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
183
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
184 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
185 help_system::makeinfo_program (const octave_value_list& args, int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
186 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
187 return set_internal_variable (m_makeinfo_program, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
188 "makeinfo_program", false);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
189 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
190
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
191 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
192 help_system::suppress_verbose_help_message (const octave_value_list& args,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
193 int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
194 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
195 return set_internal_variable (m_suppress_verbose_help_message, args,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
196 nargout, "suppress_verbose_help_message");
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
197 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
198
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
199 octave_value
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
200 help_system::texi_macros_file (const octave_value_list& args, int nargout)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
201 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
202 return set_internal_variable (m_texi_macros_file, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
203 "texi_macros_file", false);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
204 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
205
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
206 std::string
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
207 help_system::raw_help (const std::string& nm, bool& symbol_found) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
208 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
209 std::string h;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
210 std::string w;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
211 std::string f;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
212
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
213 bool found;
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
214
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
215 found = raw_help_from_symbol_table (nm, h, w, symbol_found);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
216
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
217 if (! found)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
218 found = raw_help_from_file (nm, h, f, symbol_found);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
219
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
220 bool external_doc = h.compare (0, 12, "external-doc") == 0;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
221
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
222 if (! found || external_doc)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
223 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
224 std::string tmp_nm = nm;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
225
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
226 if (external_doc && h.length () > 12 && h[12] == ':')
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
227 tmp_nm = h.substr (13);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
228
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
229 raw_help_from_docstrings_file (tmp_nm, h, symbol_found);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
230 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
231
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
232 return h;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
233 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
234
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
235 std::string help_system::which (const std::string& name,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
236 std::string& type) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
237 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
238 std::string file;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
239
26594
088b8a2dcb06 use @CLASS name when searching for @CLASS/METHOD (bug #55501)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
240 if (name.empty ())
088b8a2dcb06 use @CLASS name when searching for @CLASS/METHOD (bug #55501)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
241 return file;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
242
26594
088b8a2dcb06 use @CLASS name when searching for @CLASS/METHOD (bug #55501)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
243 type = "";
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
244
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
245 symbol_table& symtab = m_interpreter.get_symbol_table ();
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
246
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
247 octave_value val = symtab.find_function (name);
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
248
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
249 if (val.is_defined ())
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
250 {
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
251 octave_function *fcn = val.function_value ();
26594
088b8a2dcb06 use @CLASS name when searching for @CLASS/METHOD (bug #55501)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
252
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
253 if (fcn)
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
254 {
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
255 if (fcn->is_classdef_meta ())
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
256 {
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
257 octave_classdef_meta *meta_obj
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
258 = dynamic_cast<octave_classdef_meta *> (fcn);
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
259
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
260 file = meta_obj->file_name ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
261
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
262 if (meta_obj->is_classdef_constructor ())
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
263 type = "class constructor";
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
264 else if (meta_obj->is_classdef_method ())
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
265 type = "class method";
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
266 else
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
267 type = "classdef meta object";
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
268 }
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
269 else
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
270 {
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
271
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
272 file = fcn->fcn_file_name ();
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
273
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
274 if (! file.empty ())
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
275 type = val.is_user_script () ? "script" : "function";
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
276 else
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
277 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
278 if (fcn->is_user_function ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
279 type = "command-line function";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
280 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
281 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
282 file = fcn->src_file_name ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
283 type = "built-in function";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
284 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
285 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
286 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
287 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
288 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
289 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
290 // We might find a file that contains only a doc string.
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
291
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
292 load_path& lp = m_interpreter.get_load_path ();
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
293
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
294 file = lp.find_fcn_file (name);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
295 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
296 }
30260
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
297
bfbe6e528af5 which: report correct info for classdef constructors (bug #49434)
John W. Eaton <jwe@octave.org>
parents: 29961
diff changeset
298 if (file.empty ())
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
299 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
300 // File query.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
301
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
302 load_path& lp = m_interpreter.get_load_path ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
303
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
304 // For compatibility: "file." queries "file".
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
305 if (name.size () > 1 && name[name.size () - 1] == '.')
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
306 file = lp.find_file (name.substr (0, name.size () - 1));
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
307 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
308 file = lp.find_file (name);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
309
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
310 file = sys::env::make_absolute (file);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
311 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
312
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
313 return file;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
314 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
315
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
316 std::string help_system::which (const std::string& name) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
317 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
318 std::string type;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
319
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
320 return which (name, type);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
321 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
322
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
323 string_vector help_system::make_name_list (void) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
324 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
325 const static string_vector keywords
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
326 = Fiskeyword ()(0).string_vector_value ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
327
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
328 const static int key_len = keywords.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
329
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
330 symbol_table& symtab = m_interpreter.get_symbol_table ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
331
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
332 const string_vector bif = symtab.built_in_function_names ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
333 const int bif_len = bif.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
334
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
335 const string_vector cfl = symtab.cmdline_function_names ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
336 const int cfl_len = cfl.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
337
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26594
diff changeset
338 const string_vector lcl = m_interpreter.variable_names ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
339 const int lcl_len = lcl.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
340
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
341 load_path& lp = m_interpreter.get_load_path ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
342
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
343 const string_vector ffl = lp.fcn_names ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
344 const int ffl_len = ffl.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
345
27016
9b261300a001 move file-scope static autoload map variable and functions to evaluator
John W. Eaton <jwe@octave.org>
parents: 26679
diff changeset
346 const string_vector afl = m_interpreter.autoloaded_functions ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
347 const int afl_len = afl.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
348
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
349 const string_vector lfl = local_functions ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
350 const int lfl_len = lfl.numel ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
351
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
352 const int total_len
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
353 = key_len + bif_len + cfl_len + lcl_len + ffl_len + afl_len + lfl_len;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
354
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
355 string_vector list (total_len);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
356
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
357 // Put all the symbols in one big list.
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
358
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
359 int j = 0;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
360 int i = 0;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
361
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
362 for (i = 0; i < key_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
363 list[j++] = keywords[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
364
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
365 for (i = 0; i < bif_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
366 list[j++] = bif[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
367
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
368 for (i = 0; i < cfl_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
369 list[j++] = cfl[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
370
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
371 for (i = 0; i < lcl_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
372 list[j++] = lcl[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
373
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
374 for (i = 0; i < ffl_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
375 list[j++] = ffl[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
376
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
377 for (i = 0; i < afl_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
378 list[j++] = afl[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
379
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
380 for (i = 0; i < lfl_len; i++)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
381 list[j++] = lfl[i];
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
382
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
383 return list;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
384 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
385
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
386 void help_system::get_help_text (const std::string& name, std::string& text,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
387 std::string& format) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
388 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
389 bool symbol_found = false;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
390 text = raw_help (name, symbol_found);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
391
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
392 format = "Not found";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
393 if (symbol_found)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
394 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
395 std::size_t idx = -1;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
396 if (text.empty ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
397 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
398 format = "Not documented";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
399 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
400 else if (looks_like_texinfo (text, idx))
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
401 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
402 format = "texinfo";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
403 text.erase (0, idx);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
404 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
405 else if (looks_like_html (text))
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
406 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
407 format = "html";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
408 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
409 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
410 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
411 format = "plain text";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
412 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
413 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
414 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
415
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
416 void help_system::get_help_text_from_file (const std::string& fname,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
417 std::string& text,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
418 std::string& format) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
419 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
420 bool symbol_found = false;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
421
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
422 std::string f;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
423
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
424 raw_help_from_file (fname, text, f, symbol_found);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
425
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
426 format = "Not found";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
427 if (symbol_found)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
428 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
429 std::size_t idx = -1;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
430 if (text.empty ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
431 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
432 format = "Not documented";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
433 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
434 else if (looks_like_texinfo (text, idx))
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
435 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
436 format = "texinfo";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
437 text.erase (0, idx);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
438 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
439 else if (looks_like_html (text))
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
440 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
441 format = "html";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
442 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
443 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
444 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
445 format = "plain text";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
446 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
447 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
448 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
449
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
450 std::string help_system::init_built_in_docstrings_file (void)
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
451 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
452 std::string df = sys::env::getenv ("OCTAVE_BUILT_IN_DOCSTRINGS_FILE");
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
453
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
454 std::string dir_sep = sys::file_ops::dir_sep_str ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
455
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
456 if (df.empty ())
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
457 df = config::oct_etc_dir () + dir_sep + "built-in-docstrings";
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
458
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
459 return df;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
460 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
461
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
462 std::string help_system::init_doc_cache_file (void)
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
463 {
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
464 std::string def_file = config::prepend_octave_home (OCTAVE_DOC_CACHE_FILE);
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
465
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
466 std::string env_file = sys::env::getenv ("OCTAVE_DOC_CACHE_FILE");
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
467
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
468 return (env_file.empty () ? def_file : env_file);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
469 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
470
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
471 std::string help_system::init_info_file (void)
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
472 {
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
473 std::string std_info_file = config::prepend_octave_home (OCTAVE_INFOFILE);
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
474
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
475 std::string oct_info_file = sys::env::getenv ("OCTAVE_INFO_FILE");
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
476
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
477 return (oct_info_file.empty () ? std_info_file : oct_info_file);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
478 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
479
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
480 std::string help_system::init_info_program (void)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
481 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
482 std::string info_prog = sys::env::getenv ("OCTAVE_INFO_PROGRAM");
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
483
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
484 if (info_prog.empty ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
485 info_prog = "info";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
486
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
487 return info_prog;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
488 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
489
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
490 std::string help_system::init_texi_macros_file (void)
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
491 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
492 std::string def_file
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
493 = config::prepend_octave_home (OCTAVE_TEXI_MACROS_FILE);
22295
12f1d273d22a maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents: 22199
diff changeset
494
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
495 std::string env_file = sys::env::getenv ("OCTAVE_TEXI_MACROS_FILE");
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
496
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
497 return (env_file.empty () ? def_file : env_file);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
498 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
499
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
500 // Return a vector of all functions from this file,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
501 // for use in command line auto-completion.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
502 string_vector help_system::local_functions (void) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
503 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
504 string_vector retval;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
505
27202
23962b243bad eliminate direct access to call stack in help functions
John W. Eaton <jwe@octave.org>
parents: 27102
diff changeset
506 tree_evaluator& tw = m_interpreter.get_evaluator ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
507
27202
23962b243bad eliminate direct access to call stack in help functions
John W. Eaton <jwe@octave.org>
parents: 27102
diff changeset
508 octave_user_code *curr_fcn = tw.current_user_code ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
509
25394
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
510 if (! curr_fcn)
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
511 return retval;
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
512
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
513 // All subfunctions are listed in the top-level function of this file.
25394
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
514 // If curr_fcn is a subfunction, then there must be a parent and
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
515 // curr_fcn will always be valid in and after executing this loop.
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
516
9e39a53b4e00 make listing local functions for command completion work again (bug #53925)
John W. Eaton <jwe@octave.org>
parents: 25388
diff changeset
517 while (curr_fcn->is_subfunction ())
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
518 {
24361
8bcfddad15ec use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
519 symbol_scope pscope = curr_fcn->parent_fcn_scope ();
27745
7a45100a40c4 allow private scripts to be called from other private scripts
John W. Eaton <jwe@octave.org>
parents: 27461
diff changeset
520 curr_fcn = pscope.user_code ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
521 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
522
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
523 // Get subfunctions.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
524 const std::list<std::string> names = curr_fcn->subfunction_names ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
525
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
526 std::size_t sz = names.size ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
527 retval.resize (sz);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
528
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
529 // Loop over them.
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
530 std::size_t i = 0;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
531 for (const auto& nm : names)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
532 retval(i++) = nm;
22556
121e9639b604 doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents: 22407
diff changeset
533
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
534 return retval;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
535 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
536
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
537 bool help_system::raw_help_from_symbol_table (const std::string& nm,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
538 std::string& h, std::string& w,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
539 bool& symbol_found) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
540 {
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
541 std::string meth_nm;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
542
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
543 symbol_table& symtab = m_interpreter.get_symbol_table ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
544
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
545 octave_value val = symtab.find_function (nm);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
546
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
547 if (! val.is_defined ())
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
548 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
549 std::size_t pos = nm.rfind ('.');
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
550
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
551 if (pos != std::string::npos)
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
552 {
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
553 meth_nm = nm.substr (pos+1);
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
554
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
555 val = symtab.find_function (nm.substr (0, pos));
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
556 }
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
557 }
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
558
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
559 if (val.is_defined ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
560 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
561 octave_function *fcn = val.function_value ();
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
562
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
563 if (fcn)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
564 {
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
565 // FCN may actually be a classdef_meta object.
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
566
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
567 symbol_found = true;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
568
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
569 h = fcn->doc_string (meth_nm);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
570
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
571 w = fcn->fcn_file_name ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
572
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
573 if (w.empty ())
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
574 w = fcn->is_user_function () ? "command-line function"
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
575 : "built-in function";
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
576
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
577 return true;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
578 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
579 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
580
28514
fab862fedf85 allow help to find docstrings for classdef classes and methods (bug #43047)
John W. Eaton <jwe@octave.org>
parents: 28432
diff changeset
581 return false;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
582 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
583
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
584 bool help_system::raw_help_from_file (const std::string& nm,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
585 std::string& h, std::string& file,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
586 bool& symbol_found) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
587 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
588 bool retval = false;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
589
25336
389757b7b6af eliminate redundant octave:: namespace tags
John W. Eaton <jwe@octave.org>
parents: 25103
diff changeset
590 h = get_help_from_file (nm, symbol_found, file);
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
591
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
592 if (h.length () > 0)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
593 retval = true;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
594
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
595 return retval;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
596 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
597
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
598 bool
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
599 help_system::raw_help_from_docstrings_file (const std::string& nm,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
600 std::string& h,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
601 bool& symbol_found) const
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
602 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
603 typedef std::pair<std::streampos, std::streamoff> txt_limits_type;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
604 typedef std::map<std::string, txt_limits_type> help_txt_map_type;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
605
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
606 static help_txt_map_type help_txt_map;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
607 static bool initialized = false;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
608
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
609 h = "";
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
610 symbol_found = false;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
611
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
612 // FIXME: Should we cache the timestamp of the file and reload the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
613 // offsets if it changes? Or just warn about that? Or just ignore
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
614 // it, and assume it won't change?
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
615
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
616 if (! initialized)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
617 {
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28880
diff changeset
618 std::ifstream file = sys::ifstream (m_built_in_docstrings_file.c_str (),
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28880
diff changeset
619 std::ios::in | std::ios::binary);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
620
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
621 if (! file)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
622 error ("failed to open docstrings file: %s",
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
623 m_built_in_docstrings_file.c_str ());
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
624
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
625 // Ignore header;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
626 file.ignore (std::numeric_limits<std::streamsize>::max(), 0x1d);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
627
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
628 if (file.eof ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
629 error ("invalid built-in-docstrings file!");
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
630
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
631 // FIXME: eliminate fixed buffer size.
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
632 std::size_t bufsize = 1000;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
633 OCTAVE_LOCAL_BUFFER (char, buf, bufsize);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
634
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
635 while (! file.eof ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
636 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
637 std::string name;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
638 int i = 0;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
639 int c;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
640 while (file && (c = file.get ()) != std::istream::traits_type::eof ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
641 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
642 if (c == '\n' || c == '\r')
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
643 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
644 buf[i] = '\0';
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
645 name = buf;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
646 break;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
647 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
648 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
649 buf[i++] = c;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
650 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
651
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
652 // Skip @c FILENAME which is part of current DOCSTRINGS
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
653 // syntax. This may disappear if a specific format for
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
654 // docstring files is developed.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
655 while (file
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
656 && (c = file.get ()) != std::istream::traits_type::eof ()
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
657 && c != '\n' && c != '\r')
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
658 ; // skip text
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
659
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
660 // skip newline characters
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
661 while (file
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
662 && (c = file.get ()) != std::istream::traits_type::eof ()
26347
09a793a92c11 help.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 25604
diff changeset
663 && (c == '\n' || c == '\r'))
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
664 ; // skip text
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
665
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
666 file.unget ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
667
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
668 // Position of beginning of help text.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
669 std::streampos beg = file.tellg ();
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
670
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
671 // Skip help text.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
672 file.ignore (std::numeric_limits<std::streamsize>::max(), 0x1d);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
673
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
674 // Position of end of help text.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
675 std::streamoff len;
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
676
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
677 if (! file.eof ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
678 len = file.tellg () - beg - 1;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
679 else
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
680 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
681 file.seekg (0, file.end);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
682 len = file.tellg () - beg - 1;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
683 file.setstate (file.eofbit); // reset eof flag
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
684 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
685
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
686 help_txt_map[name] = txt_limits_type (beg, len);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
687 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
688
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
689 initialized = true;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
690 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
691
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
692 help_txt_map_type::const_iterator it = help_txt_map.find (nm);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
693
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
694 if (it != help_txt_map.end ())
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
695 {
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
696 txt_limits_type txt_limits = it->second;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
697
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
698 std::streampos beg = txt_limits.first;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
699 std::streamoff len = txt_limits.second;
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
700
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28880
diff changeset
701 std::ifstream file = sys::ifstream (m_built_in_docstrings_file.c_str (),
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28880
diff changeset
702 std::ios::in | std::ios::binary);
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
703
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
704 if (! file)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
705 error ("failed to open docstrings file: %s",
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
706 m_built_in_docstrings_file.c_str ());
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
707
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
708 file.seekg (beg);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
709
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
710 std::size_t txt_len = len;
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
711 OCTAVE_LOCAL_BUFFER (char, buf, txt_len + 1);
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
712
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
713 file.read (buf, txt_len);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
714
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
715 buf[txt_len] = '\0';
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
716
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
717 h = buf;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
718
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
719 symbol_found = true;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
720 }
22198
f6181638f6c5 search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents: 22172
diff changeset
721
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
722 return symbol_found;
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
723 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
724
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
725 // FIXME: It's not likely that this does the right thing now.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
726
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
727 string_vector make_name_list (void)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
728 {
25336
389757b7b6af eliminate redundant octave:: namespace tags
John W. Eaton <jwe@octave.org>
parents: 25103
diff changeset
729 help_system& help_sys = __get_help_system__ ("make_name_list");
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
730
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
731 return help_sys.make_name_list ();
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
732 }
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29670
diff changeset
733
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
734 DEFMETHOD (get_help_text, interp, args, ,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
735 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
736 @deftypefn {} {[@var{text}, @var{format}] =} get_help_text (@var{name})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
737 Return the raw help text of function @var{name}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
738
27438
7db34a40cd23 doc: Improve documentation for get_help_text, get_help_text_from_file.
Rik <rik@octave.org>
parents: 27361
diff changeset
739 The raw help text is returned in @var{text} and the format in @var{format}.
7db34a40cd23 doc: Improve documentation for get_help_text, get_help_text_from_file.
Rik <rik@octave.org>
parents: 27361
diff changeset
740 The format is a string which is one of @qcode{"texinfo"}, @qcode{"html"}, or
7db34a40cd23 doc: Improve documentation for get_help_text, get_help_text_from_file.
Rik <rik@octave.org>
parents: 27361
diff changeset
741 @w{@qcode{"plain text"}}.
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
742 @seealso{get_help_text_from_file}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
743 @end deftypefn */)
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
744 {
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
745 if (args.length () != 1)
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
746 print_usage ();
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
747
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
748 const std::string name = args(0).xstring_value ("get_help_text: NAME must be a string");
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
749
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
750 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
751
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20922
diff changeset
752 std::string text, format;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
753
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
754 help_sys.get_help_text (name, text, format);
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
755
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20922
diff changeset
756 return ovl (text, format);
529
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
757 }
7ea224e713cd [project @ 1994-07-20 18:54:27 by jwe]
jwe
parents: 389
diff changeset
758
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
759 DEFMETHOD (get_help_text_from_file, interp, args, ,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
760 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
761 @deftypefn {} {[@var{text}, @var{format}] =} get_help_text_from_file (@var{fname})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
762 Return the raw help text from the file @var{fname}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
763
27438
7db34a40cd23 doc: Improve documentation for get_help_text, get_help_text_from_file.
Rik <rik@octave.org>
parents: 27361
diff changeset
764 The raw help text is returned in @var{text} and the format in @var{format}.
7db34a40cd23 doc: Improve documentation for get_help_text, get_help_text_from_file.
Rik <rik@octave.org>
parents: 27361
diff changeset
765 The format is a string which is one of @qcode{"texinfo"}, @qcode{"html"}, or
7db34a40cd23 doc: Improve documentation for get_help_text, get_help_text_from_file.
Rik <rik@octave.org>
parents: 27361
diff changeset
766 @w{@qcode{"plain text"}}.
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
767 @seealso{get_help_text}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
768 @end deftypefn */)
9806
8e345f2fe4d6 improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents: 9416
diff changeset
769 {
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
770 if (args.length () != 1)
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
771 print_usage ();
9806
8e345f2fe4d6 improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents: 9416
diff changeset
772
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
773 const std::string fname = args(0).xstring_value ("get_help_text_from_file: NAME must be a string");
9806
8e345f2fe4d6 improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents: 9416
diff changeset
774
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
775 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
776
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20922
diff changeset
777 std::string text, format;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
778
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
779 help_sys.get_help_text_from_file (fname, text, format);
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
780
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20922
diff changeset
781 return ovl (text, format);
9806
8e345f2fe4d6 improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents: 9416
diff changeset
782 }
8e345f2fe4d6 improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents: 9416
diff changeset
783
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
784 // Return a cell array of strings containing the names of all operators.
8812
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
785
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
786 DEFUN (__operators__, , ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
787 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
788 @deftypefn {} {} __operators__ ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
789 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
790 @end deftypefn */)
3355
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
791 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
792 return ovl (Cell (operator_names));
3355
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
793 }
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
794
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
795 // Return a cell array of strings containing the names of all keywords.
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
796 // iskeyword() function is located in lex.ll and is based on what the parser
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
797 // thinks is a keyword.
8812
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
798
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
799 DEFALIAS (__keywords__, iskeyword)
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 572
diff changeset
800
23065
7c7a61c2e0ed Replace out-of-date __keywords__ with alias to iskeyword.
Rik <rik@octave.org>
parents: 23052
diff changeset
801 // Return a cell array of strings with the names of all builtin functions.
8812
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
802
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23553
diff changeset
803 DEFMETHOD (__builtins__, interp, , ,
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23553
diff changeset
804 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
805 @deftypefn {} {} __builtins__ ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
806 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
807 @end deftypefn */)
3355
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
808 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
809 symbol_table& symtab = interp.get_symbol_table ();
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23553
diff changeset
810
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23553
diff changeset
811 const string_vector bif = symtab.built_in_function_names ();
3355
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
812
21127
df7891224709 maint: Use "return ovl (...)" in DEFUN macros.
Rik <rik@octave.org>
parents: 21100
diff changeset
813 return ovl (Cell (bif));
3355
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
814 }
c4983fc7318f [project @ 1999-11-18 05:20:50 by jwe]
jwe
parents: 3333
diff changeset
815
23553
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
816 DEFMETHOD (localfunctions, interp, args, ,
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
817 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
818 @deftypefn {} {} localfunctions ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
819 Return a list of all local functions, i.e., subfunctions, within the current
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
820 file.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
821
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
822 The return value is a column cell array of function handles to all local
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
823 functions accessible from the function from which @code{localfunctions} is
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
824 called. Nested functions are @emph{not} included in the list.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
825
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
826 If the call is from the command line, an anonymous function, or a script,
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
827 the return value is an empty cell array.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
828
22974
ecc5eeada8dc Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents: 22885
diff changeset
829 @seealso{functions}
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
830 @end deftypefn */)
21765
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
831 {
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
832 if (args.length () != 0)
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
833 print_usage ();
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
834
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
835 Cell retval;
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
836
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
837 // Find the main function we are in.
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
838 tree_evaluator& tw = interp.get_evaluator ();
28432
71c34141cc2d refactor handling of parent functions and localfunctions
John W. Eaton <jwe@octave.org>
parents: 27932
diff changeset
839 octave_user_code *caller = tw.debug_user_code ();
21765
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
840
28432
71c34141cc2d refactor handling of parent functions and localfunctions
John W. Eaton <jwe@octave.org>
parents: 27932
diff changeset
841 if (! caller)
21765
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
842 return ovl (retval);
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
843
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
844 symbol_scope scope = caller->scope ();
21765
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
845
28432
71c34141cc2d refactor handling of parent functions and localfunctions
John W. Eaton <jwe@octave.org>
parents: 27932
diff changeset
846 return ovl (Cell (scope.localfunctions ()));
21765
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
847 }
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
848
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
849 /*
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
850 %!test
26679
2b6aa96a5c82 create BIST temporary files in tempdir instead of P_tmpdir (bug #55565)
Mike Miller <mtmiller@octave.org>
parents: 26677
diff changeset
851 %! f = tempname (tempdir (), "oct_");
27361
a7d21a6a7922 BIST should not rely on the current directory to be writable.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26594
diff changeset
852 %! [~, fcn_name] = fileparts (f);
22016
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
853 %! f = [f ".m"];
26677
33f79d94f21f Create any BIST temporary files in writable temporary directory (bug #55565).
Rik <rik@octave.org>
parents: 26661
diff changeset
854 %! save_path = path ();
22016
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
855 %! unwind_protect
26679
2b6aa96a5c82 create BIST temporary files in tempdir instead of P_tmpdir (bug #55565)
Mike Miller <mtmiller@octave.org>
parents: 26677
diff changeset
856 %! addpath (tempdir ());
22016
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
857 %! fid = fopen (f, "w+");
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
858 %! fprintf (fid, "function z = %s\n z = localfunctions; end\n", fcn_name);
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
859 %! fprintf (fid, "function z = b(x)\n z = x+1; end\n");
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
860 %! fprintf (fid, "function z = c(x)\n z = 2*x; end\n");
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
861 %! fclose (fid);
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
862 %! d = eval (fcn_name);
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
863 %! assert (size (d), [2, 1]);
22974
ecc5eeada8dc Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents: 22885
diff changeset
864 %! assert (d{1} (3), 4);
ecc5eeada8dc Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents: 22885
diff changeset
865 %! assert (d{2} (3), 6);
22016
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
866 %! unwind_protect_cleanup
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
867 %! unlink (f);
26677
33f79d94f21f Create any BIST temporary files in writable temporary directory (bug #55565).
Rik <rik@octave.org>
parents: 26661
diff changeset
868 %! path (save_path);
22016
d4ce10f57918 Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents: 21966
diff changeset
869 %! end_unwind_protect
21765
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
870 */
23a610a3f001 Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents: 21733
diff changeset
871
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
872 DEFMETHOD (__which__, interp, args, ,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
873 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
874 @deftypefn {} {} __which__ (@var{name}, @dots{})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
875 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
876 @end deftypefn */)
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 572
diff changeset
877 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
878 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
879
20996
20bd3d4fabad Clean up instances of make_argv().
Rik <rik@octave.org>
parents: 20940
diff changeset
880 string_vector argv = args.make_argv ();
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
881
20922
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
882 int nargin = argv.numel ();
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 572
diff changeset
883
20922
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
884 octave_map m (dim_vector (1, nargin));
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 572
diff changeset
885
20922
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
886 Cell names (1, nargin);
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
887 Cell files (1, nargin);
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
888 Cell types (1, nargin);
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
889
20922
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
890 for (int i = 0; i < nargin; i++)
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
891 {
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
892 std::string name = argv[i];
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
893
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
894 std::string type;
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
895
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
896 std::string file = help_sys.which (name, type);
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
897
20922
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
898 names(i) = name;
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
899 files(i) = file;
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
900 types(i) = type;
20803
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
901 }
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
902
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
903 m.assign ("name", names);
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
904 m.assign ("file", files);
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
905 m.assign ("type", types);
c22206c1a88f eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20714
diff changeset
906
20922
49081851fddc Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents: 20884
diff changeset
907 return ovl (m);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 572
diff changeset
908 }
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 572
diff changeset
909
8812
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
910 // Return a cell array of strings containing the names of all
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
911 // functions available in DIRECTORY. If no directory is given, search
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
912 // the current path.
7d48766c21a5 use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents: 8672
diff changeset
913
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
914 DEFMETHOD (__list_functions__, interp, args, ,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
915 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
916 @deftypefn {} {@var{retval} =} __list_functions__ ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
917 @deftypefnx {} {@var{retval} =} __list_functions__ (@var{directory})
22337
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
918 Return a list of all functions (.m and .oct functions) in the load path.
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
919
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
920 If the optional argument @var{directory} is given then list only the functions
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
921 in that directory.
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
922 @seealso{path}
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
923 @end deftypefn */)
8575
f134925a1cfa m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents: 8503
diff changeset
924 {
8863
34a821854961 pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents: 8861
diff changeset
925 octave_value retval;
5447
051ddd7a6681 [project @ 2005-09-14 05:18:23 by jwe]
jwe
parents: 5399
diff changeset
926
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
927 load_path& lp = interp.get_load_path ();
23438
d24d01273bd0 eliminate load-path singleton
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
928
22337
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
929 if (args.length () == 0)
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
930 {
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
931 // Get list of all functions
23438
d24d01273bd0 eliminate load-path singleton
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
932 string_vector ffl = lp.fcn_names ();
27016
9b261300a001 move file-scope static autoload map variable and functions to evaluator
John W. Eaton <jwe@octave.org>
parents: 26679
diff changeset
933 string_vector afl = interp.autoloaded_functions ();
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
934
22337
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
935 retval = Cell (ffl.append (afl));
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
936 }
20581
fd0efcdb3718 use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
937 else
5447
051ddd7a6681 [project @ 2005-09-14 05:18:23 by jwe]
jwe
parents: 5399
diff changeset
938 {
20700
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20678
diff changeset
939 std::string dir = args(0).xstring_value ("__list_functions__: DIRECTORY argument must be a string");
8863
34a821854961 pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents: 8861
diff changeset
940
23438
d24d01273bd0 eliminate load-path singleton
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
941 string_vector fl = lp.files (dir, true);
19403
03067dab10ca Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents: 19269
diff changeset
942
22337
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
943 // Return a sorted list with unique entries (in case of .m and .oct
77c209d63b75 Update __list_functions__ internal function.
Rik <rik@octave.org>
parents: 22323
diff changeset
944 // versions of the same function in a given directory, for example).
20581
fd0efcdb3718 use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
945 fl.sort (true);
8863
34a821854961 pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents: 8861
diff changeset
946
20581
fd0efcdb3718 use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents: 20232
diff changeset
947 retval = Cell (fl);
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11572
diff changeset
948 }
5447
051ddd7a6681 [project @ 2005-09-14 05:18:23 by jwe]
jwe
parents: 5399
diff changeset
949
051ddd7a6681 [project @ 2005-09-14 05:18:23 by jwe]
jwe
parents: 5399
diff changeset
950 return retval;
051ddd7a6681 [project @ 2005-09-14 05:18:23 by jwe]
jwe
parents: 5399
diff changeset
951 }
051ddd7a6681 [project @ 2005-09-14 05:18:23 by jwe]
jwe
parents: 5399
diff changeset
952
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
953 DEFMETHOD (built_in_docstrings_file, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
954 doc: /* -*- texinfo -*-
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
955 @deftypefn {} {@var{val} =} built_in_docstrings_file ()
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
956 @deftypefnx {} {@var{old_val} =} built_in_docstrings_file (@var{new_val})
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
957 @deftypefnx {} {} built_in_docstrings_file (@var{new_val}, "local")
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
958 Query or set the internal variable that specifies the name of the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
959 file containing docstrings for built-in Octave functions.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
960
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
961 The default value is
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
962 @file{@var{octave-home}/share/octave/@var{version}/etc/built-in-docstrings},
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
963 in which @var{octave-home} is the root directory of the Octave installation,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
964 and @var{version} is the Octave version number. The default value may be
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
965 overridden by the environment variable
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
966 @w{@env{OCTAVE_BUILT_IN_DOCSTRINGS_FILE}}, or the command line argument
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
967 @option{--built-in-docstrings-file FNAME}.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
968
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
969 Note: This variable is only used when Octave is initializing itself.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
970 Modifying it during a running session of Octave will have no effect.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
971 @end deftypefn */)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
972 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
973 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
974
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
975 return help_sys.built_in_docstrings_file (args, nargout);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
976 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
977
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
978 DEFMETHOD (doc_cache_file, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
979 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
980 @deftypefn {} {@var{val} =} doc_cache_file ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
981 @deftypefnx {} {@var{old_val} =} doc_cache_file (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
982 @deftypefnx {} {} doc_cache_file (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
983 Query or set the internal variable that specifies the name of the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
984 Octave documentation cache file.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
985
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
986 A cache file significantly improves the performance of the @code{lookfor}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
987 command. The default value is
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
988 @file{@var{octave-home}/share/octave/@var{version}/etc/doc-cache},
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
989 in which @var{octave-home} is the root directory of the Octave installation,
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
990 and @var{version} is the Octave version number.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
991 The default value may be overridden by the environment variable
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
992 @w{@env{OCTAVE_DOC_CACHE_FILE}}, or the command line argument
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
993 @option{--doc-cache-file FNAME}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
994
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
995 When called from inside a function with the @qcode{"local"} option, the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
996 variable is changed locally for the function and any subroutines it calls.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
997 The original variable value is restored when exiting the function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
998 @seealso{doc_cache_create, lookfor, info_program, doc, help, makeinfo_program}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
999 @seealso{lookfor}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1000 @end deftypefn */)
8861
31f864877246 doc and lookfor fixes
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
1001 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
1002 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1003
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1004 return help_sys.doc_cache_file (args, nargout);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1005 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1006
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1007 DEFMETHOD (info_file, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1008 doc: /* -*- texinfo -*-
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1009 @deftypefn {} {@var{val} =} info_file ()
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1010 @deftypefnx {} {@var{old_val} =} info_file (@var{new_val})
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1011 @deftypefnx {} {} info_file (@var{new_val}, "local")
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1012 Query or set the internal variable that specifies the name of the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1013 Octave info file.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1014
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1015 The default value is
28880
68e6e6f083f3 doc: Correct some installation paths (bug #59236).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28514
diff changeset
1016 @file{@var{octave-home}/share/info/octave.info}, in
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1017 which @var{octave-home} is the root directory of the Octave installation.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1018 The default value may be overridden by the environment variable
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1019 @w{@env{OCTAVE_INFO_FILE}}, or the command line argument
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1020 @option{--info-file FNAME}.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1021
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1022 When called from inside a function with the @qcode{"local"} option, the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1023 variable is changed locally for the function and any subroutines it calls.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1024 The original variable value is restored when exiting the function.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1025 @seealso{info_program, doc, help, makeinfo_program}
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1026 @end deftypefn */)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1027 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
1028 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1029
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1030 return help_sys.info_file (args, nargout);
8861
31f864877246 doc and lookfor fixes
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
1031 }
31f864877246 doc and lookfor fixes
John W. Eaton <jwe@octave.org>
parents: 8812
diff changeset
1032
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1033 DEFMETHOD (info_program, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1034 doc: /* -*- texinfo -*-
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1035 @deftypefn {} {@var{val} =} info_program ()
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1036 @deftypefnx {} {@var{old_val} =} info_program (@var{new_val})
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1037 @deftypefnx {} {} info_program (@var{new_val}, "local")
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1038 Query or set the internal variable that specifies the name of the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1039 info program to run.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1040
29668
f17b1f0141ed doc: Grammarcheck documentation ahead of 6.3 release.
Rik <rik@octave.org>
parents: 29654
diff changeset
1041 The default value is @file{info}. The default value may be
f17b1f0141ed doc: Grammarcheck documentation ahead of 6.3 release.
Rik <rik@octave.org>
parents: 29654
diff changeset
1042 overridden by the environment variable @w{@env{OCTAVE_INFO_PROGRAM}}, or the
f17b1f0141ed doc: Grammarcheck documentation ahead of 6.3 release.
Rik <rik@octave.org>
parents: 29654
diff changeset
1043 command line argument @option{--info-program NAME}.
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1044
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1045 When called from inside a function with the @qcode{"local"} option, the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1046 variable is changed locally for the function and any subroutines it calls.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1047 The original variable value is restored when exiting the function.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1048 @seealso{info_file, doc, help, makeinfo_program}
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1049 @end deftypefn */)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1050 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
1051 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1052
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1053 return help_sys.info_program (args, nargout);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1054 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1055
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1056 DEFMETHOD (makeinfo_program, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1057 doc: /* -*- texinfo -*-
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1058 @deftypefn {} {@var{val} =} makeinfo_program ()
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1059 @deftypefnx {} {@var{old_val} =} makeinfo_program (@var{new_val})
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1060 @deftypefnx {} {} makeinfo_program (@var{new_val}, "local")
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1061 Query or set the internal variable that specifies the name of the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1062 program that Octave runs to format help text containing
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1063 Texinfo markup commands.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1064
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1065 The default value is @code{makeinfo}.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1066
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1067 When called from inside a function with the @qcode{"local"} option, the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1068 variable is changed locally for the function and any subroutines it calls.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1069 The original variable value is restored when exiting the function.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1070 @seealso{texi_macros_file, info_file, info_program, doc, help}
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1071 @end deftypefn */)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1072 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
1073 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1074
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1075 return help_sys.makeinfo_program (args, nargout);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1076 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1077
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1078 DEFMETHOD (suppress_verbose_help_message, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1079 doc: /* -*- texinfo -*-
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1080 @deftypefn {} {@var{val} =} suppress_verbose_help_message ()
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1081 @deftypefnx {} {@var{old_val} =} suppress_verbose_help_message (@var{new_val})
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1082 @deftypefnx {} {} suppress_verbose_help_message (@var{new_val}, "local")
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1083 Query or set the internal variable that controls whether Octave
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1084 will add additional help information to the end of the output from
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1085 the @code{help} command and usage messages for built-in commands.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1086
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1087 When called from inside a function with the @qcode{"local"} option, the
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1088 variable is changed locally for the function and any subroutines it calls.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1089 The original variable value is restored when exiting the function.
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1090 @end deftypefn */)
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1091 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
1092 help_system& help_sys = interp.get_help_system ();
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1093
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1094 return help_sys.suppress_verbose_help_message (args, nargout);
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1095 }
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1096
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1097 DEFMETHOD (texi_macros_file, interp, args, nargout,
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1098 doc: /* -*- texinfo -*-
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1099 @deftypefn {} {@var{val} =} texi_macros_file ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1100 @deftypefnx {} {@var{old_val} =} texi_macros_file (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1101 @deftypefnx {} {} texi_macros_file (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1102 Query or set the internal variable that specifies the name of the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1103 file containing Texinfo macros that are prepended to documentation strings
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1104 before they are passed to makeinfo.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1105
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1106 The default value is
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1107 @file{@var{octave-home}/share/octave/@var{version}/etc/macros.texi},
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1108 in which @var{octave-home} is the root directory of the Octave installation,
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1109 and @var{version} is the Octave version number.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1110 The default value may be overridden by the environment variable
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1111 @w{@env{OCTAVE_TEXI_MACROS_FILE}}, or the command line argument
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1112 @option{--texi-macros-file FNAME}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1113
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1114 When called from inside a function with the @qcode{"local"} option, the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1115 variable is changed locally for the function and any subroutines it calls.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1116 The original variable value is restored when exiting the function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1117 @seealso{makeinfo_program}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1118 @end deftypefn */)
14614
4e9dc46d4125 handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents: 14360
diff changeset
1119 {
29961
7d6709900da7 eliminate octave:: namespace tags in DEFUN and DEFMETHOD and more
John W. Eaton <jwe@octave.org>
parents: 29960
diff changeset
1120 help_system& help_sys = interp.get_help_system ();
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21921
diff changeset
1121
23721
b2d55b52ee51 new class to manage help system and associated variables
John W. Eaton <jwe@octave.org>
parents: 23693
diff changeset
1122 return help_sys.texi_macros_file (args, nargout);
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5780
diff changeset
1123 }
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29670
diff changeset
1124
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29670
diff changeset
1125 OCTAVE_NAMESPACE_END