changeset 18537:f958e8cd6348

maint: Periodic merge of gui-release to default.
author Rik <rik@octave.org>
date Sat, 01 Mar 2014 22:11:32 -0800
parents 9c8321ea6f58 (current diff) 4cf930a64fad (diff)
children fcd87f68af4f
files configure.ac doc/interpreter/contributors.in doc/interpreter/func.txi libinterp/corefcn/oct-stream.cc libinterp/octave-value/ov-bool-mat.cc libinterp/octave-value/ov-cell.cc libinterp/octave-value/ov-class.cc libinterp/octave-value/ov-fcn-handle.cc libinterp/octave-value/ov-fcn-inline.cc libinterp/octave-value/ov-oncleanup.cc libinterp/octave-value/ov-struct.cc libinterp/octave-value/ov-usr-fcn.cc libinterp/octave-value/ov.cc libinterp/parse-tree/lex.ll libinterp/parse-tree/oct-parse.in.yy libinterp/parse-tree/pt-mat.cc
diffstat 40 files changed, 310 insertions(+), 160 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Feb 27 09:56:47 2014 -0800
+++ b/.hgtags	Sat Mar 01 22:11:32 2014 -0800
@@ -85,3 +85,4 @@
 b72bcf5f78cc2231e9bf2735d3b8d92779fc4dff release-3-8-0
 85d31344fb23725791bc687337295d47416b9c17 rc-3-8-1-2
 02ce68d63fba31cd14ac060c087212a032ae3202 rc-3-8-1-3
+dd669c2ae76c167613f54d6f4db0130fa2124cac rc-3-8-1-4
--- a/doc/interpreter/contrib.txi	Thu Feb 27 09:56:47 2014 -0800
+++ b/doc/interpreter/contrib.txi	Sat Mar 01 22:11:32 2014 -0800
@@ -36,10 +36,10 @@
 
 @node How to Contribute
 @section How to Contribute
