Mercurial > octave
annotate libinterp/corefcn/help.cc @ 22974:ecc5eeada8dc
Don't mark nested functions in primary function as subfunctions.
* help.cc (Flocalfunctions): Remove note from docstring about nested functions
causing problems with localfunctions usage. Add @seealso to functions.
Don't check that function is a nested one before adding it to list. If it is
in the subfunction_names list, it is valid.
* ov-fcn-handle.cc (octave_fcn_handle::octave_fcn_handle): In constructor,
only error out if function is a true nested function, rather than a subfunction
which happens to be the parent of a nested function.
* oct-parse.in.yy (base_parser::finish_function): Determine whether function
is a subfunction or nested function and only if it is a subfunction is it added
to the list of subfunctions of the primary function and marked as being a
subfunction.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 28 Dec 2016 13:58:01 -0800 |
parents | 0918e3b4f740 |
children | f97e22a9012a |
rev | line source |
---|---|
1 | 1 /* |
2 | |
22323
bac0d6f07a3e
maint: Update copyright notices for 2016.
John W. Eaton <jwe@octave.org>
parents:
22295
diff
changeset
|
3 Copyright (C) 1993-2016 John W. Eaton |
1 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
9 the Free Software Foundation; either version 3 of the License, or |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
10 (at your option) any later version. |
1 | 11 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22556
diff
changeset
|
15 GNU General Public License for more details. |
1 | 16 |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
1 | 20 |
21 */ | |
22 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
23 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
24 # include "config.h" |
1 | 25 #endif |
26 | |
1343 | 27 #include <cstdlib> |
28 #include <cstring> | |
29 | |
5769 | 30 #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
|
31 #include <fstream> |
3503 | 32 #include <iostream> |
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
|
33 #include <map> |
5765 | 34 #include <sstream> |
1755 | 35 #include <string> |
36 | |
3295 | 37 #include "cmd-edit.h" |
38 #include "file-ops.h" | |
6253 | 39 #include "file-stat.h" |
2926 | 40 #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
|
41 #include "oct-locbuf.h" |
1755 | 42 #include "str-vec.h" |
43 | |
22091
0f6fc2ec3b1a
move call_stack class to a separate file
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
44 #include "call-stack.h" |
2492 | 45 #include <defaults.h> |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
46 #include "Cell.h" |
1352 | 47 #include "defun.h" |
48 #include "dirfns.h" | |
49 #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
|
50 #include "errwarn.h" |
1352 | 51 #include "help.h" |
2177 | 52 #include "input.h" |
5832 | 53 #include "load-path.h" |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20939
diff
changeset
|
54 #include "ovl.h" |
2976 | 55 #include "ov-usr-fcn.h" |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
56 #include "ov-fcn-handle.h" |
1352 | 57 #include "pager.h" |
3018 | 58 #include "parse.h" |
1466 | 59 #include "pathsearch.h" |
3295 | 60 #include "procstream.h" |
7336 | 61 #include "pt-pr-code.h" |
529 | 62 #include "sighandlers.h" |
63 #include "symtab.h" | |
22094
9203833cab7d
move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents:
22091
diff
changeset
|
64 #include "interpreter.h" |
8672
2a49c32d4322
allow help to work with files containing only comments
John W. Eaton <jwe@octave.org>
parents:
8631
diff
changeset
|
65 #include "unwind-prot.h" |
242 | 66 #include "utils.h" |
1352 | 67 #include "variables.h" |
3301 | 68 #include "version.h" |
5447 | 69 #include "quit.h" |
529 | 70 |
8861 | 71 // Name of the doc cache file specified on the command line. |
72 // (--doc-cache-file file) | |
73 std::string Vdoc_cache_file; | |
74 | |
14614
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
75 // Name of the file containing local Texinfo macros that are prepended |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
76 // to doc strings before processing. |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
77 // (--texi-macros-file) |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
78 std::string Vtexi_macros_file; |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
79 |
2202 | 80 // Name of the info file specified on command line. |
81 // (--info-file file) | |
3523 | 82 std::string Vinfo_file; |
2202 | 83 |
84 // Name of the info reader we'd like to use. | |
85 // (--info-program program) | |
5794 | 86 std::string Vinfo_program; |
2202 | 87 |
3686 | 88 // Name of the makeinfo program to run. |
5794 | 89 static std::string Vmakeinfo_program = "makeinfo"; |
3686 | 90 |
2189 | 91 // If TRUE, don't print additional help message in help and usage |
92 // functions. | |
5794 | 93 static bool Vsuppress_verbose_help_message = false; |
2189 | 94 |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
95 const static char * const operators[] = |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
96 { |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
97 "!", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
98 "~", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
99 "!=", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
100 "~=", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
101 "\"", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
102 "#", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
103 "%", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
104 "#{", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
105 "%{", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
106 "#}", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
107 "%}", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
108 "...", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
109 "&", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
110 "&&", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
111 "'", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
112 "(", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
113 ")", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
114 "*", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
115 "**", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
116 "^", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
117 "+", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
118 "++", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
119 ",", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
120 "-", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
121 "--", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
122 ".'", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
123 ".*", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
124 ".**", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
125 ".^", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
126 "./", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
127 "/", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
128 ".\\", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
129 "\\", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
130 ":", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
131 ";", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
132 "<", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
133 "<=", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
134 "=", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
135 "==", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
136 ">", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
137 ">=", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
138 "[", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
139 "]", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
140 "|", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
141 "||", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
142 0 |
1 | 143 }; |
144 | |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
145 const static string_vector operator_names (operators); |
1 | 146 |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
147 const static char * const keywords[] = |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
148 { |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
149 "break", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
150 "case", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
151 "catch", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
152 "continue", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
153 "do", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
154 "else", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
155 "elseif", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
156 "end", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
157 "end_try_catch", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
158 "end_unwind_protect", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
159 "endfor", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
160 "endfunction", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
161 "endif", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
162 "endparfor", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
163 "endswitch", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
164 "endwhile", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
165 "for", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
166 "function", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
167 "global", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
168 "if", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
169 "otherwise", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
170 "parfor", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
171 "persistent", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
172 "return", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
173 "static", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
174 "switch", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
175 "try", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
176 "until", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
177 "unwind_protect", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
178 "unwind_protect_cleanup", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
179 "varargin", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
180 "varargout", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
181 "while", |
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
182 0 |
1 | 183 }; |
184 | |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
185 const static string_vector keyword_names (keywords); |
1 | 186 |
22172
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
187 // Return a vector of all functions from this file, |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
188 // for use in command line auto-completion. |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
189 static string_vector |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
190 local_functions (void) |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
191 { |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
192 string_vector retval; |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
193 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
194 octave_user_code *curr_fcn = octave_call_stack::caller_user_code (); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
195 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
196 if (! curr_fcn) |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
197 return retval; |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
198 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
199 // All subfunctions are listed in the top-level function of this file. |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
200 while (curr_fcn->is_subfunction ()) |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
201 curr_fcn = symbol_table::get_curr_fcn (curr_fcn->parent_fcn_scope ()); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
202 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
203 // Get subfunctions. |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
204 const std::list<std::string> names = curr_fcn->subfunction_names (); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
205 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
206 size_t sz = names.size (); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
207 retval.resize (sz); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
208 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
209 // Loop over them. |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
210 size_t i = 0; |
22862
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22825
diff
changeset
|
211 for (const auto& nm : names) |
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22825
diff
changeset
|
212 retval(i++) = nm; |
22172
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
213 |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
214 return retval; |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
215 } |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
216 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
217 // FIXME: It's not likely that this does the right thing now. |
3016 | 218 |
219 string_vector | |
220 make_name_list (void) | |
221 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
222 const int key_len = keyword_names.numel (); |
3016 | 223 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
224 const string_vector bif = symbol_table::built_in_function_names (); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
225 const int bif_len = bif.numel (); |
4009 | 226 |
12911
d6151d774283
make completion work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
12670
diff
changeset
|
227 const string_vector cfl = symbol_table::cmdline_function_names (); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
228 const int cfl_len = cfl.numel (); |
12911
d6151d774283
make completion work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
12670
diff
changeset
|
229 |
10500
8f27f368aba2
fix generating names for TAB completion
Jaroslav Hajek <highegg@gmail.com>
parents:
10315
diff
changeset
|
230 const string_vector lcl = symbol_table::variable_names (); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
231 const int lcl_len = lcl.numel (); |
3016 | 232 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
233 const string_vector ffl = load_path::fcn_names (); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
234 const int ffl_len = ffl.numel (); |
3016 | 235 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
236 const string_vector afl = autoloaded_functions (); |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20172
diff
changeset
|
237 const int afl_len = afl.numel (); |
5592 | 238 |
22172
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
239 const string_vector lfl = local_functions (); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
240 const int lfl_len = lfl.numel (); |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
241 |
12911
d6151d774283
make completion work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
12670
diff
changeset
|
242 const int total_len |
22172
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
243 = key_len + bif_len + cfl_len + lcl_len + ffl_len + afl_len + lfl_len; |
3016 | 244 |
245 string_vector list (total_len); | |
246 | |
247 // Put all the symbols in one big list. | |
248 | |
249 int j = 0; | |
250 int i = 0; | |
251 for (i = 0; i < key_len; i++) | |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
252 list[j++] = keyword_names[i]; |
3016 | 253 |
7336 | 254 for (i = 0; i < bif_len; i++) |
255 list[j++] = bif[i]; | |
4009 | 256 |
12911
d6151d774283
make completion work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
12670
diff
changeset
|
257 for (i = 0; i < cfl_len; i++) |
d6151d774283
make completion work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
12670
diff
changeset
|
258 list[j++] = cfl[i]; |
d6151d774283
make completion work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
12670
diff
changeset
|
259 |
3016 | 260 for (i = 0; i < lcl_len; i++) |
261 list[j++] = lcl[i]; | |
262 | |
263 for (i = 0; i < ffl_len; i++) | |
264 list[j++] = ffl[i]; | |
265 | |
5592 | 266 for (i = 0; i < afl_len; i++) |
267 list[j++] = afl[i]; | |
268 | |
22172
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
269 for (i = 0; i < lfl_len; i++) |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
270 list[j++] = lfl[i]; |
ed8a0c39e14c
Allow TAB autocompletion of local functions in debug mode (bug #48317)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22156
diff
changeset
|
271 |
3016 | 272 return list; |
273 } | |
274 | |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
275 static bool |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
276 looks_like_html (const std::string& msg) |
3014 | 277 { |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
278 const size_t p1 = msg.find ('\n'); |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
279 std::string t = msg.substr (0, p1); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
280 // FIXME: this comparison should be case-insensitive |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
281 const size_t p2 = t.find ("<html"); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
282 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
283 return (p2 != std::string::npos); |
2470 | 284 } |
3014 | 285 |
286 static bool | |
3523 | 287 looks_like_texinfo (const std::string& msg, size_t& p1) |
3295 | 288 { |
289 p1 = msg.find ('\n'); | |
290 | |
3523 | 291 std::string t = msg.substr (0, p1); |
3295 | 292 |
8021 | 293 if (p1 == std::string::npos) |
3295 | 294 p1 = 0; |
295 | |
296 size_t p2 = t.find ("-*- texinfo -*-"); | |
297 | |
8021 | 298 return (p2 != std::string::npos); |
3295 | 299 } |
300 | |
3355 | 301 static bool |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
302 raw_help_from_symbol_table (const std::string& nm, std::string& h, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
303 std::string& w, bool& symbol_found) |
3355 | 304 { |
305 bool retval = false; | |
306 | |
7336 | 307 octave_value val = symbol_table::find_function (nm); |
3355 | 308 |
7336 | 309 if (val.is_defined ()) |
3355 | 310 { |
7336 | 311 octave_function *fcn = val.function_value (); |
312 | |
313 if (fcn) | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
314 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
315 symbol_found = true; |
5399 | 316 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
317 h = fcn->doc_string (); |
7336 | 318 |
8631
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
319 retval = true; |
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
320 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
321 w = fcn->fcn_file_name (); |
6243 | 322 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
323 if (w.empty ()) |
8631
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
324 w = fcn->is_user_function () |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
325 ? "command-line function" : "built-in function"; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
326 } |
6243 | 327 } |
3355 | 328 |
6243 | 329 return retval; |
330 } | |
331 | |
332 static bool | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
333 raw_help_from_file (const std::string& nm, std::string& h, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
334 std::string& file, bool& symbol_found) |
6243 | 335 { |
336 bool retval = false; | |
337 | |
338 h = get_help_from_file (nm, symbol_found, file); | |
339 | |
340 if (h.length () > 0) | |
341 retval = true; | |
342 | |
343 return retval; | |
344 } | |
345 | |
346 static bool | |
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
|
347 raw_help_from_docstrings_file (const std::string& nm, std::string& h, |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
348 bool& symbol_found) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
349 { |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
350 typedef std::pair<std::streampos, std::streamoff> txt_limits_type; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
351 typedef std::map<std::string, txt_limits_type> help_txt_map_type; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
352 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
353 static help_txt_map_type help_txt_map; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
354 static bool initialized = false; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
355 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
356 h = ""; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
357 symbol_found = false; |
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 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
359 // FIXME: Should we cache the timestamp of the file and reload the |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
360 // offsets if it changes? Or just warn about that? Or just ignore |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
361 // it, and assume it won't change? |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
362 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
363 if (! initialized) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
364 { |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
365 std::string fname = Vbuilt_in_docstrings_file; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
366 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
367 std::ifstream file (fname.c_str (), std::ios::in | std::ios::binary); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
368 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
369 if (! file) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
370 error ("failed to open docstrings file: %s", fname.c_str ()); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
371 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
372 // Ignore header; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
373 file.ignore (std::numeric_limits<std::streamsize>::max(), 0x1d); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
374 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
375 if (file.eof ()) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
376 error ("invalid built-in-docstrings file!"); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
377 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
378 // FIXME: eliminate fixed buffer size. |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
379 size_t bufsize = 1000; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
380 OCTAVE_LOCAL_BUFFER (char, buf, bufsize); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
381 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
382 while (! file.eof ()) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
383 { |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
384 std::string name; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
385 int i = 0; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
386 int c; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
387 while (file && (c = file.get ()) != std::istream::traits_type::eof ()) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
388 { |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
389 if (c == '\n' || c == '\r') |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
390 { |
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 buf[i] = '\0'; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
392 name = buf; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
393 break; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
394 } |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
395 else |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
396 buf[i++] = c; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
397 } |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
398 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
399 // Skip @c FILENAME which is part of current DOCSTRINGS |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
400 // syntax. This may disappear if a specific format for |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
401 // docstring files is developed. |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
402 while (file |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
403 && (c = file.get ()) != std::istream::traits_type::eof () |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
404 && c != '\n' && c != '\r') |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
405 ; // skip text |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
406 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
407 // skip newline characters |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
408 while (file |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
409 && (c = file.get ()) != std::istream::traits_type::eof () |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
410 && c == '\n' && c == '\r') |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
411 ; // skip text |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
412 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
413 file.unget (); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
414 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
415 // Position of beginning of help text. |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
416 std::streampos beg = file.tellg (); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
417 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
418 // Skip help text. |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
419 file.ignore (std::numeric_limits<std::streamsize>::max(), 0x1d); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22199
diff
changeset
|
420 |
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
|
421 // Position of end of help text. |
22556
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
422 std::streamoff len; |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
423 |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
424 if (! file.eof ()) |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
425 len = file.tellg () - beg - 1; |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
426 else |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
427 { |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
428 file.seekg (0, file.end); |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
429 len = file.tellg () - beg - 1; |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
430 file.setstate (file.eofbit); // reset eof flag |
121e9639b604
doc: Correctly get last entry from DOCSTRINGS file (bug #49224).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
431 } |
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
|
432 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
433 help_txt_map[name] = txt_limits_type (beg, len); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
434 } |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
435 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
436 initialized = true; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
437 } |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
438 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
439 help_txt_map_type::const_iterator it = help_txt_map.find (nm); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
440 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
441 if (it != help_txt_map.end ()) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
442 { |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
443 txt_limits_type txt_limits = it->second; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
444 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
445 std::streampos beg = txt_limits.first; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
446 std::streamoff len = txt_limits.second; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
447 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
448 std::string fname = Vbuilt_in_docstrings_file; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
449 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
450 std::ifstream file (fname.c_str (), std::ios::in | std::ios::binary); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
451 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
452 if (! file) |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
453 error ("failed to open docstrings file: %s", fname.c_str ()); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
454 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
455 file.seekg (beg); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
456 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
457 size_t txt_len = len; |
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 OCTAVE_LOCAL_BUFFER (char, buf, txt_len + 1); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
459 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
460 file.read (buf, txt_len); |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
461 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
462 buf[txt_len] = '\0'; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
463 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
464 h = buf; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
465 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
466 symbol_found = true; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
467 } |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
468 |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
469 return symbol_found; |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
470 } |
f6181638f6c5
search docstrings file for built-in and dld function help text (bug #48554)
John W. Eaton <jwe@octave.org>
parents:
22172
diff
changeset
|
471 |
6243 | 472 std::string |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
473 raw_help (const std::string& nm, bool& symbol_found) |
6243 | 474 { |
475 std::string h; | |
476 std::string w; | |
477 std::string f; | |
478 | |
20138
4ff975c58584
Check error_state before searching for help text (bug #44934).
Rik <rik@octave.org>
parents:
19872
diff
changeset
|
479 bool found; |
4ff975c58584
Check error_state before searching for help text (bug #44934).
Rik <rik@octave.org>
parents:
19872
diff
changeset
|
480 |
4ff975c58584
Check error_state before searching for help text (bug #44934).
Rik <rik@octave.org>
parents:
19872
diff
changeset
|
481 found = raw_help_from_symbol_table (nm, h, w, symbol_found); |
20678
4b00afb5e9c3
eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20581
diff
changeset
|
482 |
4b00afb5e9c3
eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20581
diff
changeset
|
483 if (! found) |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
484 found = raw_help_from_file (nm, h, f, symbol_found); |
6243 | 485 |
22884
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
486 bool external_doc = h.compare (0, 12, "external-doc") == 0; |
22822
4e9241cf59db
find help for function aliases again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22556
diff
changeset
|
487 |
4e9241cf59db
find help for function aliases again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22556
diff
changeset
|
488 if (! found || external_doc) |
22884
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
489 { |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
490 std::string tmp_nm = nm; |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
491 |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
492 if (external_doc && h.length () > 12 && h[12] == ':') |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
493 tmp_nm = h.substr (13); |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
494 |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
495 raw_help_from_docstrings_file (tmp_nm, h, symbol_found); |
0419dec5d5c1
allow external docstrings from .oct files to be found again (bug #49687)
John W. Eaton <jwe@octave.org>
parents:
22822
diff
changeset
|
496 } |
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
|
497 |
6243 | 498 return h; |
499 } | |
500 | |
15470
bf0857c789f4
initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
501 DEFUN (built_in_docstrings_file, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
502 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
|
503 @deftypefn {} {@var{val} =} built_in_docstrings_file () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
504 @deftypefnx {} {@var{old_val} =} built_in_docstrings_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
|
505 @deftypefnx {} {} built_in_docstrings_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
|
506 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
|
507 file containing docstrings for built-in Octave functions. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
508 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
509 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
|
510 @file{@var{octave-home}/share/octave/@var{version}/etc/built-in-docstrings}, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
511 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
|
512 and @var{version} is the Octave version number. The default value may be |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
513 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
|
514 @w{@env{OCTAVE_BUILT_IN_DOCSTRINGS_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
|
515 @option{--built-in-docstrings-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
|
516 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
517 Note: This variable is only used when Octave is initializing itself. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
518 Modifying it during a running session of Octave will have no effect. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
519 @end deftypefn */) |
15470
bf0857c789f4
initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
520 { |
bf0857c789f4
initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
521 return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (built_in_docstrings_file); |
bf0857c789f4
initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
522 } |
bf0857c789f4
initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
523 |
1140 | 524 static void |
9806
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
525 do_get_help_text (const std::string& name, std::string& text, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
526 std::string& format) |
1140 | 527 { |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
528 bool symbol_found = false; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
529 text = raw_help (name, symbol_found); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
530 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
531 format = "Not found"; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
532 if (symbol_found) |
1140 | 533 { |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
534 size_t idx = -1; |
8631
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
535 if (text.empty ()) |
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
536 { |
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
537 format = "Not documented"; |
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
538 } |
52956d669506
Display sensible error message when the help text of an undocumented function is requested
Soren Hauberg <hauberg@gmail.com>
parents:
8630
diff
changeset
|
539 else if (looks_like_texinfo (text, idx)) |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
540 { |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
541 format = "texinfo"; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
542 text.erase (0, idx); |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
543 } |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
544 else if (looks_like_html (text)) |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
545 { |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
546 format = "html"; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
547 } |
5399 | 548 else |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
549 { |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
550 format = "plain text"; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
551 } |
1140 | 552 } |
553 } | |
554 | |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
555 DEFUN (get_help_text, args, , |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
556 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
|
557 @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
|
558 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
|
559 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
560 The raw help text is returned in @var{text} and the format in @var{format} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
561 The format is a string which is one of @qcode{"texinfo"}, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
562 @qcode{"html"}, or @qcode{"plain text"}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
563 @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
|
564 @end deftypefn */) |
529 | 565 { |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
566 if (args.length () != 1) |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
567 print_usage (); |
1755 | 568 |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
569 const std::string name = args(0).xstring_value ("get_help_text: NAME must be a string"); |
529 | 570 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20922
diff
changeset
|
571 std::string text, format; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
572 |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
573 do_get_help_text (name, text, format); |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
574 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20922
diff
changeset
|
575 return ovl (text, format); |
529 | 576 } |
577 | |
9806
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
578 static void |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
579 do_get_help_text_from_file (const std::string& fname, std::string& text, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
580 std::string& format) |
9806
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
581 { |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
582 bool symbol_found = false; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
583 |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
584 std::string f; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
585 |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
586 raw_help_from_file (fname, text, f, symbol_found); |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
587 |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
588 format = "Not found"; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
589 if (symbol_found) |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
590 { |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
591 size_t idx = -1; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
592 if (text.empty ()) |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
593 { |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
594 format = "Not documented"; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
595 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
596 else if (looks_like_texinfo (text, idx)) |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
597 { |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
598 format = "texinfo"; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
599 text.erase (0, idx); |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
600 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
601 else if (looks_like_html (text)) |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
602 { |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
603 format = "html"; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
604 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
605 else |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
606 { |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
607 format = "plain text"; |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
608 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
609 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
610 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
611 |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
612 DEFUN (get_help_text_from_file, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
613 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
|
614 @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
|
615 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
|
616 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
617 The raw help text is returned in @var{text} and the format in @var{format} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
618 The format is a string which is one of @qcode{"texinfo"}, |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
619 @qcode{"html"}, or @qcode{"plain text"}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
620 @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
|
621 @end deftypefn */) |
9806
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
622 { |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
623 if (args.length () != 1) |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
624 print_usage (); |
9806
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
625 |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
626 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
|
627 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20922
diff
changeset
|
628 std::string text, format; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
629 |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
630 do_get_help_text_from_file (fname, text, format); |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
631 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20922
diff
changeset
|
632 return ovl (text, format); |
9806
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
633 } |
8e345f2fe4d6
improved support for Contents.m files
John W. Eaton <jwe@octave.org>
parents:
9416
diff
changeset
|
634 |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
635 // 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
|
636 // operators. |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
637 |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
638 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
|
639 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
|
640 @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
|
641 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
|
642 @end deftypefn */) |
3355 | 643 { |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
644 return ovl (Cell (operator_names)); |
3355 | 645 } |
646 | |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
647 // 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
|
648 // keywords. |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
649 |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
650 DEFUN (__keywords__, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
651 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
|
652 @deftypefn {} {} __keywords__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
653 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
|
654 @end deftypefn */) |
581 | 655 { |
22199
af0dca907fae
get help text for operators and keywords from docstrings file
John W. Eaton <jwe@octave.org>
parents:
22198
diff
changeset
|
656 return ovl (Cell (keyword_names)); |
581 | 657 } |
658 | |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
659 // Return a cell array of strings containing the names of all builtin |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
660 // functions. |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
661 |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
662 DEFUN (__builtins__, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
663 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
|
664 @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
|
665 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
|
666 @end deftypefn */) |
3355 | 667 { |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
668 const string_vector bif = symbol_table::built_in_function_names (); |
3355 | 669 |
21127
df7891224709
maint: Use "return ovl (...)" in DEFUN macros.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
670 return ovl (Cell (bif)); |
3355 | 671 } |
672 | |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
673 DEFUN (localfunctions, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
674 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
|
675 @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
|
676 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
|
677 file. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
678 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
679 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
|
680 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
|
681 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
|
682 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
683 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
|
684 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
|
685 |
22974
ecc5eeada8dc
Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents:
22885
diff
changeset
|
686 @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
|
687 @end deftypefn */) |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
688 { |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
689 if (args.length () != 0) |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
690 print_usage (); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
691 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
692 Cell retval; |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
693 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
694 // Find the main function we are in. |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
695 octave_user_code *parent_fcn = octave_call_stack::debug_user_code (); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
696 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
697 if (! parent_fcn) |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
698 return ovl (retval); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
699 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
700 // Find the subfunctions of this function. |
22974
ecc5eeada8dc
Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents:
22885
diff
changeset
|
701 // 1) subfunction_names contains only valid subfunctions |
ecc5eeada8dc
Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents:
22885
diff
changeset
|
702 // 2) subfunctions contains both nested functions and subfunctions |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
703 const std::list<std::string> names = parent_fcn->subfunction_names (); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
704 const std::map<std::string, octave_value> h = parent_fcn->subfunctions (); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
705 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
706 size_t sz = names.size (); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
707 retval.resize (dim_vector (sz, 1)); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
708 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
709 // loop over them. |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
710 size_t i = 0; |
22862
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22825
diff
changeset
|
711 for (const auto& nm : names) |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
712 { |
22862
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22825
diff
changeset
|
713 std::map<std::string, octave_value>::const_iterator nm_fcn = h.find (nm); |
22974
ecc5eeada8dc
Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents:
22885
diff
changeset
|
714 if (nm_fcn != h.end ()) |
22862
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22825
diff
changeset
|
715 retval(i++) = octave_value (new octave_fcn_handle (nm_fcn->second, nm)); |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
716 } |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
717 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
718 return ovl (retval); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
719 } |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
720 |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
721 /* |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
722 %!test |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
723 %! f = tempname (".", "oct_"); |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
724 %! fcn_name = f(3:end); |
22016
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
725 %! f = [f ".m"]; |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
726 %! unwind_protect |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
727 %! fid = fopen (f, "w+"); |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
728 %! 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
|
729 %! 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
|
730 %! 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
|
731 %! fclose (fid); |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
732 %! d = eval (fcn_name); |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
733 %! 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
|
734 %! assert (d{1} (3), 4); |
ecc5eeada8dc
Don't mark nested functions in primary function as subfunctions.
Rik <rik@octave.org>
parents:
22885
diff
changeset
|
735 %! assert (d{2} (3), 6); |
22016
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
736 %! unwind_protect_cleanup |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
737 %! unlink (f); |
d4ce10f57918
Clean up localfunctions BIST test
Mike Miller <mtmiller@octave.org>
parents:
21966
diff
changeset
|
738 %! end_unwind_protect |
21765
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
739 */ |
23a610a3f001
Implement localfunctions Matlab command (bug #47705).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21733
diff
changeset
|
740 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
741 static std::string |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
742 do_which (const std::string& name, std::string& type) |
3355 | 743 { |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
744 std::string file; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
745 |
21017
93748bcaec17
maint: Replace emtpy 'std::string ()' calls with "".
Rik <rik@octave.org>
parents:
20996
diff
changeset
|
746 type = ""; |
3355 | 747 |
7336 | 748 octave_value val = symbol_table::find_function (name); |
749 | |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
750 if (name.find_first_of ('.') == std::string::npos) |
3355 | 751 { |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
752 if (val.is_defined ()) |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
753 { |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
754 octave_function *fcn = val.function_value (); |
7336 | 755 |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
756 if (fcn) |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
757 { |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
758 file = fcn->fcn_file_name (); |
3355 | 759 |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
760 if (file.empty ()) |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
761 { |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
762 if (fcn->is_user_function ()) |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
763 type = "command-line function"; |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
764 else |
15005
74c7265c057a
fix failure with function handles caused by changeset ea6997657614
John W. Eaton <jwe@octave.org>
parents:
14766
diff
changeset
|
765 { |
74c7265c057a
fix failure with function handles caused by changeset ea6997657614
John W. Eaton <jwe@octave.org>
parents:
14766
diff
changeset
|
766 file = fcn->src_file_name (); |
74c7265c057a
fix failure with function handles caused by changeset ea6997657614
John W. Eaton <jwe@octave.org>
parents:
14766
diff
changeset
|
767 type = "built-in function"; |
74c7265c057a
fix failure with function handles caused by changeset ea6997657614
John W. Eaton <jwe@octave.org>
parents:
14766
diff
changeset
|
768 } |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
769 } |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
770 else |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
771 type = val.is_user_script () |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
772 ? std::string ("script") : std::string ("function"); |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
773 } |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
774 } |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
775 else |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
776 { |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
777 // We might find a file that contains only a doc string. |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
778 |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
779 file = load_path::find_fcn_file (name); |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
780 } |
7336 | 781 } |
8672
2a49c32d4322
allow help to work with files containing only comments
John W. Eaton <jwe@octave.org>
parents:
8631
diff
changeset
|
782 else |
2a49c32d4322
allow help to work with files containing only comments
John W. Eaton <jwe@octave.org>
parents:
8631
diff
changeset
|
783 { |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
784 // File query. |
8672
2a49c32d4322
allow help to work with files containing only comments
John W. Eaton <jwe@octave.org>
parents:
8631
diff
changeset
|
785 |
9416
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
786 // For compatibility: "file." queries "file". |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
787 if (name.size () > 1 && name[name.size () - 1] == '.') |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
788 file = load_path::find_file (name.substr (0, name.size () - 1)); |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
789 else |
2cc47338e427
allow which look for files on path
Jaroslav Hajek <highegg@gmail.com>
parents:
9377
diff
changeset
|
790 file = load_path::find_file (name); |
17829
c2d9d42f4fe1
which: return the full path to a regular file (bug #40332)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
791 |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
792 file = octave::sys::env::make_absolute (file); |
8672
2a49c32d4322
allow help to work with files containing only comments
John W. Eaton <jwe@octave.org>
parents:
8631
diff
changeset
|
793 } |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
794 |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
795 return file; |
3355 | 796 } |
797 | |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
798 std::string |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
799 do_which (const std::string& name) |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
800 { |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
801 std::string retval; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
802 |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
803 std::string type; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
804 |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
805 retval = do_which (name, type); |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
806 |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
807 return retval; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
808 } |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
809 |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
810 DEFUN (__which__, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
811 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
|
812 @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
|
813 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
|
814 @end deftypefn */) |
581 | 815 { |
20996 | 816 string_vector argv = args.make_argv (); |
1755 | 817 |
20922
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
818 int nargin = argv.numel (); |
581 | 819 |
20922
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
820 octave_map m (dim_vector (1, nargin)); |
581 | 821 |
20922
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
822 Cell names (1, nargin); |
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
823 Cell files (1, nargin); |
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
824 Cell types (1, nargin); |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
825 |
20922
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
826 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
|
827 { |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
828 std::string name = argv[i]; |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
829 |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
830 std::string type; |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
831 |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
832 std::string file = do_which (name, type); |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
833 |
20922
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
834 names(i) = name; |
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
835 files(i) = file; |
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
836 types(i) = type; |
20803
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
837 } |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
838 |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
839 m.assign ("name", names); |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
840 m.assign ("file", files); |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
841 m.assign ("type", types); |
c22206c1a88f
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20714
diff
changeset
|
842 |
20922
49081851fddc
Eliminate duplicate input arg checking in which.m and __which__.
Rik <rik@octave.org>
parents:
20884
diff
changeset
|
843 return ovl (m); |
581 | 844 } |
845 | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
846 // FIXME: Are we sure this function always does the right thing? |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
847 inline bool |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
848 file_is_in_dir (const std::string filename, const std::string dir) |
5447 | 849 { |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
850 if (filename.find (dir) == 0) |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
851 { |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
852 const int dir_len = dir.size (); |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
853 const int filename_len = filename.size (); |
21733
cb0fdd941d84
use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents:
21732
diff
changeset
|
854 const int max_allowed_seps = octave::sys::file_ops::is_dir_sep (dir[dir_len-1]) ? 0 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
855 : 1; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
856 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
857 int num_seps = 0; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
858 for (int i = dir_len; i < filename_len; i++) |
21733
cb0fdd941d84
use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents:
21732
diff
changeset
|
859 if (octave::sys::file_ops::is_dir_sep (filename[i])) |
20714
7b6d8c19dab0
Cuddle increment (++) and decrement (--) operators with variable in question.
Rik <rik@octave.org>
parents:
20700
diff
changeset
|
860 num_seps++; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
861 |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
862 return (num_seps <= max_allowed_seps); |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
863 } |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
864 else |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
865 return false; |
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
866 } |
5447 | 867 |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
868 // 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
|
869 // 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
|
870 // the current path. |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
871 |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8672
diff
changeset
|
872 DEFUN (__list_functions__, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
873 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
|
874 @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
|
875 @deftypefnx {} {@var{retval} =} __list_functions__ (@var{directory}) |
22337
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
876 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
|
877 |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
878 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
|
879 in that directory. |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
880 @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
|
881 @end deftypefn */) |
8575
f134925a1cfa
m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents:
8503
diff
changeset
|
882 { |
8863
34a821854961
pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents:
8861
diff
changeset
|
883 octave_value retval; |
5447 | 884 |
22337
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
885 if (args.length () == 0) |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
886 { |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
887 // Get list of all functions |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
888 string_vector ffl = load_path::fcn_names (); |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
889 string_vector afl = autoloaded_functions (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
890 |
22337
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
891 retval = Cell (ffl.append (afl)); |
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
892 } |
20581
fd0efcdb3718
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
893 else |
5447 | 894 { |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20678
diff
changeset
|
895 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
|
896 |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
19269
diff
changeset
|
897 string_vector fl = load_path::files (dir, true); |
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
19269
diff
changeset
|
898 |
22337
77c209d63b75
Update __list_functions__ internal function.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
899 // 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
|
900 // 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
|
901 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
|
902 |
20581
fd0efcdb3718
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
903 retval = Cell (fl); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11572
diff
changeset
|
904 } |
5447 | 905 |
906 return retval; | |
907 } | |
908 | |
8861 | 909 DEFUN (doc_cache_file, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
910 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
|
911 @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
|
912 @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
|
913 @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
|
914 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
|
915 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
|
916 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
917 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
|
918 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
|
919 @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
|
920 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
|
921 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
|
922 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
|
923 @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
|
924 @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
|
925 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
926 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
|
927 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
|
928 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
|
929 @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
|
930 @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
|
931 @end deftypefn */) |
8861 | 932 { |
933 return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (doc_cache_file); | |
934 } | |
935 | |
14614
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
936 DEFUN (texi_macros_file, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
937 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
|
938 @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
|
939 @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
|
940 @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
|
941 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
|
942 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
|
943 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
|
944 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
945 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
|
946 @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
|
947 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
|
948 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
|
949 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
|
950 @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
|
951 @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
|
952 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
953 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
|
954 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
|
955 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
|
956 @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
|
957 @end deftypefn */) |
14614
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
958 { |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
959 return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (texi_macros_file); |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
960 } |
4e9dc46d4125
handle texinfo macros consistently in help system and manual
John W. Eaton <jwe@octave.org>
parents:
14360
diff
changeset
|
961 |
5794 | 962 DEFUN (info_file, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
963 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
|
964 @deftypefn {} {@var{val} =} info_file () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
965 @deftypefnx {} {@var{old_val} =} info_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
|
966 @deftypefnx {} {} info_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
|
967 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
|
968 Octave info file. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
969 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
970 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
|
971 @file{@var{octave-home}/info/octave.info}, in |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
972 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
|
973 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
|
974 @w{@env{OCTAVE_INFO_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
|
975 @option{--info-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
|
976 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
977 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
|
978 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
|
979 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
|
980 @seealso{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
|
981 @end deftypefn */) |
2202 | 982 { |
5794 | 983 return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (info_file); |
2202 | 984 } |
985 | |
5794 | 986 DEFUN (info_program, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
987 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
|
988 @deftypefn {} {@var{val} =} info_program () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
989 @deftypefnx {} {@var{old_val} =} info_program (@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
|
990 @deftypefnx {} {} info_program (@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
|
991 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
|
992 info program to run. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
993 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
994 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
|
995 @file{@var{octave-home}/libexec/octave/@var{version}/exec/@var{arch}/info} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
996 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
|
997 @var{version} is the Octave version number, and @var{arch} is the system |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
998 type (for example, @code{i686-pc-linux-gnu}). The default value may be |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
999 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
|
1000 @w{@env{OCTAVE_INFO_PROGRAM}}, 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
|
1001 @option{--info-program NAME}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1002 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1003 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
|
1004 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
|
1005 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
|
1006 @seealso{info_file, 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
|
1007 @end deftypefn */) |
5794 | 1008 { |
1009 return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (info_program); | |
1010 } | |
3686 | 1011 |
5794 | 1012 DEFUN (makeinfo_program, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1013 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
|
1014 @deftypefn {} {@var{val} =} 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
|
1015 @deftypefnx {} {@var{old_val} =} makeinfo_program (@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
|
1016 @deftypefnx {} {} makeinfo_program (@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
|
1017 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
|
1018 program that Octave runs to format help text containing |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1019 Texinfo markup commands. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1020 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1021 The default value is @code{makeinfo}. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1022 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1023 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
|
1024 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
|
1025 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
|
1026 @seealso{texi_macros_file, info_file, info_program, doc, help} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1027 @end deftypefn */) |
5794 | 1028 { |
1029 return SET_NONEMPTY_INTERNAL_STRING_VARIABLE (makeinfo_program); | |
1030 } | |
2202 | 1031 |
5794 | 1032 DEFUN (suppress_verbose_help_message, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1033 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
|
1034 @deftypefn {} {@var{val} =} suppress_verbose_help_message () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1035 @deftypefnx {} {@var{old_val} =} suppress_verbose_help_message (@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
|
1036 @deftypefnx {} {} suppress_verbose_help_message (@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
|
1037 Query or set the internal variable that controls whether Octave |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1038 will add additional help information to the end of the output from |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1039 the @code{help} command and usage messages for built-in commands. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1040 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21921
diff
changeset
|
1041 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
|
1042 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
|
1043 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
|
1044 @end deftypefn */) |
5794 | 1045 { |
1046 return SET_INTERNAL_VARIABLE (suppress_verbose_help_message); | |
2189 | 1047 } |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22337
diff
changeset
|
1048 |