annotate scripts/miscellaneous/edit.m @ 19658:17e6c770e6ac gui-release

check existence of uncompressed or compressed info files for doc viewer * parser.cc (set_info_path): return type changed to bool, checking existence of info file uncompressed and with all known compressed file extensions, returns false if no file was found and true after parsing the found file; * parser.h: return type of set_info_path changed to bool * webinfo.cc (ctor): do not check existence of info file since this is done via set_info_path; (set_info_path): return type changed to bool, load Top-node if parser::set_info_path returns true and return the related return value * webinfo.h: return type of set_info_path changed to bool
author Torsten <ttl@justmail.de>
date Fri, 02 Jan 2015 18:47:29 +0100
parents 832ecfda1d3c
children 95a1ee1cbdf1 fe689210525c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17744
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17738
diff changeset
1 ## Copyright (C) 2001-2013 Paul Kienzle
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
2 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
3 ## This file is part of Octave.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
4 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
8 ## your option) any later version.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
9 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
13 ## General Public License for more details.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
14 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
18
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
19 ## -*- texinfo -*-
9724
f22bbc5d56e9 Fix various incorrect usages of TeXinfo deffn and deftypefn macros
Rik <rdrider0-list@yahoo.com>
parents: 9153
diff changeset
20 ## @deftypefn {Command} {} edit @var{name}
f22bbc5d56e9 Fix various incorrect usages of TeXinfo deffn and deftypefn macros
Rik <rdrider0-list@yahoo.com>
parents: 9153
diff changeset
21 ## @deftypefnx {Command} {} edit @var{field} @var{value}
7650
eb7bdde776f2 Texinfo fixes
John W. Eaton <jwe@octave.org>
parents: 7540
diff changeset
22 ## @deftypefnx {Command} {@var{value} =} edit get @var{field}
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
23 ## Edit the named function, or change editor settings.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
24 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
25 ## If @code{edit} is called with the name of a file or function as
17991
22187db555cf Remove editor option from edit() and use only EDITOR() (bug #40600)
Carnë Draug <carandraug@octave.org>
parents: 17884
diff changeset
26 ## its argument it will be opened in the text editor defined by @code{EDITOR}.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
27 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
28 ## @itemize @bullet
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
29 ## @item
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
30 ## If the function @var{name} is available in a file on your path and
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
31 ## that file is modifiable, then it will be edited in place. If it
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
32 ## is a system function, then it will first be copied to the directory
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
33 ## @env{HOME} (see below) and then edited.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
34 ## If no file is found, then the m-file
9038
fca0dc2fb042 Cleanup documentation files stmt.texi and func.texi
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
35 ## variant, ending with ".m", will be considered. If still no file
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
36 ## is found, then variants with a leading "@@" and then with both a
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
37 ## leading "@@" and trailing ".m" will be considered.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
38 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
39 ## @item
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
40 ## If @var{name} is the name of a function defined in the interpreter but
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
41 ## not in an m-file, then an m-file will be created in @env{HOME}
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
42 ## to contain that function along with its current definition.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
43 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
44 ## @item
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
45 ## If @code{@var{name}.cc} is specified, then it will search for
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
46 ## @code{@var{name}.cc} in the path and try to modify it, otherwise it will
17753
887df64e54e4 doc: Final grammarcheck of docstrings for 3.8 release.
Rik <rik@octave.org>
parents: 17744
diff changeset
47 ## create a new @file{.cc} file in the current directory. If @var{name} happens
17738
0cfdb818ccb8 * edit.m: update documentation, new files are created in current directory
Torsten <ttl@justmail.de>
parents: 17593
diff changeset
48 ## to be an m-file or interpreter defined function, then the text of that
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
49 ## function will be inserted into the .cc file as a comment.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
50 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
51 ## @item
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
52 ## If @file{@var{name}.ext} is on your path then it will be edited, otherwise
17738
0cfdb818ccb8 * edit.m: update documentation, new files are created in current directory
Torsten <ttl@justmail.de>
parents: 17593
diff changeset
53 ## the editor will be started with @file{@var{name}.ext} in the current
17753
887df64e54e4 doc: Final grammarcheck of docstrings for 3.8 release.
Rik <rik@octave.org>
parents: 17744
diff changeset
54 ## directory as the filename. If @file{@var{name}.ext} is not modifiable,
17738
0cfdb818ccb8 * edit.m: update documentation, new files are created in current directory
Torsten <ttl@justmail.de>
parents: 17593
diff changeset
55 ## it will be copied to @env{HOME} before editing.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
56 ##
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
57 ## @strong{Warning:} You may need to clear @var{name} before the new definition
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
58 ## is available. If you are editing a .cc file, you will need
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
59 ## to execute @code{mkoctfile @file{@var{name}.cc}} before the definition
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
60 ## will be available.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
61 ## @end itemize
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
62 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
63 ## If @code{edit} is called with @var{field} and @var{value} variables,
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
64 ## the value of the control field @var{field} will be set to @var{value}.
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
65 ## If an output argument is requested and the first input argument is @code{get}
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
66 ## then @code{edit} will return the value of the control field @var{field}.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
67 ## If the control field does not exist, edit will return a structure
9038
fca0dc2fb042 Cleanup documentation files stmt.texi and func.texi
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
68 ## containing all fields and values. Thus, @code{edit get all} returns
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
69 ## a complete control structure.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
70 ## The following control fields are used:
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
71 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
72 ## @table @samp
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
73 ## @item home
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
74 ## This is the location of user local m-files. Be sure it is in your
9038
fca0dc2fb042 Cleanup documentation files stmt.texi and func.texi
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
75 ## path. The default is @file{~/octave}.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
76 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
77 ## @item author
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
78 ## This is the name to put after the "## Author:" field of new functions.
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
79 ## By default it guesses from the @code{gecos} field of the password database.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
80 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
81 ## @item email
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
82 ## This is the e-mail address to list after the name in the author field.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
83 ## By default it guesses @code{<$LOGNAME@@$HOSTNAME>}, and if @code{$HOSTNAME}
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
84 ## is not defined it uses @code{uname -n}. You probably want to override this.
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
85 ## Be sure to use the format @code{<user@@host>}.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
86 ##
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
87 ## @item license
14366
b76f0740940e doc: Periodic grammar check of documentation.
Rik <octave@nomad.inbox5.com>
parents: 14363
diff changeset
88 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
89 ## @table @samp
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
90 ## @item gpl
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
91 ## GNU General Public License (default).
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
92 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
93 ## @item bsd
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
94 ## BSD-style license without advertising clause.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
95 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
96 ## @item pd
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
97 ## Public domain.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
98 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
99 ## @item "text"
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
100 ## Your own default copyright and license.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
101 ## @end table
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
102 ##
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
103 ## Unless you specify @samp{pd}, edit will prepend the copyright statement
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
104 ## with "Copyright (C) yyyy Function Author".
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
105 ##
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
106 ## @item mode
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
107 ## This value determines whether the editor should be started in async mode
8795
bb38a86efa1b improve documentation for edit.m
Ivan Sutoris <ivan.sutoris@gmail.com>
parents: 8746
diff changeset
108 ## (editor is started in the background and Octave continues) or sync mode
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17245
diff changeset
109 ## (Octave waits until the editor exits). Set it to @qcode{"sync"} to start
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17245
diff changeset
110 ## the editor in sync mode. The default is @qcode{"async"}
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17245
diff changeset
111 ## (@pxref{XREFsystem,,system}).
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
112 ##
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
113 ## @item editinplace
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
114 ## Determines whether files should be edited in place, without regard to
9038
fca0dc2fb042 Cleanup documentation files stmt.texi and func.texi
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
115 ## whether they are modifiable or not. The default is @code{false}.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
116 ## @end table
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
117 ## @end deftypefn
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
118
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
119 ## Author: Paul Kienzle <pkienzle@users.sf.net>
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
120
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
121 ## Original version by Paul Kienzle distributed as free software in the
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
122 ## public domain.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
123
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
124 function ret = edit (varargin)
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
125
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
126 ## Pick up globals or default them.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
127
17991
22187db555cf Remove editor option from edit() and use only EDITOR() (bug #40600)
Carnë Draug <carandraug@octave.org>
parents: 17884
diff changeset
128 persistent FUNCTION = struct ("HOME", fullfile (default_home, "octave"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9724
diff changeset
129 "AUTHOR", default_user(1),
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
130 "EMAIL", [],
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
131 "LICENSE", "GPL",
12207
c37f167a816a edit.m: As most editors open their own window, change mode to "async".
Ben Abbott <bpabbott@mac.com>
parents: 11587
diff changeset
132 "MODE", "async",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9724
diff changeset
133 "EDITINPLACE", false);
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
134 ## Make sure the stateval variables survive "clear functions".
17336
b81b9d079515 Use '##' for comments which stand alone on a line.
Rik <rik@octave.org>
parents: 17312
diff changeset
135 mlock;
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
136
17991
22187db555cf Remove editor option from edit() and use only EDITOR() (bug #40600)
Carnë Draug <carandraug@octave.org>
parents: 17884
diff changeset
137 ## Get default editor every time in case the user has changed it
22187db555cf Remove editor option from edit() and use only EDITOR() (bug #40600)
Carnë Draug <carandraug@octave.org>
parents: 17884
diff changeset
138 FUNCTION.EDITOR = [EDITOR() " %s"];
22187db555cf Remove editor option from edit() and use only EDITOR() (bug #40600)
Carnë Draug <carandraug@octave.org>
parents: 17884
diff changeset
139
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
140 if (nargin == 1)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
141 ## User has supplied one arg, this can be a single file name
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
142 ## or a cell array of strings containing multiple files to be opened
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
143 if (iscellstr (varargin{1}))
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
144 ## If first arg is a cell array of strings,
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
145 ## it becomes the list of files to be edited
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
146 editfilelist = varargin{1};
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
147 elseif (ischar (varargin{1}))
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
148 ## If first arg is a string, create a cell array of strings
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
149 ## of length 1 (by copying the input cell array)
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
150 editfilelist = varargin(1);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
151 else
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
152 error ("edit: expected file to be a string or cell array of strings");
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
153 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
154 elseif (nargin == 2)
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
155 ## User has supplied two arguments, these could be two file names,
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
156 ## or a combination of editor state name and new value for that state,
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
157 ## so first check for the various states
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
158 statevar = varargin{1};
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
159 stateval = varargin{2};
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
160 switch (toupper (statevar))
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
161 case "EDITOR"
17991
22187db555cf Remove editor option from edit() and use only EDITOR() (bug #40600)
Carnë Draug <carandraug@octave.org>
parents: 17884
diff changeset
162 error ("Octave:deprecated-function",
18011
0d6d0a7c0793 edit.m: Use two spaces to mark sentence break in error() message.
Rik <rik@octave.org>
parents: 17991
diff changeset
163 "The EDITOR option of edit has been removed. Use EDITOR() directly.")
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
164 return;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
165 case "HOME"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
166 if (! isempty (stateval) && stateval(1) == "~")
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
167 stateval = [ default_home, stateval(2:end) ];
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
168 endif
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
169 FUNCTION.HOME = stateval;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
170 return;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
171 case "AUTHOR"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
172 FUNCTION.AUTHOR = stateval;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
173 return;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
174 case "EMAIL"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
175 FUNCTION.EMAIL = stateval;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
176 return;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
177 case "LICENSE"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
178 FUNCTION.LICENSE = stateval;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
179 return;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
180 case "MODE"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
181 if (strcmp (stateval, "sync") || strcmp (stateval, "async"))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
182 FUNCTION.MODE = stateval;
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
183 else
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
184 error ('edit: expected "edit MODE sync|async"');
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
185 endif
17312
088d014a7fe2 Use semicolon after "return" statement in core m-files.
Rik <rik@octave.org>
parents: 17281
diff changeset
186 return;
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
187 case "EDITINPLACE"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
188 if (ischar (stateval))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
189 if (strcmpi (stateval, "true"))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
190 stateval = true;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
191 elseif (strcmpi (stateval, "false"))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
192 stateval = false;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
193 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
194 stateval = eval (stateval);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
195 endif
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
196 endif
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
197 FUNCTION.EDITINPLACE = stateval;
17312
088d014a7fe2 Use semicolon after "return" statement in core m-files.
Rik <rik@octave.org>
parents: 17281
diff changeset
198 return;
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
199 case "GET"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
200 if (isfield (FUNCTION, toupper (stateval)))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
201 ret = FUNCTION.(toupper (stateval));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
202 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
203 ret = FUNCTION;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
204 endif
17312
088d014a7fe2 Use semicolon after "return" statement in core m-files.
Rik <rik@octave.org>
parents: 17281
diff changeset
205 return;
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
206 otherwise
17592
28eb00d3edf4 edit.m: Work correctly for file names with '~'.
Rik <rik@octave.org>
parents: 17393
diff changeset
207 ## If none of the states match, assume both inputs are actually
28eb00d3edf4 edit.m: Work correctly for file names with '~'.
Rik <rik@octave.org>
parents: 17393
diff changeset
208 ## file names to be opened.
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17171
diff changeset
209 editfilelist = varargin;
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
210 endswitch
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
211 elseif (nargin > 2)
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
212 if (iscellstr (varargin))
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
213 editfilelist = varargin;
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
214 else
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
215 error ("edit: if supplying more than one input all inputs must be strings containing field names to open.");
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
216 endif
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
217 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
218
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
219 ## Start the editor without a file if no file is given.
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
220 if (nargin == 0)
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
221 if (exist (FUNCTION.HOME, "dir") == 7)
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
222 curr_dir = pwd ();
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
223 unwind_protect
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
224 chdir (FUNCTION.HOME);
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
225 do_edit (FUNCTION.EDITOR, "", FUNCTION.MODE);
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
226 unwind_protect_cleanup
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
227 chdir (curr_dir);
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
228 end_unwind_protect
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
229 else
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
230 do_edit (FUNCTION.EDITOR, "", FUNCTION.MODE);
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
231 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
232 return;
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
233 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
234
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
235 if (numel (editfilelist) > 1)
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
236
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
237 ## Call edit on each of the files in the list if there are more than 1
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
238 for i = 1:numel (editfilelist)
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
239 edit (editfilelist{i});
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
240 endfor
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
241
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
242 else
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
243
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
244 ## Only one file name was supplied, get it from the cell array
17592
28eb00d3edf4 edit.m: Work correctly for file names with '~'.
Rik <rik@octave.org>
parents: 17393
diff changeset
245 file = tilde_expand (editfilelist{1});
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
246
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
247 ## Check whether the user is trying to edit a builtin or compiled function.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
248 switch (exist (file))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
249 case {3, 5}
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
250 error ("edit: unable to edit a built-in or compiled function");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
251 endswitch
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
252
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
253 ## Checks for whether the file is
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
254 ## absolute or relative should be handled inside file_in_loadpath.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
255 ## That way, it will be possible to look up files correctly given
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
256 ## partial path information. For example, you should be able to
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
257 ## edit a particular overloaded function by doing any one of
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
258 ##
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
259 ## edit classname/foo
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
260 ## edit classname/foo.m
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
261 ## edit @classname/foo
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
262 ## edit @classname/foo.m
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
263 ##
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
264 ## This functionality is needed for other functions as well (at least
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
265 ## help and type; there may be more). So the place to fix that is in
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
266 ## file_in_loadpath, possibly with some help from the load_path class.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
267
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
268 ## The code below includes a portion that serves as a place-holder for
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
269 ## the changes suggested above.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
270
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
271 ## Create list of explicit and implicit file names.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
272 filelist = {file};
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
273 ## If file has no extension, add file.m and file.cc to the list.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
274 idx = rindex (file, ".");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
275 if (idx == 0)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
276 if (isempty (regexp (file, '\.m$')))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
277 ## No ".m" at the end of the file, add to the list.
17592
28eb00d3edf4 edit.m: Work correctly for file names with '~'.
Rik <rik@octave.org>
parents: 17393
diff changeset
278 filelist(end+1) = [file ".m"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
279 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
280 if (isempty (regexp (file, '\.cc$')))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
281 ## No ".cc" at the end of the file, add to the list.
17592
28eb00d3edf4 edit.m: Work correctly for file names with '~'.
Rik <rik@octave.org>
parents: 17393
diff changeset
282 filelist(end+1) = [file ".cc"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
283 endif
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
284 endif
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
285
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
286 ## If the file includes a path, it may be an overloaded function.
18061
832ecfda1d3c edit.m: Respond correctly to either file separator (bug #40726).
Rik <rik@octave.org>
parents: 18011
diff changeset
287 if (! index (file, "@") && strchr (file, '/\'))
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
288 ## No "@" at the beginning of the file, add to the list.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
289 numfiles = numel (filelist);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
290 for n = 1:numfiles
17592
28eb00d3edf4 edit.m: Work correctly for file names with '~'.
Rik <rik@octave.org>
parents: 17393
diff changeset
291 filelist(n+numfiles) = ["@" filelist{n}];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
292 endfor
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
293 endif
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
294
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
295 ## Search the entire path for the 1st instance of a file in the list.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
296 fileandpath = "";
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
297 for n = 1:numel (filelist)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
298 filetoedit = file_in_path (path, filelist{n});
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
299 if (! isempty (filetoedit))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
300 ## The path is explicitly included.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
301 fileandpath = filetoedit;
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
302 break;
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
303 endif
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
304 endfor
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
305
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
306 if (! isempty (fileandpath))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
307 ## If the file exists, then edit it.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
308 if (FUNCTION.EDITINPLACE)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
309 ## Edit in place even if it is protected.
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
310 do_edit (FUNCTION.EDITOR, fileandpath, FUNCTION.MODE);
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
311 return;
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
312 else
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
313 ## If the file is modifiable in place then edit it,
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
314 ## otherwise make a copy in HOME and then edit it.
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
315 fid = fopen (fileandpath, "r+t");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
316 if (fid < 0)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
317 from = fileandpath;
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
318 fileandpath = [FUNCTION.HOME, from(rindex(from, filesep):end)];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
319 [status, msg] = copyfile (from, fileandpath, 1);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
320 if (status == 0)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
321 error (msg);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
322 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
323 else
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
324 fclose (fid);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
325 endif
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
326 do_edit (FUNCTION.EDITOR, fileandpath, FUNCTION.MODE);
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
327 return;
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
328 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
329 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
330
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
331 ## If editing a new file, prompt for creation if gui is running
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
332 if (isguirunning ())
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
333 if (! __octave_link_edit_file__ (file,"prompt"));
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
334 return;
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
335 endif
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
336 endif
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
337
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
338 ## If editing a new file that is neither an m-file nor an oct-file,
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
339 ## just edit it.
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
340 ## If in gui-mode, create it before or editor would prompt again.
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
341 fileandpath = file;
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
342 idx = rindex (file, ".");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
343 name = file(1:idx-1);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
344 ext = file(idx+1:end);
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
345 if (! any (strcmp (ext, {"cc", "m"})))
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
346 ## Some unknown file. Create and open it or just open it.
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
347 if (isguirunning ())
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
348 ## Write the initial file (if there is anything to write)
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
349 fid = fopen (fileandpath, "wt");
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
350 if (fid < 0)
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
351 error ("edit: could not create %s", fileandpath);
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
352 endif
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
353 fclose (fid);
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17864
diff changeset
354 endif
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
355 do_edit (FUNCTION.EDITOR, fileandpath, FUNCTION.MODE);
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
356 return;
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
357 endif
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
358
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
359 ## The file doesn't exist in path so
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
360 ## create it, put in the function template, and edit it.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
361
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
362 ## Guess the email name if it was not given.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
363 if (isempty (FUNCTION.EMAIL))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
364 host = getenv ("HOSTNAME");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
365 if (isempty (host) && ispc ())
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
366 host = getenv ("COMPUTERNAME");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
367 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
368 if (isempty (host))
17393
6437a6815bc6 edit.m: Use '~' to discard unused return value from system().
Rik <rik@octave.org>
parents: 17336
diff changeset
369 [~, host] = system ("uname -n");
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
370 ## trim newline from end of hostname
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
371 if (! isempty (host))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
372 host = host(1:end-1);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
373 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
374 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
375 if (isempty (host))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
376 FUNCTION.EMAIL = " ";
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
377 else
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
378 FUNCTION.EMAIL = ["<" default_user(0) "@" host ">"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
379 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
380 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
381
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
382 ## Fill in the revision string.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
383 now = localtime (time);
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
384 revs = ["Created: " strftime("%Y-%m-%d",now)];
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
385
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
386 ## Fill in the copyright string.
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
387 copyright = [strftime("Copyright (C) %Y ",now) FUNCTION.AUTHOR];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
388
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
389 ## Fill in the author tag field.
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
390 author = ["Author: " FUNCTION.AUTHOR " " FUNCTION.EMAIL];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
391
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
392 ## Fill in the header.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
393 uclicense = toupper (FUNCTION.LICENSE);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
394 switch (uclicense)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
395 case "GPL"
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
396 head = cstrcat (copyright, "\n\n", "\
17863
0676fae19b8b edit.m: Change default GPL license to refer to "this program" rather than "Octave".
Rik <rik@octave.org>
parents: 17753
diff changeset
397 This program is free software; you can redistribute it and/or modify it\n\
0676fae19b8b edit.m: Change default GPL license to refer to "this program" rather than "Octave".
Rik <rik@octave.org>
parents: 17753
diff changeset
398 under the terms of the GNU General Public License as published by\n\
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
399 the Free Software Foundation; either version 3 of the License, or\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
400 (at your option) any later version.\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
401 \n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
402 This program is distributed in the hope that it will be useful,\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
403 but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
404 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
405 GNU General Public License for more details.\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
406 \n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
407 You should have received a copy of the GNU General Public License\n\
17864
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
408 along with this program. If not, see <http://www.gnu.org/licenses/>.\
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
409 ");
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
410 tail = [author, "\n", revs];
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
411
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
412 case "BSD"
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
413 head = cstrcat (copyright, "\n\n", "\
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
414 This program is free software; redistribution and use in source and\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
415 binary forms, with or without modification, are permitted provided that\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
416 the following conditions are met:\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
417 \n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
418 1.Redistributions of source code must retain the above copyright\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
419 notice, this list of conditions and the following disclaimer.\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
420 2.Redistributions in binary form must reproduce the above copyright\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
421 notice, this list of conditions and the following disclaimer in the\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
422 documentation and/or other materials provided with the distribution.\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
423 \n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
424 THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
425 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
426 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
427 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
428 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
429 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
430 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
431 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
432 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
433 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
434 SUCH DAMAGE.\
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
435 ");
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
436 tail = [author, "\n", revs];
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
437
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
438 case "PD"
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
439 head = "";
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
440 tail = [author, "\n", revs, "\n\n", ...
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
441 "This program is granted to the public domain."];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
442
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
443 otherwise
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
444 head = "";
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
445 tail = [copyright, "\n\n", FUNCTION.LICENSE, "\n", author, "\n", revs];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
446 endswitch
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
447
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
448 ## Generate the function template.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
449 exists = exist (name);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
450 switch (ext)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
451 case {"cc", "C", "cpp"}
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
452 if (isempty (head))
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
453 comment = ["/*\n\n", tail, "\n\n*/\n\n"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
454 else
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
455 comment = ["/*\n\n", head, "\n\n", tail, "\n\n*/\n\n"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
456 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
457 ## If we are shadowing an m-file, paste the code for the m-file.
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
458 if (any (exists == [2, 103]))
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
459 code = ['\ ', strrep(type(name){1}, "\n", "\n// ")];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
460 else
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
461 code = " ";
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
462 endif
17245
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
463 body = ["#include <octave/oct.h>\n\n", ...
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
464 "DEFUN_DLD(" name ", args, nargout, \"\\\n", ...
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
465 name, "\\n\\\n\")\n{\n", ...
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
466 " octave_value_list retval;\n", ...
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
467 " int nargin = args.length ();\n\n", ...
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
468 code, "\n return retval;\n}\n"];
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
469
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
470 text = [comment, body];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
471 case "m"
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
472 ## If we are editing a function defined on the fly, paste the code.
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
473 if (any (exists == [2, 103]))
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
474 body = type (name){1};
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
475 else
17864
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
476 body = ["function [retval] = " name " (input1, input2)\n\n" ...
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
477 "endfunction\n"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
478 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
479 if (isempty (head))
17245
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
480 comment = ["## -*- texinfo -*- \n## @deftypefn {Function File} " ...
17864
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
481 "{@var{retval} =} " name ...
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
482 " (@var{input1}, @var{input2})\n##\n" ...
17245
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
483 "## @seealso{}\n## @end deftypefn\n\n" ...
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
484 "## " strrep(tail, "\n", "\n## ") "\n\n"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
485 else
17245
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
486 comment = ["## " strrep(head,"\n","\n## ") "\n\n" ...
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
487 "## -*- texinfo -*- \n## @deftypefn {Function File} " ...
17864
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
488 "{@var{retval} =} " name ...
674e5eb2c709 edit.m: Use more meaningful variable names in default function body.
Rik <rik@octave.org>
parents: 17863
diff changeset
489 " (@var{input1}, @var{input2})\n##\n" ...
17245
7babcdb9bc13 Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents: 17174
diff changeset
490 "## @seealso{}\n## @end deftypefn\n\n" ...
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
491 "## " strrep(tail, "\n", "\n## ") "\n\n"];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
492 endif
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
493 text = [comment, body];
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
494 endswitch
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
495
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
496 ## Write the initial file (if there is anything to write)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
497 fid = fopen (fileandpath, "wt");
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
498 if (fid < 0)
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
499 error ("edit: could not create %s", fileandpath);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
500 endif
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
501 fputs (fid, text);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
502 fclose (fid);
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
503
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
504 do_edit (FUNCTION.EDITOR, fileandpath, FUNCTION.MODE);
15526
1353ca03266f add ability to edit multiple files (bug #37573)
Richard Crozier <richard.crozier@yahoo.co.uk>
parents: 14868
diff changeset
505
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
506 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
507
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
508 endfunction
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
509
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
510 function retval = default_home ()
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
511
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
512 retval = getenv ("HOME");
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
513 if (isempty (retval))
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
514 retval = glob ("~");
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
515 if (! isempty (retval))
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
516 retval = retval{1};
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
517 else
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
518 retval = "";
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
519 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
520 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
521
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
522 endfunction
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
523
7434
600a3af7963e [project @ 2008-02-01 06:32:06 by jwe]
jwe
parents: 7340
diff changeset
524 ## Return the name associated with the current user ID.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
525 ##
7434
600a3af7963e [project @ 2008-02-01 06:32:06 by jwe]
jwe
parents: 7340
diff changeset
526 ## If LONG_FORM is 1, return the full name. This will be the
600a3af7963e [project @ 2008-02-01 06:32:06 by jwe]
jwe
parents: 7340
diff changeset
527 ## default author. Otherwise return the login name.
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
528 ## login@host will be the default email address.
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
529
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
530 function retval = default_user (long_form)
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
531
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
532 ent = getpwuid (getuid);
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
533 if (! isstruct (ent))
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
534 retval = getenv ("USER");
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
535 if (isempty (retval))
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
536 retval = getenv ("USERNAME");
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
537 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
538 elseif (long_form)
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
539 retval = ent.gecos;
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
540 pos = strfind (retval, ",");
7434
600a3af7963e [project @ 2008-02-01 06:32:06 by jwe]
jwe
parents: 7340
diff changeset
541 if (! isempty (pos))
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
542 retval = retval(1:pos-1);
7434
600a3af7963e [project @ 2008-02-01 06:32:06 by jwe]
jwe
parents: 7340
diff changeset
543 endif
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
544 else
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
545 retval = ent.name;
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
546 endif
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
547
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents:
diff changeset
548 endfunction
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
549
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
550 function do_edit (editor, file, mode)
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
551
16998
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
552 ## Give the hook function a chance.
5069b6c6c062 edit.m: Redo default templates. Improve docstring. Use Octave coding conventions.
Rik <rik@octave.org>
parents: 16994
diff changeset
553 ## If that fails, fall back on running an editor with the system function.
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
554
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16399
diff changeset
555 status = __octave_link_edit_file__ (file);
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
556
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
557 if (! status)
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16420
diff changeset
558 system (sprintf (undo_string_escapes (editor), ['"' file '"']), [], mode);
16399
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
559 endif
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
560
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
561 endfunction
f9a737fd8829 allow command-line edit function to use GUI editor
John W. Eaton <jwe@octave.org>
parents: 16045
diff changeset
562
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
563
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
564 %!test
8746
5dd06f19e9be handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
565 %! s.home = edit ("get", "home");
5dd06f19e9be handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
566 %! s.author = edit ("get", "author");
5dd06f19e9be handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
567 %! s.email = edit ("get", "email");
5dd06f19e9be handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
568 %! s.license = edit ("get", "license");
5dd06f19e9be handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
569 %! s.editinplace = edit ("get", "editinplace");
5dd06f19e9be handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
570 %! s.mode = edit ("get", "mode");
7502
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
571 %! edit home none
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
572 %! edit author none
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
573 %! edit email none
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
574 %! edit license none
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
575 %! edit ("editinplace", !s.editinplace)
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
576 %! if (s.mode(1) == "a")
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
577 %! edit mode sync
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
578 %! else
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
579 %! edit mode async
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
580 %! endif
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
581 %! edit ("home", s.home);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
582 %! edit ("author", s.author);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
583 %! edit ("email", s.email);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
584 %! edit ("license", s.license);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
585 %! edit ("editinplace", s.editinplace);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
586 %! edit ("mode", s.mode);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
587 %! assert (edit ("get", "home"), s.home);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
588 %! assert (edit ("get", "author"), s.author);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
589 %! assert (edit ("get", "email"), s.email);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
590 %! assert (edit ("get", "license"), s.license);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
591 %! assert (edit ("get", "editinplace"), s.editinplace);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
592 %! assert (edit ("get", "mode"), s.mode);
2ce6b4258e96 Modified for consistency with Matlab. Modified to respect partial paths needed for overloaded functions.
Ben Abbott <bpabbott@mac.com>
parents: 7444
diff changeset
593