-The mailing list for Octave development discussion is
+The mailing list for Octave development discussions is
 @email{maintainers@@octave.org}.  Patches should be submitted to
 @url{https://savannah.gnu.org/patch/?func=additem&group=octave, Octave's patch tracker}.
-This concerns the development of Octave core, i.e., code that goes to Octave
+This concerns the development of Octave core, i.e., code that goes in to Octave
 directly.  You may consider developing and publishing a package instead;
 a great place for this is the allied Octave-Forge project
 (@url{http://octave.sourceforge.net}).  Note that the Octave core
@@ -48,7 +48,7 @@
 @node Building the Development Sources
 @section Building the Development Sources
 
-The directions for building from the Development sources change from
+The directions for building from the development sources change from
 time to time, so you should read the resources for developers on the web
 or in the development sources archive.  Start here:
 @url{http://www.octave.org/get-involved.html}.
@@ -56,8 +56,8 @@
 @node Basics of Generating a Changeset
 @section Basics of Generating a Changeset
 
-The preferable form of contribution is creating a Mercurial changeset
-and submit it to the @url{http://savannah.gnu.org/bugs/?group=octave, bug} or
+The best way to contribute is to create a Mercurial changeset and submit it to
+the @url{http://savannah.gnu.org/bugs/?group=octave, bug} or
 @url{http://savannah.gnu.org/patch/?func=additem&group=octave, patch}
 trackers@footnote{Please use the patch tracker only for patches which add new
 features.  If you have a patch to submit that fixes a bug, you should use the
@@ -68,7 +68,7 @@
 make more contributions, you should really get familiar with Mercurial.
 A good place to start is
 @url{http://www.selenic.com/mercurial/wiki/index.cgi/Tutorial}.  There
-you will also find help how to install Mercurial.
+you will also find help about how to install Mercurial.
 
 A simple contribution sequence could look like this:
 
@@ -90,7 +90,7 @@
 @end example
 
 You may want to get familiar with Mercurial queues to manage your
-changesets.  For working with queues you have to activate the extension
+changesets.  To work with queues you must activate the extension
 @nospell{mq} with the following entry in Mercurial's configuration file
 @file{.hgrc} (or @file{Mercurial.ini} on Windows):
 
@@ -167,7 +167,7 @@
 
 Sometimes a few further improvements for the pager extension are
 necessary.  The following options should not be enabled unless paging
-isn't working correctly:
+is not working correctly.
 
 @example
 @group
@@ -185,13 +185,13 @@
 Enabling the described extensions should immediately lead to a difference
 when using the command line version of @nospell{hg}.  Of these options, the
 only one that enables a new command is @nospell{graphlog}.  It is recommanded
-that you use the command @code{hg glog} instead of @code{hg log} for a better
-feel what commits are being based on.
+that to use the command @code{hg glog}, instead of @code{hg log}, for a better
+feel about what commits are being based on.
 
 @node General Guidelines
 @section General Guidelines
 
-All Octave's sources are distributed under the General Public License
+All Octave's sources are distributed under the GNU General Public License
 (GPL).  Currently, Octave uses GPL version 3.  For details about this
 license, see @url{http://www.gnu.org/licenses/gpl.html}.  Therefore,
 whenever you create a new source file, it should have the following
@@ -202,20 +202,18 @@
 ##
 ## This file is part of Octave.
 ##
-## Octave is free software; you can redistribute it and/or
-## modify it under the terms of the GNU General Public
-## License as published by the Free Software Foundation;
-## either version 3 of the License, or (at your option) any
-## later version.
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
 ##
-## Octave is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied
-## warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-## PURPOSE.  See the GNU General Public License for more
-## details.
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
 ##
-## You should have received a copy of the GNU General Public
-## License along with Octave; see the file COPYING.  If not,
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not,
 ## see <http://www.gnu.org/licenses/>.
 @end example
 
@@ -223,13 +221,13 @@
 changes, record and briefly describe the changes in your commit message.
 You should have previously configured your @file{.hgrc} (or
 @file{Mercurial.ini} on Windows) with your name and email, which will
-get automatically added to your commit message.  Your commit message
+be automatically added to your commit message.  Your commit message
 should have a brief one-line explanation of what the commit does.  If you
 are patching a bug, this one-line explanation should mention the bug
-number at the end.  If your change is small and only touches one file,
-this is typically sufficient.  If you are modifying several files or
+number at the end.  If your change is small and only touches one file then
+this is typically sufficient.  If you are modifying several files, or
 several parts of one file, you should enumerate your changes roughly
-following the GNU coding standards on changelogs, like the following
+following the GNU coding standards for changelogs, as in the following
 example:
 
 @example
@@ -248,12 +246,12 @@
 @end example
 
 @noindent
-In this example, the names of files is mentioned, and in parentheses the
-name of the function in that file that was modified.  There is no need to
-mention the function for m-files that only contain one function.  The
-commit message should describe what is changed, not why.  Any explanation
-of why a change is needed should appear as comments in the code,
-particularly if there is something that might not be obvious to someone
+In this example, the names of the file changed is listed first, and in
+parentheses the name of the function in that file that was modified.  There
+is no need to mention the function for m-files that only contain one function.
+The commit message should describe what was changed, not why it was changed.
+Any explanation for why a change is needed should appear as comments in the
+code, particularly if there is something that might not be obvious to someone
 reading it later.
 
 When submitting code which addresses a known bug on the Octave bug
@@ -267,14 +265,14 @@
 @end example
 
 The preferred comment mark for places that may need further attention is
-FIXME.
+@code{FIXME:}.
 
 @node Octave Sources (m-files)
 @section Octave Sources (m-files)
 
 Don't use tabs.  Tabs cause trouble.  If you are used to them, set up
 your editor so that it converts tabs to spaces.  Indent the bodies of
-the statement blocks.  Recommended indent is 2 spaces.  When calling
+statement blocks.  The recommended indent is 2 spaces.  When calling
 functions, put spaces after commas and before the calling parentheses,
 like this:
 
@@ -283,17 +281,18 @@
 @end example
 
 @noindent
-An exception are matrix and vector constructors:
+An exception are matrix or cell constructors:
 
 @example
   [sin(x), cos(x)]
+  @{sin(x), cos(x)@}
 @end example
 
 @noindent
 Here, putting spaces after @code{sin}, @code{cos} would result in a
-parse error.  In indexing expression, do not put a space after the
+parse error.  For an indexing expression, do not put a space after the
 identifier (this differentiates indexing and function calls nicely).
-The space after comma is not necessary if index expressions are simple,
+The space after a comma is not necessary if index expressions are simple,
 i.e., you may write
 
 @example
@@ -313,10 +312,10 @@
 wisely.
 
 Always use a specific end-of-block statement (like @code{endif},
-@code{endswitch}) rather than generic @code{end}.
+@code{endswitch}) rather than the generic @code{end}.
 
-Enclose the @code{if}, @code{while}, @code{until} and @code{switch}
-conditions in parentheses, like in C:
+Enclose the @code{if}, @code{while}, @code{until}, and @code{switch}
+conditions in parentheses, as in C:
 
 @example
 @group
@@ -359,7 +358,7 @@
 You should put a space before the left open parenthesis and after commas,
 for both function definitions and function calls.
 
-Recommended indent is 2 spaces.  When indenting, indent the statement
+The recommended indent is 2 spaces.  When indenting, indent the statement
 after control structures (like @code{if}, @code{while}, etc.).  If there
 is a compound statement, indent @emph{both} the curly braces and the
 body of the statement (so that the body gets indented by @emph{two}
@@ -395,12 +394,12 @@
 @end example
 
 @noindent
-Consider putting extra braces around a multiline expression to make it
+Consider putting extra braces around a multi-line expression to make it
 more readable, even if they are not necessary.  Also, do not hesitate to
 put extra braces anywhere if it improves clarity.
 
-Declare variables just before they're needed.  Use local variables of
-blocks---it helps optimization.  Don't write multi-line variable
+Declare variables just before they are needed.  Use local variables of
+blocks---it helps optimization.  Don't write a multi-line variable
 declaration with a single type specification and multiple variables.  If
 the variables don't fit on single line, repeat the type specification.
 Example:
--- a/doc/interpreter/contributors.in	Thu Feb 27 09:56:47 2014 -0800
+++ b/doc/interpreter/contributors.in	Sat Mar 01 22:11:32 2014 -0800
@@ -227,6 +227,7 @@
 Elias Pipping
 Robert Platt
 Hans Ekkehard Plesser
+Sergey Plotnikov
 Tom Poage
 Orion Poplawski
 Ondrej Popp
--- a/doc/interpreter/external.txi	Thu Feb 27 09:56:47 2014 -0800
+++ b/doc/interpreter/external.txi	Sat Mar 01 22:11:32 2014 -0800
@@ -1759,7 +1759,7 @@
 Note that the application @code{standalone} will be dynamically linked
 against the Octave libraries and any Octave support libraries.  The above
 allows the Octave math libraries to be used by an application.  It does
-not, however, allow the script files, oct-files, or builtin functions of
+not, however, allow the script files, oct-files, or built-in functions of
 Octave to be used by the application.  To do that the Octave interpreter
 needs to be initialized first.  An example of how to do this can then be
 seen in the code
@@ -1780,17 +1780,17 @@
 @end group
 @end example
 
-It is worth noting that, if only builtin functions are to be called from 
+It is worth noting that, if only built-in functions are to be called from 
 a C++ standalone program, then it does not need to initialize the 
-interpreter to do so.  The general rule is that, for a builtin 
+interpreter to do so.  The general rule is that, for a built-in 
 function named @code{function_name} in the interpreter, there will be
 a C++ function named @code{Ffunction_name} (note the prepended capital 
-@code{F}) accessible in the C++ API@.  The declarations for all builtin 
+@code{F}) accessible in the C++ API@.  The declarations for all built-in 
 functions are collected in the header file @code{builtin-defun-decls.h}.
 This feature should be used with care as the list of built-in functions can
 change.  No guarantees can be made that a function that is currently built in
 won't be implemented as a .m file or as a dynamically linked function in the
-future.  An example of how to call builtin functions from C++ can be seen in the
+future.  An example of how to call built-in functions from C++ can be seen in the
 code
 
 @example
--- a/doc/interpreter/func.txi	Thu Feb 27 09:56:47 2014 -0800
+++ b/doc/interpreter/func.txi	Sat Mar 01 22:11:32 2014 -0800
@@ -1133,9 +1133,6 @@
 An overloaded function of a class as in chapter
 @ref{Object Oriented Programming}.
 
-@item Legacy Dispatch
-An overloaded function as defined by @code{dispatch}.
-
 @item Command-line Function
 A function that has been defined on the command-line.
 
@@ -1148,8 +1145,8 @@
 between these versions are in that order.
 
 @item Built-in function
-A function that is builtin to Octave itself such as @code{numel},
-@code{size}, etc.
+A function that is a part of core Octave such as @code{numel}, @code{size},
+etc.
 @end enumerate
 
 @node Script Files
--- a/doc/interpreter/testfun.txi	Thu Feb 27 09:56:47 2014 -0800
+++ b/doc/interpreter/testfun.txi	Sat Mar 01 22:11:32 2014 -0800
@@ -365,8 +365,8 @@
 shorthand for @code{%!test assert (x, y, tol)}
 @end table
 
-You can also create test scripts for builtins and your own C++
-functions.  To do so put a file with the bare function name (no .m
+You can also create test scripts for built-in functions and your own C++
+functions.  To do so, put a file with the bare function name (no .m
 extension) in a directory in the load path and it will be discovered by
 the @code{test} function.  Alternatively, you can embed tests directly in your
 C++ code:
--- a/libgui/graphics/module.mk	Thu Feb 27 09:56:47 2014 -0800
+++ b/libgui/graphics/module.mk	Sat Mar 01 22:11:32 2014 -0800
@@ -65,7 +65,8 @@
   graphics/ToggleTool.h \
   graphics/ToolBar.h \
   graphics/ToolBarButton.h \
-  graphics/gl-select.h
+  graphics/gl-select.h \
+  $(TEMPLATE_SRC)
 
 graphics_libgui_graphics_la_SOURCES = \
   graphics/__init_qt__.cc \
@@ -100,9 +101,11 @@
   graphics/ToggleButtonControl.cc \
   graphics/ToggleTool.cc \
   graphics/ToolBar.cc \
-  graphics/ToolBarButton.cc \
   graphics/gl-select.cc
 
+TEMPLATE_SRC = \
+  graphics/ToolBarButton.cc
+
 nodist_graphics_libgui_graphics_la_SOURCES = $(octave_gui_graphics_MOC) $(octave_gui_graphics_RC)
 
 graphics_libgui_graphics_la_CPPFLAGS = \
--- a/libgui/src/m-editor/file-editor.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libgui/src/m-editor/file-editor.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -211,10 +211,11 @@
 
   fileDialog->setAcceptMode (QFileDialog::AcceptOpen);
   fileDialog->setViewMode (QFileDialog::Detail);
+  fileDialog->setFileMode (QFileDialog::ExistingFiles);
   fileDialog->setDirectory (ced);
 
-  connect (fileDialog, SIGNAL (fileSelected (const QString&)),
-           this, SLOT (request_open_file (const QString&)));
+  connect (fileDialog, SIGNAL (filesSelected (const QStringList&)),
+           this, SLOT (request_open_files (const QStringList&)));
 
   fileDialog->setWindowModality (Qt::NonModal);
   fileDialog->setAttribute (Qt::WA_DeleteOnClose);
@@ -266,6 +267,13 @@
 }
 
 void
+file_editor::request_open_files (const QStringList& open_file_names)
+{
+  for (int i = 0; i < open_file_names.count (); i++)
+    request_open_file (open_file_names.at (i));
+}
+
+void
 file_editor::request_open_file (const QString& openFileName, int line,
                                 bool debug_pointer,
                                 bool breakpoint_marker, bool insert)
--- a/libgui/src/m-editor/file-editor.h	Thu Feb 27 09:56:47 2014 -0800
+++ b/libgui/src/m-editor/file-editor.h	Sat Mar 01 22:11:32 2014 -0800
@@ -185,6 +185,7 @@
 
 private slots:
 
+  void request_open_files (const QStringList&);
   void request_open_file (const QString& fileName, int line = -1,
                           bool debug_pointer = false,
                           bool breakpoint_marker = false, bool insert = true);
--- a/libinterp/corefcn/oct-stream.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/corefcn/oct-stream.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -3291,7 +3291,7 @@
 
                   char_count += gcount;
 
-                  size_t nel = gcount / input_elt_size;
+                  octave_idx_type nel = gcount / input_elt_size;
 
                   count += nel;
 
@@ -3312,7 +3312,7 @@
                       // the original position?
                       seek (orig_pos, SEEK_SET);
 
-                      size_t remaining = eof_pos - orig_pos;
+                      off_t remaining = eof_pos - orig_pos;
 
                       if (remaining < skip)
                         seek (0, SEEK_END);
@@ -3327,7 +3327,12 @@
               if (read_to_eof)
                 {
                   if (nc < 0)
-                    nc = count / nr + 1;
+                    {
+                      nc = count / nr;
+
+                      if (count % nr != 0)
+                        nc ++;
+                    }
                   else
                     nr = count;
                 }
--- a/libinterp/octave-value/ov-bool-mat.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-bool-mat.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -550,7 +550,14 @@
 DEFUN (logical, args, ,
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} logical (@var{x})\n\
-Convert @var{x} to logical type.\n\
+Convert the numeric object @var{x} to logical type.\n\
+\n\
+Any non-zero values will be converted to true (1) while zero values\n\
+will be converted to false (0).  The non-numeric value NaN cannot be\n\
+converted and will produce an error.\n\
+\n\
+Compatibility Note: Octave accepts complex values as input, whereas\n\
+@sc{matlab} issues an error.\n\
 @seealso{double, single, char}\n\
 @end deftypefn")
 {
--- a/libinterp/octave-value/ov-cell.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-cell.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -1290,10 +1290,12 @@
 @deftypefnx {Built-in Function} {} cell (@var{m}, @var{n}, @var{k}, @dots{})\n\
 @deftypefnx {Built-in Function} {} cell ([@var{m} @var{n} @dots{}])\n\
 Create a new cell array object.\n\
+\n\
 If invoked with a single scalar integer argument, return a square\n\
 @nospell{NxN} cell array.  If invoked with two or more scalar\n\
 integer arguments, or a vector of integer values, return an array with\n\
 the given dimensions.\n\
+@seealso{cellstr, mat2cell, num2cell, struct2cell}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -1368,9 +1370,15 @@
 
 DEFUN (cellstr, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} cellstr (@var{string})\n\
+@deftypefn {Built-in Function} {@var{cstr} =} cellstr (@var{strmat})\n\
 Create a new cell array object from the elements of the string\n\
-array @var{string}.\n\
+array @var{strmat}.\n\
+\n\
+Each row of @var{strmat} becomes an element of @var{cstr}.  Any trailing\n\
+spaces in a row are deleted before conversion.\n\
+\n\
+To convert back from a cellstr to a character array use @code{char}.\n\
+@seealso{cell, char}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -1401,11 +1409,11 @@
 
 DEFUN (struct2cell, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} struct2cell (@var{S})\n\
+@deftypefn {Built-in Function} {@var{c} =} struct2cell (@var{s})\n\
 Create a new cell array from the objects stored in the struct object.\n\
 If @var{f} is the number of fields in the structure, the resulting\n\
 cell array will have a dimension vector corresponding to\n\
-@code{[@var{F} size(@var{S})]}.  For example:\n\
+@code{[@var{f} size(@var{s})]}.  For example:\n\
 \n\
 @example\n\
 @group\n\
--- a/libinterp/octave-value/ov-class.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-class.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -2062,7 +2062,7 @@
 @deftypefn {Built-in Function} {} ismethod (@var{x}, @var{method})\n\
 Return true if @var{x} is a class object and the string @var{method}\n\
 is a method of this class.\n\
-@seealso{isobject}\n\
+@seealso{isprop, isobject}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2164,6 +2164,7 @@
 constructed as having a higher precedence than @var{class_name}.\n\
 More that one such class can be specified in a single call.\n\
 This function may only be called from a class constructor.\n\
+@seealso{inferiorto}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2208,6 +2209,7 @@
 constructed as having a lower precedence than @var{class_name}.\n\
 More that one such class can be specified in a single call.\n\
 This function may only be called from a class constructor.\n\
+@seealso{superiorto}\n\
 @end deftypefn")
 {
   octave_value retval;
--- a/libinterp/octave-value/ov-fcn-handle.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-fcn-handle.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -1661,9 +1661,49 @@
 
 DEFUN (functions, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} functions (@var{fcn_handle})\n\
-Return a struct containing information about the function handle\n\
+@deftypefn {Built-in Function} {@var{s} =} functions (@var{fcn_handle})\n\
+Return a structure containing information about the function handle\n\
 @var{fcn_handle}.\n\
+\n\
+The structure @var{s} always contains these 3 fields:\n\
+\n\
+@table @asis\n\
+@item function\n\
+The function name.  For an anonymous function (no name) this will be the\n\
+actual function definition.\n\
+\n\
+@item type\n\
+Type of the function.\n\
+\n\
+@table @asis\n\
+@item anonymous\n\
+The function is anonymous.\n\
+\n\
+@item private\n\
+The function is private.\n\
+\n\
+@item overloaded\n\
+The function overloads an existing function.\n\
+\n\
+@item simple\n\
+The function is a built-in or m-file function.\n\
+\n\
+@item subfunction\n\
+The function is a subfunction within an m-file.\n\
+@end table\n\
+\n\
+@item file\n\
+The m-file that will be called to perform the function.  This field is empty\n\
+for anonymous and built-in functions.\n\
+@end table\n\
+\n\
+In addition, some function types may return more information in additional\n\
+fields.\n\
+\n\
+@strong{Warning:} @code{functions} is provided for debugging purposes only.\n\
+It's behavior may change in the future and programs should not depend on a\n\
+particular output.\n\
+\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -1762,6 +1802,7 @@
 @deftypefn {Built-in Function} {} func2str (@var{fcn_handle})\n\
 Return a string containing the name of the function referenced by\n\
 the function handle @var{fcn_handle}.\n\
+@seealso{str2func, functions}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -1801,6 +1842,7 @@
 Return a function handle constructed from the string @var{fcn_name}.\n\
 If the optional @qcode{\"global\"} argument is passed, locally visible\n\
 functions are ignored in the lookup.\n\
+@seealso{func2str, inline}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -1841,7 +1883,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} is_function_handle (@var{x})\n\
 Return true if @var{x} is a function handle.\n\
-@seealso{isa, typeinfo, class}\n\
+@seealso{isa, typeinfo, class, functions}\n\
 @end deftypefn")
 {
   octave_value retval;
--- a/libinterp/octave-value/ov-fcn-inline.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-fcn-inline.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -640,6 +640,7 @@
 @deftypefnx {Built-in Function} {} inline (@var{str}, @var{arg1}, @dots{})\n\
 @deftypefnx {Built-in Function} {} inline (@var{str}, @var{n})\n\
 Create an inline function from the character string @var{str}.\n\
+\n\
 If called with a single argument, the arguments of the generated\n\
 function are extracted from the function itself.  The generated\n\
 function arguments will then be in alphabetical order.  It should\n\
@@ -654,7 +655,12 @@
 \n\
 If the second argument is an integer @var{n}, the arguments are\n\
 @qcode{\"x\"}, @qcode{\"P1\"}, @dots{}, @qcode{\"P@var{N}\"}.\n\
-@seealso{argnames, formula, vectorize}\n\
+\n\
+Programming Note: The use of @code{inline} is discouraged and it may be\n\
+removed from a future version of Octave.  The preferred way to create\n\
+functions from strings is through the use of anonymous functions\n\
+(@pxref{Anonymous Functions}) or @code{str2func}.\n\
+@seealso{argnames, formula, vectorize, str2func}\n\
 @end deftypefn")
 {
   octave_value retval;
--- a/libinterp/octave-value/ov-int16.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-int16.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} int16 (@var{x})\n\
 Convert @var{x} to 16-bit integer type.\n\
+@seealso{int8, uint8, uint16, int32, uint32, int64, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (int16);
--- a/libinterp/octave-value/ov-int32.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-int32.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} int32 (@var{x})\n\
 Convert @var{x} to 32-bit integer type.\n\
+@seealso{int8, uint8, int16, uint16, uint32, int64, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (int32);
--- a/libinterp/octave-value/ov-int64.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-int64.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} int64 (@var{x})\n\
 Convert @var{x} to 64-bit integer type.\n\
+@seealso{int8, uint8, int16, uint16, int32, uint32, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (int64);
--- a/libinterp/octave-value/ov-int8.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-int8.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} int8 (@var{x})\n\
 Convert @var{x} to 8-bit integer type.\n\
+@seealso{uint8, int16, uint16, int32, uint32, int64, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (int8);
--- a/libinterp/octave-value/ov-oncleanup.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-oncleanup.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -187,10 +187,10 @@
 
 DEFUN (onCleanup, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {@var{c} =} onCleanup (@var{action})\n\
+@deftypefn {Built-in Function} {@var{obj} =} onCleanup (@var{function})\n\
 Create a special object that executes a given function upon destruction.\n\
 If the object is copied to multiple variables (or cell or struct array\n\
-elements) or returned from a function, @var{action} will be executed after\n\
+elements) or returned from a function, @var{function} will be executed after\n\
 clearing the last copy of the object.  Note that if multiple local onCleanup\n\
 variables are created, the order in which they are called is unspecified.\n\
 For similar functionality @xref{The unwind_protect Statement}.\n\
--- a/libinterp/octave-value/ov-struct.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-struct.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -1763,12 +1763,14 @@
 
 DEFUN (struct, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} struct (@var{field1}, @var{value1}, @var{field2}, @var{value2}, @dots{})\n\
+@deftypefn  {Built-in Function} {@var{s} =} struct ()\n\
+@deftypefnx {Built-in Function} {@var{s} =} struct (@var{field1}, @var{value1}, @var{field2}, @var{value2}, @dots{})\n\
+@deftypefnx {Built-in Function} {@var{s} =} struct (@var{obj})\n\
 \n\
 Create a scalar or array structure and initialize its values.  The\n\
-@var{field1}, @var{field2}, @dots{} variables are strings giving the\n\
+@var{field1}, @var{field2}, @dots{} variables are strings specifying the\n\
 names of the fields and the @var{value1}, @var{value2}, @dots{}\n\
-variables can be any type.\n\
+variables can be of any type.\n\
 \n\
 If the values are cell arrays, create a structure array and initialize\n\
 its values.  The dimensions of each cell array of values must match.\n\
@@ -1803,7 +1805,7 @@
 @end example\n\
 \n\
 @noindent\n\
-The first case is an ordinary scalar struct, one field, one value.  The\n\
+The first case is an ordinary scalar struct---one field, one value.  The\n\
 second produces an empty struct array with one field and no values, since\n\
 s being passed an empty cell array of struct array values.  When the value is\n\
 a cell array containing a single entry, this becomes a scalar struct with\n\
@@ -1812,6 +1814,7 @@
 \n\
 Finally, if the value is a non-scalar cell array, then @code{struct}\n\
 produces a struct @strong{array}.\n\
+@seealso{cell2struct, fieldnames, orderfields, getfield, setfield, rmfield, structfun}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2006,10 +2009,12 @@
 
 DEFUN (isfield, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} isfield (@var{x}, @var{name})\n\
-Return true if the @var{x} is a structure and it\n\
-includes an element named @var{name}.  If @var{name} is a cell\n\
-array of strings then a logical array of equal dimension is returned.\n\
+@deftypefn  {Built-in Function} {} isfield (@var{x}, \"@var{name}\")\n\
+@deftypefnx {Built-in Function} {} isfield (@var{x}, @var{name})\n\
+Return true if the @var{x} is a structure and it includes an element named\n\
+@var{name}.  If @var{name} is a cell array of strings then a logical array of\n\
+equal dimension is returned.\n\
+@seealso{fieldnames}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2065,6 +2070,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} nfields (@var{s})\n\
 Return the number of fields of the structure @var{s}.\n\
+@seealso{fieldnames}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2095,7 +2101,8 @@
 
 DEFUN (cell2struct, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} cell2struct (@var{cell}, @var{fields}, @var{dim})\n\
+@deftypefn  {Built-in Function} {} cell2struct (@var{cell}, @var{fields})\n\
+@deftypefnx {Built-in Function} {} cell2struct (@var{cell}, @var{fields}, @var{dim})\n\
 Convert @var{cell} to a structure.  The number of fields in @var{fields}\n\
 must match the number of elements in @var{cell} along dimension @var{dim},\n\
 that is @code{numel (@var{fields}) == size (@var{cell}, @var{dim})}.\n\
@@ -2115,6 +2122,7 @@
 \n\
 @end group\n\
 @end example\n\
+@seealso{struct2cell, cell2mat, struct}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2231,10 +2239,10 @@
        "-*- texinfo -*-\n\
 @deftypefn  {Built-in Function} {@var{s} =} rmfield (@var{s}, \"@var{f}\")\n\
 @deftypefnx {Built-in Function} {@var{s} =} rmfield (@var{s}, @var{f})\n\
-Return a copy of the structure (array) @var{s} with the field @var{f}\n\
+Return a @emph{copy} of the structure (array) @var{s} with the field @var{f}\n\
 removed.  If @var{f} is a cell array of strings or a character array, remove\n\
 each of the named fields.\n\
-@seealso{cellstr, iscellstr, setfield}\n\
+@seealso{orderfields, fieldnames}\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -2302,6 +2310,7 @@
 When called from inside a function with the @qcode{\"local\"} option, the\n\
 variable is changed locally for the function and any subroutines it calls.  \n\
 The original variable value is restored when exiting the function.\n\
+@seealso{print_struct_array_contents}\n\
 @end deftypefn")
 {
   return SET_INTERNAL_VARIABLE_WITH_LIMITS (struct_levels_to_print, -1,
@@ -2314,14 +2323,17 @@
 @deftypefnx {Built-in Function} {@var{old_val} =} print_struct_array_contents (@var{new_val})\n\
 @deftypefnx {Built-in Function} {} print_struct_array_contents (@var{new_val}, \"local\")\n\
 Query or set the internal variable that specifies whether to print struct\n\
-array contents.  If true, values of struct array elements are printed.\n\
-This variable does not affect scalar structures.  Their elements\n\
-are always printed.  In both cases, however, printing will be limited to\n\
+array contents.\n\
+\n\
+If true, values of struct array elements are printed.\n\
+This variable does not affect scalar structures whose elements are always\n\
+printed.  In both cases, however, printing will be limited to\n\
 the number of levels specified by @var{struct_levels_to_print}.\n\
 \n\
 When called from inside a function with the @qcode{\"local\"} option, the\n\
 variable is changed locally for the function and any subroutines it calls.  \n\
 The original variable value is restored when exiting the function.\n\
+@seealso{struct_levels_to_print}\n\
 @end deftypefn")
 {
   return SET_INTERNAL_VARIABLE (print_struct_array_contents);
--- a/libinterp/octave-value/ov-typeinfo.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-typeinfo.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -615,8 +615,9 @@
 @deftypefnx {Built-in Function} {} typeinfo (@var{expr})\n\
 \n\
 Return the type of the expression @var{expr}, as a string.  If\n\
-@var{expr} is omitted, return an cell array of strings containing all the\n\
+@var{expr} is omitted, return a cell array of strings containing all the\n\
 currently installed data types.\n\
+@seealso{class, isa}\n\
 @end deftypefn")
 {
   octave_value retval;
--- a/libinterp/octave-value/ov-uint16.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-uint16.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} uint16 (@var{x})\n\
 Convert @var{x} to unsigned 16-bit integer type.\n\
+@seealso{int8, uint8, int16, int32, uint32, int64, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (uint16);
--- a/libinterp/octave-value/ov-uint32.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-uint32.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} uint32 (@var{x})\n\
 Convert @var{x} to unsigned 32-bit integer type.\n\
+@seealso{int8, uint8, int16, uint16, int32, int64, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (uint32);
--- a/libinterp/octave-value/ov-uint64.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-uint64.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} uint64 (@var{x})\n\
 Convert @var{x} to unsigned 64-bit integer type.\n\
+@seealso{int8, uint8, int16, uint16, int32, uint32, int64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (uint64);
--- a/libinterp/octave-value/ov-uint8.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-uint8.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -77,6 +77,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} uint8 (@var{x})\n\
 Convert @var{x} to unsigned 8-bit integer type.\n\
+@seealso{int8, int16, uint16, int32, uint32, int64, uint64}\n\
 @end deftypefn")
 {
   OCTAVE_TYPE_CONV_BODY (uint8);
--- a/libinterp/octave-value/ov-usr-fcn.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov-usr-fcn.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -831,10 +831,24 @@
 At the top level, return the number of command line arguments passed to\n\
 Octave.\n\
 \n\
-If called with the optional argument @var{fcn}, a function name or handle,\n\
+If called with the optional argument @var{fcn}---a function name or handle---\n\
 return the declared number of arguments that the function can accept.\n\
-If the last argument is @var{varargin} the returned value is negative.\n\
-This feature does not work on builtin functions.\n\
+\n\
+If the last argument to @var{fcn} is @var{varargin} the returned value is\n\
+negative.  For example, the function @code{union} for sets is declared as\n\
+\n\
+@example\n\
+@group\n\
+function [y, ia, ib] = union (a, b, varargin)\n\
+\n\
+and\n\
+\n\
+nargin (\"union\")\n\
+@result{} -3\n\
+@end group\n\
+@end example\n\
+\n\
+Programming Note: @code{nargin} does not work on built-in functions.\n\
 @seealso{nargout, varargin, isargout, varargout, nthargout}\n\
 @end deftypefn")
 {
@@ -895,8 +909,8 @@
 @deftypefn  {Built-in Function} {} nargout ()\n\
 @deftypefnx {Built-in Function} {} nargout (@var{fcn})\n\
 Within a function, return the number of values the caller expects to\n\
-receive.  If called with the optional argument @var{fcn}, a function\n\
-name or handle, return the number of declared output values that the\n\
+receive.  If called with the optional argument @var{fcn}---a function\n\
+name or handle---return the number of declared output values that the\n\
 function can produce.  If the final output argument is @var{varargout}\n\
 the returned value is negative.\n\
 \n\
@@ -914,8 +928,7 @@
 @end example\n\
 \n\
 @noindent\n\
-will cause @code{nargout} to return 2 inside the function\n\
-@code{f}.\n\
+will cause @code{nargout} to return 2 inside the function @code{f}.\n\
 \n\
 In the second usage,\n\
 \n\
@@ -927,15 +940,16 @@
 will return 2, because @code{histc} has two outputs, whereas\n\
 \n\
 @example\n\
-nargout (@@deal)\n\
+nargout (@@imread)\n\
 @end example\n\
 \n\
 @noindent\n\
-will return -1, because @code{deal} has a variable number of outputs.\n\
+will return -2, because @code{imread} has two outputs and the second is\n\
+@var{varargout}.\n\
 \n\
-At the top level, @code{nargout} with no argument is undefined.\n\
-@code{nargout} does not work on builtin functions.\n\
-@code{nargout} returns -1 for all anonymous functions.\n\
+At the top level, @code{nargout} with no argument is undefined and will\n\
+produce an error.  @code{nargout} does not work for built-in functions and\n\
+returns -1 for all anonymous functions.\n\
 @seealso{nargin, varargin, isargout, varargout, nthargout}\n\
 @end deftypefn")
 {
@@ -1023,8 +1037,9 @@
 @deftypefnx {Built-in Function} {@var{old_val} =} optimize_subsasgn_calls (@var{new_val})\n\
 @deftypefnx {Built-in Function} {} optimize_subsasgn_calls (@var{new_val}, \"local\")\n\
 Query or set the internal flag for subsasgn method call optimizations.\n\
+\n\
 If true, Octave will attempt to eliminate the redundant copying when calling\n\
-subsasgn method of a user-defined class.\n\
+the subsasgn method of a user-defined class.\n\
 \n\
 When called from inside a function with the @qcode{\"local\"} option, the\n\
 variable is changed locally for the function and any subroutines it calls.  \n\
@@ -1058,7 +1073,7 @@
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} isargout (@var{k})\n\
 Within a function, return a logical value indicating whether the argument\n\
-@var{k} will be assigned on output to a variable.  If the result is false,\n\
+@var{k} will be assigned to a variable on output.  If the result is false,\n\
 the argument has been ignored during the function call through the use of\n\
 the tilde (~) special output argument.  Functions can use @code{isargout} to\n\
 avoid performing unnecessary calculations for outputs which are unwanted.\n\
--- a/libinterp/octave-value/ov.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/octave-value/ov.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -2909,7 +2909,7 @@
 The @samp{subs} field may be either @samp{\":\"} or a cell array\n\
 of index values.\n\
 \n\
-The following example shows how to extract the two first columns of\n\
+The following example shows how to extract the first two columns of\n\
 a matrix\n\
 \n\
 @example\n\
--- a/libinterp/parse-tree/lex.ll	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/parse-tree/lex.ll	Sat Mar 01 22:11:32 2014 -0800
@@ -1930,6 +1930,7 @@
 @deftypefn {Built-in Function} {} __display_tokens__ ()\n\
 Query or set the internal variable that determines whether Octave's\n\
 lexer displays tokens as they are read.\n\
+@seealso{__lexer_debug_flag__, __token_count__}\n\
 @end deftypefn")
 {
   return SET_INTERNAL_VARIABLE (display_tokens);
@@ -1938,7 +1939,8 @@
 DEFUN (__token_count__, , ,
   "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} __token_count__ ()\n\
-Number of language tokens processed since Octave startup.\n\
+Return the number of language tokens processed since Octave startup.\n\
+@seealso{__lexer_debug_flag__, __display_tokens__}\n\
 @end deftypefn")
 {
   return octave_value (Vtoken_count);
@@ -1946,8 +1948,11 @@
 
 DEFUN (__lexer_debug_flag__, args, nargout,
   "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {@var{old_val} =} __lexer_debug_flag__ (@var{new_val}))\n\
-Undocumented internal function.\n\
+@deftypefn  {Built-in Function} {@var{val} =} __lexer_debug_flag__ ()\n\
+@deftypefnx {Built-in Function} {@var{old_val} =} __lexer_debug_flag__ (@var{new_val})\n\
+Query or set the internal flag that determines whether Octave's lexer prints\n\
+debug information as it processes an expression.\n\
+@seealso{__display_tokens__, __token_count__, __parse_debug_flag__}\n\
 @end deftypefn")
 {
   octave_value retval;
--- a/libinterp/parse-tree/oct-parse.in.yy	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/parse-tree/oct-parse.in.yy	Sat Mar 01 22:11:32 2014 -0800
@@ -4119,13 +4119,14 @@
 
 DEFUN (autoload, args, ,
   "-*- texinfo -*-\n\
-@deftypefn  {Built-in Function} {} autoload (@var{function}, @var{file})\n\
-@deftypefnx {Built-in Function} {} autoload (@dots{}, @asis{\"remove\"})\n\
+@deftypefn  {Built-in Function} {@var{autoload_map} =} autoload ()\n\
+@deftypefnx {Built-in Function} {} autoload (@var{function}, @var{file})\n\
+@deftypefnx {Built-in Function} {} autoload (@dots{}, \"remove\")\n\
 Define @var{function} to autoload from @var{file}.\n\
 \n\
 The second argument, @var{file}, should be an absolute file name or\n\
 a file name in the same directory as the function or script from which\n\
-the autoload command was run.  @var{file} should not depend on the\n\
+the autoload command was run.  @var{file} @emph{should not} depend on the\n\
 Octave load path.\n\
 \n\
 Normally, calls to @code{autoload} appear in PKG_ADD script files that\n\
@@ -4139,7 +4140,7 @@
 \n\
 @noindent\n\
 will load the function @code{foo} from the file @code{bar.oct}.  The above\n\
-usage when @code{bar.oct} is not in the same directory or usages such as\n\
+usage when @code{bar.oct} is not in the same directory, or usages such as\n\
 \n\
 @example\n\
 autoload (\"foo\", file_in_loadpath (\"bar.oct\"))\n\
@@ -4150,7 +4151,7 @@
 \n\
 With no arguments, return a structure containing the current autoload map.\n\
 \n\
-If a third argument @asis{'remove'} is given, the function is cleared and\n\
+If a third argument @qcode{\"remove\"} is given, the function is cleared and\n\
 not loaded anymore during the current Octave session.\n\
 \n\
 @seealso{PKG_ADD}\n\
@@ -4348,11 +4349,12 @@
 @deftypefn  {Built-in Function} {} mfilename ()\n\
 @deftypefnx {Built-in Function} {} mfilename (\"fullpath\")\n\
 @deftypefnx {Built-in Function} {} mfilename (\"fullpathext\")\n\
-Return the name of the currently executing file.  At the top-level,\n\
-return the empty string.  Given the argument @qcode{\"fullpath\"},\n\
-include the directory part of the file name, but not the extension.\n\
-Given the argument @qcode{\"fullpathext\"}, include the directory part\n\
-of the file name and the extension.\n\
+Return the name of the currently executing file.\n\
+\n\
+When called from outside an m-file return the empty string.  Given the\n\
+argument @qcode{\"fullpath\"}, include the directory part of the file name,\n\
+but not the extension.  Given the argument @qcode{\"fullpathext\"}, include\n\
+the directory part of the file name and the extension.\n\
 @end deftypefn")
 {
   octave_value retval;
@@ -4414,9 +4416,11 @@
 DEFUN (source, args, ,
   "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} source (@var{file})\n\
-Parse and execute the contents of @var{file}.  This is equivalent to\n\
-executing commands from a script file, but without requiring the file to\n\
-be named @file{@var{file}.m}.\n\
+Parse and execute the contents of @var{file}.\n\
+\n\
+This is equivalent to executing commands from a script file, but without\n\
+requiring the file to be named @file{@var{file}.m}.\n\
+@seealso{run}\n\
 @end deftypefn")
 {
   octave_value_list retval;
@@ -4586,7 +4590,7 @@
 
 DEFUN (builtin, args, nargout,
   "-*- texinfo -*-\n\
-@deftypefn {Loadable Function} {[@dots{}] =} builtin (@var{f}, @dots{})\n\
+@deftypefn {Built-in Function} {[@dots{}] =} builtin (@var{f}, @dots{})\n\
 Call the base function @var{f} even if @var{f} is overloaded to\n\
 another function for the given type signature.\n\
 \n\
@@ -4753,14 +4757,14 @@
 The string @var{try} is evaluated in the current context,\n\
 so any results remain available after @code{eval} returns.\n\
 \n\
-The following example makes the variable @var{A} with the approximate\n\
-value 3.1416 available.\n\
+The following example creates the variable @var{A} with the approximate\n\
+value of 3.1416 in the current workspace.\n\
 \n\
 @example\n\
 eval (\"A = acos(-1);\");\n\
 @end example\n\
 \n\
-If an error occurs during the evaluation of @var{try} the @var{catch}\n\
+If an error occurs during the evaluation of @var{try} then the @var{catch}\n\
 string is evaluated, as the following example shows:\n\
 \n\
 @example\n\
@@ -4772,9 +4776,11 @@
 @end group\n\
 @end example\n\
 \n\
-Consider using try/catch blocks instead if you are only using @code{eval}\n\
-as an error-capturing mechanism rather than for the execution of arbitrary\n\
-code strings.\n\
+Programming Note: if you are only using @code{eval} as an error-capturing\n\
+mechanism, rather than for the execution of arbitrary code strings,\n\
+Consider using try/catch blocks or unwind_protect/unwind_protect_cleanup\n\
+blocks instead.  These techniques have higher performance and don't introduce\n\
+the security considerations that the evaluation of arbitrary code does.\n\
 @seealso{evalin}\n\
 @end deftypefn")
 {
@@ -4985,8 +4991,11 @@
 
 DEFUN (__parser_debug_flag__, args, nargout,
   "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {@var{old_val} =} __parser_debug_flag__ (@var{new_val}))\n\
-Undocumented internal function.\n\
+@deftypefn  {Built-in Function} {@var{val} =} __parser_debug_flag__ ()\n\
+@deftypefnx {Built-in Function} {@var{old_val} =} __parser_debug_flag__ (@var{new_val})\n\
+Query or set the internal flag that determines whether Octave's parser prints\n\
+debug information as it processes an expression.\n\
+@seealso{__lexer_debug_flag__}\n\
 @end deftypefn")
 {
   octave_value retval;
--- a/libinterp/parse-tree/pt-mat.cc	Thu Feb 27 09:56:47 2014 -0800
+++ b/libinterp/parse-tree/pt-mat.cc	Sat Mar 01 22:11:32 2014 -0800
@@ -1380,7 +1380,7 @@
 @deftypefnx {Built-in Function} {@var{old_val} =} string_fill_char (@var{new_val})\n\
 @deftypefnx {Built-in Function} {} string_fill_char (@var{new_val}, \"local\")\n\
 Query or set the internal variable used to pad all rows of a character\n\
-matrix to the same length.  It must be a single character.  The default\n\
+matrix to the same length; It must be a single character.  The default\n\
 value is @qcode{\" \"} (a single space).  For example:\n\
 \n\
 @example\n\
--- a/scripts/general/fieldnames.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/general/fieldnames.m	Sat Mar 01 22:11:32 2014 -0800
@@ -33,7 +33,7 @@
 ## When the input is a Java object @var{javaobj} or Java classname
 ## @var{jclassname} the name are the public data elements of the object or
 ## class.
-## @seealso{struct, methods}
+## @seealso{nfields, isfield, orderfields, struct, methods}
 ## @end deftypefn
 
 function names = fieldnames (obj)
--- a/scripts/help/doc_cache_create.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/help/doc_cache_create.m	Sat Mar 01 22:11:32 2014 -0800
@@ -25,7 +25,7 @@
 ## resulting cache is saved in the file @var{out_file}.
 ## The cache is used to speed up @code{lookfor}.
 ##
-## If no directory is given (or it is the empty matrix), a cache for builtin
+## If no directory is given (or it is the empty matrix), a cache for built-in
 ## operators, etc. is generated.
 ##
 ## @seealso{doc_cache_file, lookfor, path}
--- a/scripts/image/image.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/image/image.m	Sat Mar 01 22:11:32 2014 -0800
@@ -183,28 +183,9 @@
     ## Set axis properties for new images
 
     if (! isempty (img))
-      px = __image_pixel_size__ (h);
-
-      if (xdata(2) < xdata(1))
-        xdata = fliplr (xdata);
-      elseif (xdata(2) == xdata(1))
-        xdata = xdata(1) + [0, columns(img)-1];
+      if (isscalar (get (hax, "children")))
+        axis (hax, "image")
       endif
-      if (ydata(2) < ydata(1))
-        ydata = fliplr (ydata);
-      elseif (ydata(2) == ydata(1))
-        ydata = ydata(1) + [0, rows(img)-1];
-      endif
-      xlim = xdata + [-px(1), px(1)];
-      ylim = ydata + [-px(2), px(2)];
-
-      ## FIXME -- how can we do this and also get the {x,y}limmode
-      ## properties to remain "auto"?  I suppose this adjustment should
-      ## happen automatically in axes::update_axis_limits instead of
-      ## explicitly setting the values here.  But then what information is
-      ## available to axes::update_axis_limits to determine that the
-      ## adjustment is necessary?
-      set (hax, "xlim", xlim, "ylim", ylim);
 
       if (ndims (img) == 3)
         if (isinteger (img))
--- a/scripts/io/importdata.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/io/importdata.m	Sat Mar 01 22:11:32 2014 -0800
@@ -176,8 +176,10 @@
     ## If no delimiter determined yet, make a guess.
     if (isempty (delimiter))
       ## This pattern can be fooled, but mostly does the job just fine.
-      delim = regexp (row, '[+-\d.eE\*ij ]+([^+-\d.ij])[+-\d.ij]',
-                           'tokens', 'once');
+      delim = regexp (row, '[-+\d.eE*ij ]+([^-+\d.ij])[-+\d.ij]',
+                      'tokens', 'once');
+      #delim = regexp (row, '[+-\d.eE\*ij ]+([^+-\d.ij])[+-\d.ij]',
+      #                     'tokens', 'once');
       if (! isempty (delim))
         delimiter = delim{1};
       endif
--- a/scripts/miscellaneous/getfield.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/miscellaneous/getfield.m	Sat Mar 01 22:11:32 2014 -0800
@@ -24,7 +24,7 @@
 ## is the same as @code{setfield}, except it omits the final @var{val}
 ## argument, returning this value instead of setting it.
 ##
-## @seealso{setfield, rmfield, isfield, isstruct, fieldnames, struct}
+## @seealso{setfield, rmfield, isfield, fieldnames, isstruct, struct}
 ## @end deftypefn
 
 ## Author: Etienne Grossmann <etienne@cs.uky.edu>
--- a/scripts/miscellaneous/setfield.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/miscellaneous/setfield.m	Sat Mar 01 22:11:32 2014 -0800
@@ -95,7 +95,7 @@
 ## @var{SA}(2).bar(3).baz = 6
 ## @end group
 ## @end example
-## @seealso{getfield, rmfield, isfield, isstruct, fieldnames, struct}
+## @seealso{getfield, rmfield, isfield, fieldnames, isstruct, struct}
 ## @end deftypefn
 
 ## Author:  Etienne Grossmann <etienne@cs.uky.edu>
--- a/scripts/plot/appearance/axis.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/plot/appearance/axis.m	Sat Mar 01 22:11:32 2014 -0800
@@ -332,10 +332,24 @@
     lims = get (ca, strcat (ax, "lim"));
   else
     data = get (kids, strcat (ax, "data"));
+    types = get (kids, "type");
+    
     scale = get (ca, strcat (ax, "scale"));
     if (! iscell (data))
       data = {data};
     endif
+    
+    ## Extend image data one pixel
+    idx = strcmp (types, "image");
+    if (! isempty (idx) && (ax == "x" || ax == "y"))
+      imdata = data(idx);
+      px = arrayfun (@__image_pixel_size__, kids(idx), "uniformoutput", false);
+      ipx = ifelse (ax == "x", 1, 2);
+      imdata = cellfun (@(x,dx) [(min (x) - dx(ipx)), (max (x) + dx(ipx))],
+                        imdata, px, "uniformoutput", false);
+      data(idx) = imdata;
+    endif
+    
     if (strcmp (scale, "log"))
       tmp = data;
       data = cellfun (@(x) x(x>0), tmp, "uniformoutput", false);
--- a/scripts/plot/util/isprop.m	Thu Feb 27 09:56:47 2014 -0800
+++ b/scripts/plot/util/isprop.m	Sat Mar 01 22:11:32 2014 -0800
@@ -22,7 +22,7 @@
 ##
 ## @var{h} may also be an array of handles in which case @var{res} will be a
 ## logical array indicating whether each handle has the property @var{prop}.
-## @seealso{get, set}
+## @seealso{get, set, ismethod, isobject}
 ## @end deftypefn
 
 ## Author: Ben Abbott  <bpabbott@mac.com>
--- a/test/io.tst	Thu Feb 27 09:56:47 2014 -0800
+++ b/test/io.tst	Sat Mar 01 22:11:32 2014 -0800
@@ -560,6 +560,11 @@
 %! [data, count] = fread (id, inf, "2*uint8", 2);
 %! assert (data, [0; 1; 4; 5; 8; 9; 12; 13]);
 %! assert (count, 8);
+%! fclose (id);
+
+%!test
+%! id = tmpfile ();
+%! fwrite (id, char (0:15));
 %! frewind (id);
 %! [data, count] = fread (id, 3, "2*uint8", 3);
 %! assert (data, [0; 1; 5]);
@@ -574,3 +579,21 @@
 %! assert (data, []);
 %! assert (count, 0);
 %! fclose (id);
+
+%!test
+%! id = tmpfile ();
+%! fwrite (id, char (0:15));
+%! frewind (id);
+%! [data, count] = fread (id, [1, Inf], "4*uint16", 3);
+%! assert (data, [256, 770, 1284, 1798, 3083, 3597]);
+%! assert (count, 6);
+%! fclose (id);
+
+%!test
+%! id = tmpfile ();
+%! fwrite (id, char (0:15));
+%! frewind (id);
+%! [data, count] = fread (id, [3, Inf], "4*uint16", 3);
+%! assert (data, [256, 1798; 770, 3083; 1284, 3597]);
+%! assert (count, 6);
+%! fclose (id);