changeset 32629:35f17e80e4bf bytecode-interpreter

maint: Merge default to bytecode-interpreter
author Arun Giridhar <arungiridhar@gmail.com>
date Thu, 21 Dec 2023 17:48:59 -0500
parents 1bef14b52af5 (current diff) ae4e19c0a2b1 (diff)
children d59cfc22d44c
files libinterp/corefcn/call-stack.h libinterp/corefcn/load-path.h libinterp/octave-value/ov-base-diag.h libinterp/octave-value/ov-base-mat.h libinterp/octave-value/ov-base-scalar.h libinterp/octave-value/ov-base-sparse.h libinterp/octave-value/ov-base.cc libinterp/octave-value/ov-base.h libinterp/octave-value/ov-cell.h libinterp/octave-value/ov-classdef.h libinterp/octave-value/ov-colon.h libinterp/octave-value/ov-fcn-handle.h libinterp/octave-value/ov-fcn.h libinterp/octave-value/ov-struct.h libinterp/octave-value/ov-usr-fcn.h libinterp/octave-value/ov.cc libinterp/octave-value/ov.h
diffstat 220 files changed, 1164 insertions(+), 1603 deletions(-) [+]
line wrap: on
line diff
--- a/etc/NEWS.10.md	Wed Dec 20 16:07:27 2023 +0100
+++ b/etc/NEWS.10.md	Thu Dec 21 17:48:59 2023 -0500
@@ -12,8 +12,6 @@
 to 'rtick' by the function `rticks` will only include the center tick mark
 value if it is specified.
 
-- `
-
 ### Matlab compatibility
 
 - `height` and `width` are now aliases for the `rows` and `columns` functions.
@@ -34,6 +32,15 @@
         Function               | Replacement
         -----------------------|------------------
 
+- Core
+
+        Function                              | Replacement
+        --------------------------------------|------------------
+        symbol_record_rep::mark_as_variable   | symbol_record_rep::mark_variable
+        symbol_record_rep::unmark_as_variable | symbol_record_rep::unmark_variable
+        symbol_record::mark_as_variable       | symbol_record::mark_variable
+        symbol_record::unmark_as_variable     | symbol_record::unmark_variable
+
 The following features were deprecated in Octave 8 and have been removed
 from Octave 10.
 
--- a/libgui/languages/zh_CN.ts	Wed Dec 20 16:07:27 2023 +0100
+++ b/libgui/languages/zh_CN.ts	Thu Dec 21 17:48:59 2023 -0500
@@ -976,13 +976,13 @@
         <location line="-21"/>
         <location filename="../graphics/ui-annotation-dialog.h" line="-3"/>
         <source>Horizontal alignment</source>
-        <translation type="unfinished"></translation>
+        <translation>水平对齐</translation>
     </message>
     <message>
         <location line="+29"/>
         <location filename="../graphics/ui-annotation-dialog.h" line="+5"/>
         <source>Vertical alignment</source>
-        <translation type="unfinished"></translation>
+        <translation>垂直对齐</translation>
     </message>
     <message>
         <location line="+11"/>
@@ -1086,7 +1086,7 @@
     <message>
         <location filename="../src/dialog.cc" line="+442"/>
         <source>Select All</source>
-        <translation type="unfinished">全选</translation>
+        <translation>全选</translation>
     </message>
 </context>
 <context>
@@ -1094,17 +1094,17 @@
     <message>
         <location filename="../src/command-widget.cc" line="+59"/>
         <source>Pause</source>
-        <translation type="unfinished">暂停</translation>
+        <translation>暂停</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Stop</source>
-        <translation type="unfinished">停止</translation>
+        <translation>停止</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Continue</source>
-        <translation type="unfinished">继续</translation>
+        <translation>继续</translation>
     </message>
 </context>
 <context>
@@ -1112,7 +1112,7 @@
     <message>
         <location filename="../src/community-news.cc" line="+69"/>
         <source>Octave Community News</source>
-        <translation type="unfinished">Octave 社区新闻</translation>
+        <translation>Octave 社区新闻</translation>
     </message>
 </context>
 <context>
@@ -1122,14 +1122,14 @@
         <location line="+14"/>
         <location line="+748"/>
         <source>Octave Documentation</source>
-        <translation type="unfinished">Octave文档</translation>
+        <translation>Octave文档</translation>
     </message>
     <message>
         <location line="-761"/>
         <source>Could not copy help collection to temporary
 file. Search capabilities may be affected.
 %1</source>
-        <translation type="unfinished">无法将帮助内容写入临时文件。
+        <translation>无法将帮助内容写入临时文件。
 搜索能力可能会受到影响。
 %1</translation>
     </message>
@@ -1140,105 +1140,107 @@
 module is missing?
 Only help text in the Command Window will
 be available.</source>
-        <translation type="unfinished"></translation>
+        <translation>无法设置文档查看器所需的数据。
+可能是缺少 Qt SQlite模块?
+只有命令窗口中的帮助文本可用。</translation>
     </message>
     <message>
         <location line="+33"/>
         <source>Find:</source>
-        <translation type="unfinished">查找:</translation>
+        <translation>查找:</translation>
     </message>
     <message>
         <location line="+7"/>
         <location line="+1"/>
         <source>Search forward</source>
-        <translation type="unfinished">向前搜索</translation>
+        <translation>下一条搜索结果</translation>
     </message>
     <message>
         <location line="+8"/>
         <location line="+1"/>
         <source>Search backward</source>
-        <translation type="unfinished">向后搜索</translation>
+        <translation>上一条搜索结果</translation>
     </message>
     <message>
         <location line="+44"/>
         <source>Contents</source>
-        <translation type="unfinished">内容</translation>
+        <translation>内容</translation>
     </message>
     <message>
         <location line="+11"/>
         <source>Enter text to search function index</source>
-        <translation type="unfinished"></translation>
+        <translation>输入文本搜索函数目录</translation>
     </message>
     <message>
         <location line="+9"/>
         <location line="+52"/>
         <source>Search</source>
-        <translation type="unfinished">搜索</translation>
+        <translation>搜索</translation>
     </message>
     <message>
         <location line="-36"/>
         <source>Function Index</source>
-        <translation type="unfinished">函数目录</translation>
+        <translation>函数目录</translation>
     </message>
     <message>
         <location line="+21"/>
         <source>Bookmarks</source>
-        <translation type="unfinished">书签</translation>
+        <translation>书签</translation>
     </message>
     <message>
         <location line="+87"/>
         <source>Go home</source>
-        <translation type="unfinished">回主界面</translation>
+        <translation>回主界面</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Go back</source>
-        <translation type="unfinished">返回</translation>
+        <translation>返回</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Previous pages</source>
-        <translation type="unfinished">之前页面</translation>
+        <translation>之前页面</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Go forward</source>
-        <translation type="unfinished">前进</translation>
+        <translation>前进</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Next pages</source>
-        <translation type="unfinished">之后页面</translation>
+        <translation>之后页面</translation>
     </message>
     <message>
         <location line="+37"/>
         <source>Find</source>
-        <translation type="unfinished">查找</translation>
+        <translation>查找</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Zoom In</source>
-        <translation type="unfinished">放大</translation>
+        <translation>放大</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Zoom Out</source>
-        <translation type="unfinished">缩小</translation>
+        <translation>缩小</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Zoom Original</source>
-        <translation type="unfinished"></translation>
+        <translation>恢复原比例</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Bookmark current page</source>
-        <translation type="unfinished">为此页面添加书签</translation>
+        <translation>为此页面添加书签</translation>
     </message>
     <message>
         <location line="+429"/>
         <source>Unable to register help file %1.</source>
-        <translation type="unfinished">无法注册帮助文件 %1.</translation>
+        <translation>无法注册帮助文件 %1.</translation>
     </message>
 </context>
 <context>
@@ -1247,63 +1249,63 @@
         <location filename="../src/documentation-bookmarks.cc" line="+101"/>
         <source>
 No documentation bookmarks loaded!</source>
-        <translation type="unfinished">
+        <translation>
 没有文档书签被加载!</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Octave: Loading Documentation Bookmarks</source>
-        <translation type="unfinished">Octave: 载入文档书签中</translation>
+        <translation>Octave: 载入文档书签中</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>Enter text to search the bookmarks</source>
-        <translation type="unfinished">输入文本搜索书签</translation>
+        <translation>输入文本搜索书签</translation>
     </message>
     <message>
         <location line="+25"/>
         <source>Filter</source>
-        <translation type="unfinished">过滤器</translation>
+        <translation>过滤器</translation>
     </message>
     <message>
         <location line="+83"/>
         <source>New Folder</source>
-        <translation type="unfinished">新建文件夹</translation>
+        <translation>新建文件夹</translation>
     </message>
     <message>
         <location line="+105"/>
         <source>&amp;Open</source>
-        <translation type="unfinished">打开 (&amp;O)</translation>
+        <translation>打开 (&amp;O)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>&amp;Rename</source>
-        <translation type="unfinished">重命名 (&amp;R)</translation>
+        <translation>重命名 (&amp;R)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Remo&amp;ve</source>
-        <translation type="unfinished">删除 (&amp;V)</translation>
+        <translation>删除 (&amp;V)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Add Folder</source>
-        <translation type="unfinished">添加文件夹 (&amp;A)</translation>
+        <translation>添加文件夹 (&amp;A)</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Hide &amp;Filter</source>
-        <translation type="unfinished">隐藏过滤器 (&amp;F)</translation>
+        <translation>隐藏过滤器 (&amp;F)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show &amp;Filter</source>
-        <translation type="unfinished">显示过滤器 (&amp;F)</translation>
+        <translation>显示过滤器 (&amp;F)</translation>
     </message>
     <message>
         <location line="+60"/>
         <source>Octave: Saving Documentation Bookmarks</source>
-        <translation type="unfinished">Octave: 保存文档书签</translation>
+        <translation>Octave: 保存文档书签</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -1312,7 +1314,7 @@
 
 Documentation bookmarks are not saved!
 </source>
-        <translation type="unfinished">无法写入文件 %1:
+        <translation>无法写入文件 %1:
 %2.
 
 文档书签未保存!
@@ -1322,14 +1324,14 @@
         <location line="+55"/>
         <source>Unable to read file %1:
 %2.</source>
-        <translation type="unfinished">无法读取文件 %1:
+        <translation>无法读取文件 %1:
 %2.</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>No start element found in %1.
 Invalid bookmark file?</source>
-        <translation type="unfinished">文件 %1 中找不到起始元素。
+        <translation>文件 %1 中找不到起始元素。
 是否是无效的标签文件?</translation>
     </message>
     <message>
@@ -1337,14 +1339,14 @@
         <source>The file
 %1
 is not a valid XBEL file version 1.0.</source>
-        <translation type="unfinished">文件
+        <translation>文件
 %1
 不是合法的XBEL 1.0版本文件。</translation>
     </message>
     <message>
         <location line="+26"/>
         <source>Unknown title</source>
-        <translation type="unfinished">未知标题</translation>
+        <translation>未知标题</translation>
     </message>
 </context>
 <context>
@@ -1352,12 +1354,12 @@
     <message>
         <location filename="../src/documentation-dock-widget.cc" line="+40"/>
         <source>Documentation</source>
-        <translation type="unfinished">文档</translation>
+        <translation>文档</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>See the documentation for help.</source>
-        <translation type="unfinished">阅读文档以获取帮助。</translation>
+        <translation>阅读文档以获取帮助。</translation>
     </message>
 </context>
 <context>
@@ -1365,27 +1367,27 @@
     <message>
         <location filename="../src/dw-main-window.cc" line="+53"/>
         <source>&amp;Close</source>
-        <translation type="unfinished">关闭 (&amp;C)</translation>
+        <translation>关闭 (&amp;C)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Close &amp;All</source>
-        <translation type="unfinished">关闭全部 (&amp;A)</translation>
+        <translation>关闭全部 (&amp;A)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Close &amp;Other</source>
-        <translation type="unfinished">关闭其他 (&amp;O)</translation>
+        <translation>关闭其他 (&amp;O)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Switch to &amp;Left Widget</source>
-        <translation type="unfinished">切换到左侧组件 (&amp;L)</translation>
+        <translation>切换到左侧组件 (&amp;L)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Switch to &amp;Right Widget</source>
-        <translation type="unfinished">切换到右侧组件 (&amp;R)</translation>
+        <translation>切换到右侧组件 (&amp;R)</translation>
     </message>
 </context>
 <context>
@@ -1394,20 +1396,20 @@
         <location filename="../src/external-editor-interface.cc" line="+68"/>
         <location line="+46"/>
         <source>Octave Editor</source>
-        <translation type="unfinished">Octave 编辑器</translation>
+        <translation>Octave 编辑器</translation>
     </message>
     <message>
         <location line="-45"/>
         <source>Could not start custom file editor
 %1</source>
-        <translation type="unfinished">无法启动自定义文件编辑器
+        <translation>无法启动自定义文件编辑器
 %1</translation>
     </message>
     <message>
         <location line="+46"/>
         <source>There is no custom editor configured yet.
 Do you want to open the preferences?</source>
-        <translation type="unfinished">自定义文本编辑器尚未配置。是否打开首选项?</translation>
+        <translation>自定义文本编辑器尚未配置。是否打开首选项?</translation>
     </message>
 </context>
 <context>
@@ -1415,12 +1417,12 @@
     <message>
         <location filename="../src/m-editor/file-editor.cc" line="+190"/>
         <source>Continue</source>
-        <translation type="unfinished">继续</translation>
+        <translation>继续</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Save File and Run</source>
-        <translation type="unfinished">保存文件并运行</translation>
+        <translation>保存文件并运行</translation>
     </message>
     <message>
         <location line="+912"/>
@@ -1429,430 +1431,438 @@
         <location line="+18"/>
         <location line="+25"/>
         <source>Octave Editor</source>
-        <translation type="unfinished">Octave 编辑器</translation>
+        <translation>Octave 编辑器</translation>
     </message>
     <message>
         <location line="-610"/>
         <source>File not saved! A file with the selected name
 %1
 is already open in the editor.</source>
-        <translation type="unfinished"></translation>
+        <translation>文件未保存!所选名称为
+%1
+的文件已在编辑器中打开。</translation>
     </message>
     <message>
         <location line="+28"/>
         <source>The associated file editor tab has disappeared.</source>
-        <translation type="unfinished">关联文件的编辑标签消失了。</translation>
+        <translation>关联文件的编辑标签消失了。</translation>
     </message>
     <message>
         <location line="+540"/>
         <source>Could not open file
 %1
 for reading: %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>无法打开文件
+%1
+以读取: %2。</translation>
     </message>
     <message>
         <location line="+18"/>
         <source>File
 %1
 does not exist. Do you want to create it?</source>
-        <translation type="unfinished"></translation>
+        <translation>文件
+%1
+不存在。您想创建它吗?</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Create</source>
-        <translation type="unfinished">创建</translation>
+        <translation>创建</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <location line="+20"/>
         <source>Could not open file
 %1
 for writing: %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>无法打开文件
+%1
+以写入: %2。</translation>
     </message>
     <message>
         <location line="+250"/>
         <source>&amp;File</source>
-        <translation type="unfinished">文件 (&amp;F)</translation>
+        <translation>文件 (&amp;F)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>&amp;Recent Editor Files</source>
-        <translation type="unfinished">最近编辑器文件 (&amp;R)</translation>
+        <translation>最近编辑器文件 (&amp;R)</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>&amp;Edit Function</source>
-        <translation type="unfinished">编辑函数 (&amp;E)</translation>
+        <translation>编辑函数 (&amp;E)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>&amp;Save File</source>
-        <translation type="unfinished">保存文件 (&amp;S)</translation>
+        <translation>保存文件 (&amp;S)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Save File &amp;As...</source>
-        <translation type="unfinished">文件另存为 (&amp;A)...</translation>
+        <translation>文件另存为 (&amp;A)...</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>&amp;Close</source>
-        <translation type="unfinished">关闭 (&amp;C)</translation>
+        <translation>关闭 (&amp;C)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Close All</source>
-        <translation type="unfinished">关闭全部</translation>
+        <translation>关闭全部</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Close Other Files</source>
-        <translation type="unfinished">关闭其他文件</translation>
+        <translation>关闭其他文件</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Print...</source>
-        <translation type="unfinished">打印...</translation>
+        <translation>打印...</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Edit</source>
-        <translation type="unfinished">编辑 (&amp;E)</translation>
+        <translation>编辑 (&amp;E)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Redo</source>
-        <translation type="unfinished">重做 (&amp;R)</translation>
+        <translation>重做 (&amp;R)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Cu&amp;t</source>
-        <translation type="unfinished">剪切 (&amp;T)</translation>
+        <translation>剪切 (&amp;T)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Find and Replace...</source>
-        <translation type="unfinished">查找并替换 (&amp;F) ...</translation>
+        <translation>查找并替换 (&amp;F) ...</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Find &amp;Next</source>
-        <translation type="unfinished"></translation>
+        <translation>查找下一处 (&amp;N)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Find &amp;Previous</source>
-        <translation type="unfinished">查找上一个 (&amp;P)</translation>
+        <translation>查找上一处 (&amp;P)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Commands</source>
-        <translation type="unfinished">命令 (&amp;C)</translation>
+        <translation>命令 (&amp;C)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Delete Line</source>
-        <translation type="unfinished">删除行</translation>
+        <translation>删除行</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Copy Line</source>
-        <translation type="unfinished">复制行</translation>
+        <translation>复制行</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Cut Line</source>
-        <translation type="unfinished">剪切行</translation>
+        <translation>剪切行</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Delete to Start of Word</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到单词开始</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Delete to End of Word</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到单词结尾</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Delete to Start of Line</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到行的开始</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Delete to End of Line</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到行的结尾</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Duplicate Selection/Line</source>
-        <translation type="unfinished"></translation>
+        <translation>重复所选文本/行</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Transpose Line</source>
-        <translation type="unfinished">交换行</translation>
+        <translation>交换行</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Show Completion List</source>
-        <translation type="unfinished">显示完成列表(&amp;S)</translation>
+        <translation>显示补全列表(&amp;S)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>&amp;Format</source>
-        <translation type="unfinished">格式(&amp;F)</translation>
+        <translation>格式化(&amp;F)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>&amp;Uppercase Selection</source>
-        <translation type="unfinished">所选文本转大写 (&amp;U)</translation>
+        <translation>所选文本转大写 (&amp;U)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Lowercase Selection</source>
-        <translation type="unfinished">所选文本转小写 (&amp;L)</translation>
+        <translation>所选文本转小写 (&amp;L)</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Comment</source>
-        <translation type="unfinished">注释 (&amp;C)</translation>
+        <translation>注释 (&amp;C)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Uncomment</source>
-        <translation type="unfinished">取消注释 (&amp;U)</translation>
+        <translation>取消注释 (&amp;U)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Comment (Choosing String)</source>
-        <translation type="unfinished">注释(正在选择字符串)</translation>
+        <translation>注释(正在选择字符串)</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Indent Selection Rigidly</source>
-        <translation type="unfinished">向右严格缩进所选文本 (&amp;I)</translation>
+        <translation>向右严格缩进所选文本 (&amp;I)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Unindent Selection Rigidly</source>
-        <translation type="unfinished">向左严格缩进所选文本 (&amp;U)</translation>
+        <translation>向左严格缩进所选文本 (&amp;U)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Indent Code</source>
-        <translation type="unfinished">缩进代码</translation>
+        <translation>缩进代码</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Convert Line Endings to &amp;Windows (CRLF)</source>
-        <translation type="unfinished">将行尾转为 &amp;Windows 风格 (CRLF)</translation>
+        <translation>将行尾转为 &amp;Windows 风格 (CRLF)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Convert Line Endings to &amp;Unix (LF)</source>
-        <translation type="unfinished">将行尾转为 &amp;Unix 风格 (LF)</translation>
+        <translation>将行尾转为 &amp;Unix 风格 (LF)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
-        <translation type="unfinished">将行尾转为 Legacy &amp;Mac 风格 (CR)</translation>
+        <translation>将行尾转为 Legacy &amp;Mac 风格 (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Navi&amp;gation</source>
-        <translation type="unfinished">转到 (&amp;g)</translation>
+        <translation>转到 (&amp;g)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Go &amp;to Line...</source>
-        <translation type="unfinished">跳至行 (&amp;T) ...</translation>
+        <translation>跳至行 (&amp;T) ...</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Move to Matching Brace</source>
-        <translation type="unfinished">移至匹配的括号</translation>
+        <translation>移至匹配的括号</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Select to Matching Brace</source>
-        <translation type="unfinished"></translation>
+        <translation>选择匹配的括号间的文本</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Next Bookmark</source>
-        <translation type="unfinished">下一个书签 (&amp;N)</translation>
+        <translation>下一个书签 (&amp;N)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Pre&amp;vious Bookmark</source>
-        <translation type="unfinished">上一个书签 (&amp;V)</translation>
+        <translation>上一个书签 (&amp;V)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Toggle &amp;Bookmark</source>
-        <translation type="unfinished">切换书签 (&amp;B)</translation>
+        <translation>切换书签 (&amp;B)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Remove All Bookmarks</source>
-        <translation type="unfinished">移除所有书签 (&amp;R)</translation>
+        <translation>移除所有书签 (&amp;R)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>&amp;Preferences...</source>
-        <translation type="unfinished">首选项 (&amp;P) ...</translation>
+        <translation>首选项 (&amp;P) ...</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Styles Preferences...</source>
-        <translation type="unfinished">样式首选项 (&amp;S) ...</translation>
+        <translation>样式首选项 (&amp;S) ...</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;View</source>
-        <translation type="unfinished">视图 (&amp;V)</translation>
+        <translation>视图 (&amp;V)</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>&amp;Editor</source>
-        <translation type="unfinished">编辑器 (&amp;E)</translation>
+        <translation>编辑器 (&amp;E)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show &amp;Line Numbers</source>
-        <translation type="unfinished">显示行数 (&amp;L)</translation>
+        <translation>显示行数 (&amp;L)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Show &amp;Whitespace Characters</source>
-        <translation type="unfinished">显示空白字符 (&amp;W)</translation>
+        <translation>显示空白字符 (&amp;W)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Show Line &amp;Endings</source>
-        <translation type="unfinished">显示行尾 (&amp;E)</translation>
+        <translation>显示行尾 (&amp;E)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Show &amp;Indentation Guides</source>
-        <translation type="unfinished">显示缩进对齐线 (&amp;I)</translation>
+        <translation>显示缩进对齐线 (&amp;I)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Show Long Line &amp;Marker</source>
-        <translation type="unfinished">显示长线标记 (&amp;M)</translation>
+        <translation>显示长文本行标记 (&amp;M)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Show &amp;Toolbar</source>
-        <translation type="unfinished">显示工具栏 (&amp;T)</translation>
+        <translation>显示工具栏 (&amp;T)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Show &amp;Statusbar</source>
-        <translation type="unfinished">显示状态栏 (&amp;S)</translation>
+        <translation>显示状态栏 (&amp;S)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Show &amp;Horizontal Scrollbar</source>
-        <translation type="unfinished">显示垂直滚动条 (&amp;H)</translation>
+        <translation>显示垂直滚动条 (&amp;H)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Zoom &amp;In</source>
-        <translation type="unfinished">放大 (&amp;I)</translation>
+        <translation>放大 (&amp;I)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Zoom &amp;Out</source>
-        <translation type="unfinished">缩小 (&amp;O)</translation>
+        <translation>缩小 (&amp;O)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Normal Size</source>
-        <translation type="unfinished">正常大小 (&amp;N)</translation>
+        <translation>正常大小 (&amp;N)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Sort Tabs Alphabetically</source>
-        <translation type="unfinished">以字母顺序排序标签页 (&amp;S)</translation>
+        <translation>以字母顺序排序标签页 (&amp;S)</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>&amp;Debug</source>
-        <translation type="unfinished">调试 (&amp;D)</translation>
+        <translation>调试 (&amp;D)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Toggle &amp;Breakpoint</source>
-        <translation type="unfinished">切换断点 (&amp;B)</translation>
+        <translation>开关断点 (&amp;B)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Next Breakpoint</source>
-        <translation type="unfinished">下一个断点 (&amp;N)</translation>
+        <translation>下一个断点 (&amp;N)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Pre&amp;vious Breakpoint</source>
-        <translation type="unfinished">上一个断点 (&amp;V)</translation>
+        <translation>上一个断点 (&amp;V)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Remove All Breakpoints</source>
-        <translation type="unfinished">移除所有断点 (&amp;R)</translation>
+        <translation>移除所有断点 (&amp;R)</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>&amp;Run</source>
-        <translation type="unfinished">运行 (&amp;R)</translation>
+        <translation>运行 (&amp;R)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Save File and Run/Continue</source>
-        <translation type="unfinished"></translation>
+        <translation>保存文件并运行/继续</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Run &amp;Selection</source>
-        <translation type="unfinished">运行选定部分 (&amp;S)</translation>
+        <translation>运行选定部分 (&amp;S)</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Help</source>
-        <translation type="unfinished">帮助 (&amp;H)</translation>
+        <translation>帮助 (&amp;H)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Help on Keyword</source>
-        <translation type="unfinished">关键字的帮助 (&amp;H)</translation>
+        <translation>关键字的帮助 (&amp;H)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Documentation on Keyword</source>
-        <translation type="unfinished">关键字的文档 (&amp;D)</translation>
+        <translation>关键字的文档 (&amp;D)</translation>
     </message>
     <message>
         <location line="+25"/>
         <source>Recent Files</source>
-        <translation type="unfinished">最近文件</translation>
+        <translation>最近文件</translation>
     </message>
     <message>
         <location line="+49"/>
         <source>Copy Full File &amp;Path</source>
-        <translation type="unfinished">复制完整的文件路径 (&amp;P)</translation>
+        <translation>复制完整的文件路径 (&amp;P)</translation>
     </message>
     <message>
         <location line="+16"/>
         <source>Editor</source>
-        <translation type="unfinished">编辑器</translation>
+        <translation>编辑器</translation>
     </message>
 </context>
 <context>
@@ -1860,32 +1870,32 @@
     <message>
         <location filename="../src/m-editor/file-editor-tab.cc" line="+160"/>
         <source>line:</source>
-        <translation type="unfinished">行数:</translation>
+        <translation>行数:</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>col:</source>
-        <translation type="unfinished">列数:</translation>
+        <translation>列数:</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>encoding:</source>
-        <translation type="unfinished">编码:</translation>
+        <translation>编码:</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>eol:</source>
-        <translation type="unfinished">行尾:</translation>
+        <translation>行尾:</translation>
     </message>
     <message>
         <location line="+253"/>
         <source>Breakpoint condition</source>
-        <translation type="unfinished">条件断点</translation>
+        <translation>条件断点</translation>
     </message>
     <message>
         <location line="+70"/>
         <source>ERROR: </source>
-        <translation type="unfinished">错误: </translation>
+        <translation>错误: </translation>
     </message>
     <message>
         <location line="+73"/>
@@ -1900,47 +1910,47 @@
         <location line="+85"/>
         <location line="+36"/>
         <source>Octave Editor</source>
-        <translation type="unfinished">Octave 编辑器</translation>
+        <translation>Octave 编辑器</translation>
     </message>
     <message>
         <location line="-2263"/>
         <source>Cannot add breakpoint to modified or unnamed file.
 Save and add breakpoint, or cancel?</source>
-        <translation type="unfinished">无法将断点添加到已修改或未命名的文件。
+        <translation>无法将断点添加到已修改或未命名的文件。
 保存并添加断点,还是取消?</translation>
     </message>
     <message>
         <location line="+878"/>
         <source>Goto line</source>
-        <translation type="unfinished">前往行</translation>
+        <translation>前往行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Line number</source>
-        <translation type="unfinished">行数</translation>
+        <translation>行数</translation>
     </message>
     <message>
         <location line="+128"/>
         <source>Comment selected text</source>
-        <translation type="unfinished">注释所选文本</translation>
+        <translation>注释所选文本</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Comment string to use:
 </source>
-        <translation type="unfinished">注释字符串以使用:
+        <translation>注释字符串以使用:
 </translation>
     </message>
     <message>
         <location line="+139"/>
         <location line="+53"/>
         <source>&lt;unnamed&gt;</source>
-        <translation type="unfinished">&lt;未命名&gt;</translation>
+        <translation>&lt;未命名&gt;</translation>
     </message>
     <message>
         <location line="-6"/>
         <source>Do you want to cancel closing, save, or discard the changes?</source>
-        <translation type="unfinished"></translation>
+        <translation>您想取消关闭、保存还是放弃更改?</translation>
     </message>
     <message>
         <location line="+10"/>
@@ -1949,7 +1959,7 @@
   %1
 
 is about to be closed but has been modified.  %2</source>
-        <translation type="unfinished">文件
+        <translation>文件
 
   %1
 
@@ -1959,7 +1969,8 @@
         <location line="+148"/>
         <source>Unable to read file &apos;%1&apos;
 with selected encoding &apos;%2&apos;: %3</source>
-        <translation type="unfinished"></translation>
+        <translation>无法读取文件 &apos;%1&apos;
+所选编码为&apos;%2&apos;:%3</translation>
     </message>
     <message>
         <location line="+10"/>
@@ -1968,7 +1979,7 @@
 with the selected encoding %2.
 
 Modifying and saving the file might cause data loss!</source>
-        <translation type="unfinished">读取文件时出现问题
+        <translation>读取文件时出现问题
 %1
 使用所选的编码 %2。
 
@@ -1977,24 +1988,24 @@
     <message>
         <location line="+10"/>
         <source>&amp;Edit anyway</source>
-        <translation type="unfinished">强制编辑 (&amp;E)</translation>
+        <translation>强制编辑 (&amp;E)</translation>
     </message>
     <message>
         <location line="+1"/>
         <location line="+44"/>
         <source>Chan&amp;ge encoding</source>
-        <translation type="unfinished">切换编码 (&amp;G)</translation>
+        <translation>切换编码 (&amp;G)</translation>
     </message>
     <message>
         <location line="-42"/>
         <location line="+35"/>
         <source>&amp;Close</source>
-        <translation type="unfinished">关闭 (&amp;C)</translation>
+        <translation>关闭 (&amp;C)</translation>
     </message>
     <message>
         <location line="+11"/>
         <source>Select new default encoding</source>
-        <translation type="unfinished">选择新的默认编码</translation>
+        <translation>选择新的默认编码</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -2003,7 +2014,7 @@
 
 This does not change the default encoding.
 </source>
-        <translation type="unfinished">请选择新的编码
+        <translation>请选择新的编码
 用于重新加载当前文件。
 
 这不会更改默认编码。
@@ -2012,37 +2023,38 @@
     <message>
         <location line="+172"/>
         <source>Debug or Save</source>
-        <translation type="unfinished">调试或保存</translation>
+        <translation>调试或保存</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>This file is currently being executed.
 Quit debugging and save?</source>
-        <translation type="unfinished">此文件正在运行,
+        <translation>此文件正在运行。
 是否退出调试并保存?</translation>
     </message>
     <message>
         <location line="+212"/>
         <source>Could not open file %1 for writing:
 %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>无法打开文件 %1 以进行写入:
+%2。</translation>
     </message>
     <message>
         <location line="+111"/>
         <source>The changes could not be saved to the file
 %1</source>
-        <translation type="unfinished">改动无法保存到文件
+        <translation>改动无法保存到文件
 %1</translation>
     </message>
     <message>
         <location line="+30"/>
         <source>Octave Files (*.m)</source>
-        <translation type="unfinished">Octave 文件 (*.m)</translation>
+        <translation>Octave 文件 (*.m)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>All Files (*)</source>
-        <translation type="unfinished">所有文件 (*)</translation>
+        <translation>所有文件 (*)</translation>
     </message>
     <message>
         <location line="+97"/>
@@ -2053,7 +2065,7 @@
 call your script using its name as an Octave command.
 
 Do you want to choose another name?</source>
-        <translation type="unfinished">&quot;%1&quot;
+        <translation>&quot;%1&quot;
 不是有效的标识符。
 
 如果使用此文件名,您将无法将这个名字当作 Octave 命令来调用。
@@ -2067,7 +2079,7 @@
 Using it would result in data loss!
 
 Please select another one!</source>
-        <translation type="unfinished">当前编辑器内容无法
+        <translation>当前编辑器内容无法
 使用所选编码 %1。
 使用它会导致数据丢失!
 
@@ -2078,21 +2090,21 @@
         <source>%1
  already exists
 Do you want to overwrite it?</source>
-        <translation type="unfinished">%1
+        <translation>%1
  已经存在
 您确定要覆盖它吗?</translation>
     </message>
     <message>
         <location line="+85"/>
         <source>It seems that &apos;%1&apos; has been modified by another application. Do you want to reload it?</source>
-        <translation type="unfinished">看起来 &apos;%1&apos; 已经被其他应用修改。你希望重新载入这个文件吗?</translation>
+        <translation>看起来 &apos;%1&apos; 已经被其他应用修改。您希望重新载入这个文件吗?</translation>
     </message>
     <message>
         <location line="+29"/>
         <source>
 
 Warning: The contents in the editor is modified!</source>
-        <translation type="unfinished">
+        <translation>
 
 警告: 编辑器中内容已经被修改!</translation>
     </message>
@@ -2101,9 +2113,9 @@
         <source>It seems that the file
 %1
 has been deleted or renamed. Do you want to save it now?%2</source>
-        <translation type="unfinished">数据文件
+        <translation>数据文件
 %1
-已经被修改或重命名。你希望现在保存这个文件吗?%2</translation>
+已经被修改或重命名。您希望现在保存这个文件吗?%2</translation>
     </message>
 </context>
 <context>
@@ -2111,223 +2123,223 @@
     <message>
         <location filename="../src/files-dock-widget.cc" line="-4"/>
         <source>Could not rename file &quot;%1&quot; to &quot;%2&quot;.</source>
-        <translation type="unfinished">无法将文件 &quot;%1&quot; 重命名为 &quot;%2&quot;。</translation>
+        <translation>无法将文件 &quot;%1&quot; 重命名为 &quot;%2&quot;。</translation>
     </message>
     <message>
         <location line="+51"/>
         <source>File Browser</source>
-        <translation type="unfinished">文件浏览器</translation>
+        <translation>文件浏览器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Browse your files</source>
-        <translation type="unfinished">浏览文件</translation>
+        <translation>浏览文件</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>File size</source>
-        <translation type="unfinished">文件大小</translation>
+        <translation>文件大小</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>File type</source>
-        <translation type="unfinished">文件类型</translation>
+        <translation>文件类型</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Date modified</source>
-        <translation type="unfinished">修改日期</translation>
+        <translation>修改日期</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show hidden</source>
-        <translation type="unfinished">显示隐藏文件</translation>
+        <translation>显示隐藏文件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Alternating row colors</source>
-        <translation type="unfinished">备选列颜色</translation>
+        <translation>备选列颜色</translation>
     </message>
     <message>
         <location line="+26"/>
         <source>Enter the path or filename</source>
-        <translation type="unfinished">输入路径或文件名</translation>
+        <translation>输入路径或文件名</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>One directory up</source>
-        <translation type="unfinished">向上一级</translation>
+        <translation>向上一级</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Octave directory</source>
-        <translation type="unfinished">显示 Octave 目录</translation>
+        <translation>显示 Octave 目录</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Go to current Octave directory</source>
-        <translation type="unfinished">前往当前的 Octave 目录</translation>
+        <translation>前往当前的 Octave 目录</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Set Octave directory</source>
-        <translation type="unfinished">设置 Octave 目录</translation>
+        <translation>设置 Octave 目录</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Set Octave directory to current browser directory</source>
-        <translation type="unfinished">设置 Octave 目录到当前浏览器目录</translation>
+        <translation>设置 Octave 目录到当前浏览器目录</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Actions on current directory</source>
-        <translation type="unfinished">在当前目录的操作</translation>
+        <translation>在当前目录的操作</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Home Directory</source>
-        <translation type="unfinished">显示主目录</translation>
+        <translation>显示主目录</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>Set Browser Directory...</source>
-        <translation type="unfinished">设置浏览器目录...</translation>
+        <translation>设置浏览器目录...</translation>
     </message>
     <message>
         <location line="+4"/>
         <location line="+422"/>
         <source>Find Files...</source>
-        <translation type="unfinished">查找文件...</translation>
+        <translation>查找文件...</translation>
     </message>
     <message>
         <location line="-418"/>
         <location line="+430"/>
         <source>New File...</source>
-        <translation type="unfinished">新建文件...</translation>
+        <translation>新建文件...</translation>
     </message>
     <message>
         <location line="-427"/>
         <location line="+429"/>
         <source>New Directory...</source>
-        <translation type="unfinished">新建目录...</translation>
+        <translation>新建目录...</translation>
     </message>
     <message>
         <location line="-377"/>
         <source>Double-click to open file/folder, right click for alternatives</source>
-        <translation type="unfinished">双击打开文件/文件夹,右键单击以找到候选项</translation>
+        <translation>双击打开文件/文件夹,右键单击以找到候选项</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>Rename...</source>
-        <translation type="unfinished">重命名...</translation>
+        <translation>重命名...</translation>
     </message>
     <message>
         <location line="+304"/>
         <source>Open</source>
-        <translation type="unfinished">打开</translation>
+        <translation>打开</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Open in System File Explorer</source>
-        <translation type="unfinished">在系统文件浏览器中打开</translation>
+        <translation>在系统文件浏览器中打开</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Open in Text Editor</source>
-        <translation type="unfinished">在文本编辑器中打开</translation>
+        <translation>在文本编辑器中打开</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Copy Selection to Clipboard</source>
-        <translation type="unfinished">复制选中到剪贴板</translation>
+        <translation>复制选中到剪贴板</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Run</source>
-        <translation type="unfinished">运行</translation>
+        <translation>运行</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Load Data</source>
-        <translation type="unfinished">载入数据</translation>
+        <translation>载入数据</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Set Current Directory</source>
-        <translation type="unfinished">设置当前目录</translation>
+        <translation>设置当前目录</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Add to Path</source>
-        <translation type="unfinished">添加到路径</translation>
+        <translation>添加到路径</translation>
     </message>
     <message>
         <location line="+2"/>
         <location line="+7"/>
         <source>Selected Directories</source>
-        <translation type="unfinished">所选目录</translation>
+        <translation>所选目录</translation>
     </message>
     <message>
         <location line="-5"/>
         <location line="+7"/>
         <source>Selected Directories and Subdirectories</source>
-        <translation type="unfinished">所选目录和子目录</translation>
+        <translation>所选目录和子目录</translation>
     </message>
     <message>
         <location line="-4"/>
         <source>Remove from Path</source>
-        <translation type="unfinished">从路径中移除</translation>
+        <translation>从路径中移除</translation>
     </message>
     <message>
         <location line="+15"/>
         <source>Delete...</source>
-        <translation type="unfinished">删除...</translation>
+        <translation>删除...</translation>
     </message>
     <message>
         <location line="+132"/>
         <location line="+11"/>
         <location line="+17"/>
         <source>Delete file/directory</source>
-        <translation type="unfinished">删除文件/目录</translation>
+        <translation>删除文件/目录</translation>
     </message>
     <message>
         <location line="-27"/>
         <source>Are you sure you want to delete all %1 selected files?
 </source>
-        <translation type="unfinished">您确定要删除所有 %1 选择的文件吗?
+        <translation>您确定要删除所有 %1 选择的文件吗?
 </translation>
     </message>
     <message>
         <location line="+11"/>
         <source>Are you sure you want to delete
 </source>
-        <translation type="unfinished">您确定要删除
+        <translation>您确定要删除
 </translation>
     </message>
     <message>
         <location line="+17"/>
         <source>Can not delete a directory that is not empty</source>
-        <translation type="unfinished">不能删除一个非空目录</translation>
+        <translation>不能删除一个非空目录</translation>
     </message>
     <message>
         <location line="+12"/>
         <source>Deletion error</source>
-        <translation type="unfinished">删除错误</translation>
+        <translation>删除错误</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Could not delete file &quot;%1&quot;.</source>
-        <translation type="unfinished">无法删除文件 &quot;%1&quot;。</translation>
+        <translation>无法删除文件 &quot;%1&quot;。</translation>
     </message>
     <message>
         <location line="+186"/>
         <source>Set directory of file browser</source>
-        <translation type="unfinished">设置目录到文件浏览器</translation>
+        <translation>设置目录到文件浏览器</translation>
     </message>
     <message>
         <location line="+25"/>
         <source>Create File</source>
-        <translation type="unfinished">创建文件</translation>
+        <translation>创建文件</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -2335,18 +2347,18 @@
 </source>
         <comment>String ends with 
 !</comment>
-        <translation type="unfinished">创建文件于
+        <translation>创建文件于
 </translation>
     </message>
     <message>
         <location line="+2"/>
         <source>New File.txt</source>
-        <translation type="unfinished">新建文件.txt</translation>
+        <translation>新建文件.txt</translation>
     </message>
     <message>
         <location line="+15"/>
         <source>Create Directory</source>
-        <translation type="unfinished">创建目录</translation>
+        <translation>创建目录</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -2354,13 +2366,13 @@
 </source>
         <comment>String ends with 
 !</comment>
-        <translation type="unfinished">创建目录于
+        <translation>创建文件夹于
 </translation>
     </message>
     <message>
         <location line="+2"/>
         <source>New Directory</source>
-        <translation type="unfinished">新建目录</translation>
+        <translation>新建目录</translation>
     </message>
 </context>
 <context>
@@ -2368,22 +2380,22 @@
     <message>
         <location filename="../src/welcome-wizard.cc" line="+307"/>
         <source>Enjoy!</source>
-        <translation type="unfinished">尽情享受吧!</translation>
+        <translation>尽情享受吧!</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Previous</source>
-        <translation type="unfinished">上一个</translation>
+        <translation>上一个</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Finish</source>
-        <translation type="unfinished">完成</translation>
+        <translation>完成</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <location line="+7"/>
@@ -2392,7 +2404,11 @@
 &lt;p&gt;If you encounter problems, there are a number of ways to get help, including commercial support options, a discussion board, a wiki, and other community-based support channels.
 You can find more information about each of these by visiting &lt;a href=&quot;https://octave.org/support.html&quot;&gt;https://octave.org/support.html&lt;/a&gt; (opens in external browser).&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;body&gt;
+&lt;p&gt;希望 Octave 作为一款工具能对您有所帮助。&lt;/p&gt;
+&lt;p&gt;如果遇到问题,可以通过多种方式获得帮助,包括商业支持选项、讨论板、维基和其他基于社区的支持渠道。
+您可以访问 &lt;a href=&quot;https://octave.org/support.html&quot;&gt;https://octave.org/support.html&lt;/a&gt; 了解更多相关信息(在外部浏览器中打开)。&lt;/p&gt;
+&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
         <location line="+21"/>
@@ -2405,7 +2421,15 @@
 &lt;li&gt;Open the documentation browser of the Octave GUI with the help menu&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;head&gt;
+&lt;/head&gt;&lt;body&gt;
+&lt;p&gt;有关 Octave 的更多信息&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;访问 &lt;a href=&quot;https://octave.org&quot;&gt;https://octave.org&lt;/a&gt; (在外部浏览器中打开)&lt;/li&gt;
+&lt;li&gt;获取在线文档 &lt;a href=&quot;https://www.gnu.org/software/octave/doc/interpreter/index.html&quot;&gt;HTML&lt;/a&gt; 或者 &lt;a href=&quot;https://www.gnu.org/software/octave/octave.pdf&quot;&gt;PDF&lt;/a&gt; 格式 (在外部浏览器中打开链接)&lt;/li&gt;
+&lt;li&gt;在帮助菜单中打开 Octave 图形用户界面的文档浏览器&lt;/li&gt;
+&lt;/ul&gt;
+&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
 </context>
 <context>
@@ -2413,117 +2437,117 @@
     <message>
         <location filename="../src/m-editor/find-dialog.cc" line="+93"/>
         <source>Editor: Find and Replace</source>
-        <translation type="unfinished">编辑器:查找和替换</translation>
+        <translation>编辑器:查找和替换</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>&amp;Find:</source>
-        <translation type="unfinished"></translation>
+        <translation>查找 (&amp;F):</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Enter search text</source>
-        <translation type="unfinished"></translation>
+        <translation>输入搜索文本</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Re&amp;place:</source>
-        <translation type="unfinished"></translation>
+        <translation>替换 (&amp;P):</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Enter replacement text</source>
-        <translation type="unfinished"></translation>
+        <translation>输入替换文本</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>Match &amp;case</source>
-        <translation type="unfinished">匹配大小写 (&amp;C)</translation>
+        <translation>匹配大小写 (&amp;C)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Search from &amp;start</source>
-        <translation type="unfinished">从开头搜索 (&amp;S)</translation>
+        <translation>从开头搜索 (&amp;S)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>&amp;Wrap while searching</source>
-        <translation type="unfinished">搜索时循环 (&amp;W)</translation>
+        <translation>搜索时循环 (&amp;W)</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Find &amp;Next</source>
-        <translation type="unfinished"></translation>
+        <translation>查找下一处 (&amp;N)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Find Pre&amp;vious</source>
-        <translation type="unfinished"></translation>
+        <translation>查找上一处 (&amp;V)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>&amp;Replace</source>
-        <translation type="unfinished">替换 (&amp;R)</translation>
+        <translation>替换 (&amp;R)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Replace &amp;All</source>
-        <translation type="unfinished">替换全部 (&amp;A)</translation>
+        <translation>替换全部 (&amp;A)</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>&amp;More...</source>
-        <translation type="unfinished">更多 (&amp;M) ...</translation>
+        <translation>更多 (&amp;M) ...</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>&amp;Whole words</source>
-        <translation type="unfinished">整个单词 (&amp;W)</translation>
+        <translation>整个单词 (&amp;W)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Regular &amp;expressions</source>
-        <translation type="unfinished"></translation>
+        <translation>正则表达式 (&amp;E)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Search &amp;backward</source>
-        <translation type="unfinished">反向搜索 (&amp;B)</translation>
+        <translation>反向搜索 (&amp;B)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Search se&amp;lection</source>
-        <translation type="unfinished">搜索选中 (&amp;L)</translation>
+        <translation>搜索选中 (&amp;L)</translation>
     </message>
     <message>
         <location line="+171"/>
         <source>Search from end</source>
-        <translation type="unfinished">从后向前搜索</translation>
+        <translation>从后向前搜索</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Search from start</source>
-        <translation type="unfinished">从前往后搜索</translation>
+        <translation>从前往后搜索</translation>
     </message>
     <message>
         <location line="+306"/>
         <source>Replace Result</source>
-        <translation type="unfinished">替换结果</translation>
+        <translation>替换结果</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>%1 items replaced</source>
-        <translation type="unfinished">%1 项已替换</translation>
+        <translation>%1 项已替换</translation>
     </message>
     <message>
         <location line="+14"/>
         <source>Find Result</source>
-        <translation type="unfinished">查找结果</translation>
+        <translation>查找结果</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>No more matches found</source>
-        <translation type="unfinished">没有更多匹配项</translation>
+        <translation>没有更多匹配项</translation>
     </message>
 </context>
 <context>
@@ -2531,139 +2555,139 @@
     <message>
         <location filename="../src/find-files-dialog.cc" line="+61"/>
         <source>Find Files</source>
-        <translation type="unfinished">查找文件</translation>
+        <translation>查找文件</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Named:</source>
-        <translation type="unfinished">名称:</translation>
+        <translation>名称:</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Enter the filename search expression</source>
-        <translation type="unfinished">输入文件名搜索表达式</translation>
+        <translation>输入文件名搜索表达式</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Start in:</source>
-        <translation type="unfinished">从:</translation>
+        <translation>从:</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Enter the start directory</source>
-        <translation type="unfinished">进入初始目录</translation>
+        <translation>进入初始目录</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Browse...</source>
-        <translation type="unfinished">浏览...</translation>
+        <translation>浏览...</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Browse for start directory</source>
-        <translation type="unfinished">从初始目录浏览</translation>
+        <translation>从初始目录浏览</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Search subdirectories</source>
-        <translation type="unfinished">搜索子目录</translation>
+        <translation>搜索子目录</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Search recursively through directories for matching files</source>
-        <translation type="unfinished">递归搜索目录以查找匹配文件</translation>
+        <translation>递归搜索目录以查找匹配文件</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Include directory names</source>
-        <translation type="unfinished">包含的目录名</translation>
+        <translation>包含的目录名</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Include matching directories in search results</source>
-        <translation type="unfinished">在搜索结果中包含匹配目录</translation>
+        <translation>在搜索结果中包含匹配目录</translation>
     </message>
     <message>
         <location line="+3"/>
         <location line="+12"/>
         <source>Ignore case</source>
-        <translation type="unfinished"></translation>
+        <translation>忽略大小写</translation>
     </message>
     <message>
         <location line="-11"/>
         <location line="+12"/>
         <source>Perform case insensitive match</source>
-        <translation type="unfinished"></translation>
+        <translation>执行大小写不敏感匹配</translation>
     </message>
     <message>
         <location line="-9"/>
         <source>Contains text:</source>
-        <translation type="unfinished">包含文本:</translation>
+        <translation>包含文本:</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Include only files containing specified text in search results</source>
-        <translation type="unfinished"></translation>
+        <translation>在搜索结果中只显示包含指定文本的文件</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Text to match</source>
-        <translation type="unfinished">要匹配的文字</translation>
+        <translation>要匹配的文字</translation>
     </message>
     <message>
         <location line="+16"/>
         <source>Search results</source>
-        <translation type="unfinished">搜索结果</translation>
+        <translation>搜索结果</translation>
     </message>
     <message>
         <location line="+16"/>
         <source>Idle.</source>
-        <translation type="unfinished">空闲。</translation>
+        <translation>空闲。</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Find</source>
-        <translation type="unfinished">查找</translation>
+        <translation>查找</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Start search for matching files</source>
-        <translation type="unfinished">开始查找匹配文件</translation>
+        <translation>开始查找匹配文件</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Stop</source>
-        <translation type="unfinished">停止</translation>
+        <translation>停止</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Stop search</source>
-        <translation type="unfinished"></translation>
+        <translation>停止搜索</translation>
     </message>
     <message>
         <location line="+16"/>
         <source>Filename/Location</source>
-        <translation type="unfinished"></translation>
+        <translation>文件名/位置</translation>
     </message>
     <message>
         <location line="+17"/>
         <source>File contents</source>
-        <translation type="unfinished">文件内容</translation>
+        <translation>文件内容</translation>
     </message>
     <message>
         <location line="+98"/>
         <source>Searching...</source>
-        <translation type="unfinished">正在搜索...</translation>
+        <translation>正在搜索...</translation>
     </message>
     <message>
         <location line="+22"/>
         <source>%1 match (es)</source>
-        <translation type="unfinished">%1 个匹配</translation>
+        <translation>%1 个匹配</translation>
     </message>
     <message>
         <location line="+17"/>
         <source>Set search directory</source>
-        <translation type="unfinished">设置搜索目录</translation>
+        <translation>设置搜索目录</translation>
     </message>
 </context>
 <context>
@@ -2671,12 +2695,12 @@
     <message>
         <location filename="../src/find-files-model.cc" line="+93"/>
         <source>Filename</source>
-        <translation type="unfinished">文件名</translation>
+        <translation>文件名</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Directory</source>
-        <translation type="unfinished">目录</translation>
+        <translation>目录</translation>
     </message>
 </context>
 <context>
@@ -2689,12 +2713,17 @@
 %3
 
 Octave GUI must be closed now.</source>
-        <translation type="unfinished"></translation>
+        <translation>错误 %1 创建设置文件
+%2
+请确保您拥有以下文件的读写权限
+%3
+
+现在必须关闭 Octave GUI。</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Octave Critical Error</source>
-        <translation type="unfinished">Octave 严重错误</translation>
+        <translation>Octave 严重错误</translation>
     </message>
 </context>
 <context>
@@ -2702,52 +2731,52 @@
     <message>
         <location filename="../src/history-dock-widget.cc" line="+53"/>
         <source>Browse and search the command history.</source>
-        <translation type="unfinished">浏览并搜索命令历史。</translation>
+        <translation>浏览并搜索命令历史。</translation>
     </message>
     <message>
         <location line="+101"/>
         <source>Copy</source>
-        <translation type="unfinished">复制</translation>
+        <translation>复制</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Evaluate</source>
-        <translation type="unfinished">评估</translation>
+        <translation>评估</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Create script</source>
-        <translation type="unfinished">创建脚本</translation>
+        <translation>创建脚本</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Hide filter</source>
-        <translation type="unfinished">隐藏过滤器</translation>
+        <translation>隐藏过滤器</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show filter</source>
-        <translation type="unfinished">显示过滤器</translation>
+        <translation>显示过滤器</translation>
     </message>
     <message>
         <location line="+121"/>
         <source>Double-click a command to transfer it to the Command Window.</source>
-        <translation type="unfinished">双击命令以将其移至命令窗口。</translation>
+        <translation>双击命令以将其移至命令窗口。</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Enter text to filter the command history</source>
-        <translation type="unfinished">输入文本以过滤命令历史记录</translation>
+        <translation>输入文本以过滤命令历史记录</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>Filter</source>
-        <translation type="unfinished">过滤器</translation>
+        <translation>过滤器</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Command History</source>
-        <translation type="unfinished">命令历史</translation>
+        <translation>命令历史</translation>
     </message>
 </context>
 <context>
@@ -2755,17 +2784,17 @@
     <message>
         <location filename="../src/welcome-wizard.cc" line="-185"/>
         <source>Welcome to Octave!</source>
-        <translation type="unfinished">欢迎来到 Octave!</translation>
+        <translation>欢迎来到 Octave!</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Next</source>
-        <translation type="unfinished">下一个</translation>
+        <translation>下一个</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <location line="+9"/>
@@ -2774,7 +2803,7 @@
 Click &apos;Next&apos; to create a configuration file and launch Octave.&lt;/p&gt;
 &lt;p&gt;The configuration file is stored in&lt;br&gt;%1.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished">&lt;html&gt;&lt;body&gt;
+        <translation>&lt;html&gt;&lt;body&gt;
 &lt;p&gt;看起来这是你第一次在这台电脑上使用 Octave 图形界面。
 点击 &apos;下一步&apos; 以创建一个配置文件并启动 Octave .&lt;/p&gt;
 &lt;p&gt;配置文件存放于&lt;br&gt;%1.&lt;/p&gt;
@@ -2786,12 +2815,12 @@
     <message>
         <location filename="../src/octave-dock-widget.cc" line="+82"/>
         <source>Undock Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>悬浮组件</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>Close Widget</source>
-        <translation type="unfinished">关闭组件</translation>
+        <translation>关闭组件</translation>
     </message>
 </context>
 <context>
@@ -2799,393 +2828,394 @@
     <message>
         <location filename="../src/main-window.cc" line="+155"/>
         <source>Profiler</source>
-        <translation type="unfinished">性能探查器</translation>
+        <translation>性能探查器</translation>
     </message>
     <message>
         <location line="+347"/>
         <source>Octave</source>
-        <translation type="unfinished">Octave</translation>
+        <translation>Octave</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Are you sure you want to exit Octave?</source>
-        <translation type="unfinished">确定要退出 Octave 吗?</translation>
+        <translation>确定要退出 Octave 吗?</translation>
     </message>
     <message>
         <location line="+152"/>
         <source>Save Workspace As</source>
-        <translation type="unfinished">工作区另存为</translation>
+        <translation>工作区另存为</translation>
     </message>
     <message>
         <location line="+28"/>
         <source>Load Workspace</source>
-        <translation type="unfinished">导入工作区</translation>
+        <translation>导入工作区</translation>
     </message>
     <message>
         <location line="+199"/>
         <location line="+1667"/>
         <source>About Octave</source>
-        <translation type="unfinished">关于 Octave</translation>
+        <translation>关于 Octave</translation>
     </message>
     <message>
         <location line="-1479"/>
         <location line="+1555"/>
         <source>Browse directories</source>
-        <translation type="unfinished">浏览目录</translation>
+        <translation>浏览目录</translation>
     </message>
     <message>
         <location line="-1295"/>
         <source>Octave Files (*.m);;All Files (*)</source>
-        <translation type="unfinished">Octave 文件 (*.m);;所有文件 (*)</translation>
+        <translation>Octave 文件 (*.m);;所有文件 (*)</translation>
     </message>
     <message>
         <location line="+39"/>
         <source>New Function</source>
-        <translation type="unfinished">新建函数</translation>
+        <translation>新建函数</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>New function name:
 </source>
-        <translation type="unfinished">新建函数的名称:
+        <translation>新建函数的名称:
 </translation>
     </message>
     <message>
         <location line="+62"/>
         <source>%1 is a built-in, compiled, or inline
 function and can not be edited.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 是内置的、编译的或
+内联的函数,因此不能编辑。</translation>
     </message>
     <message>
         <location line="+41"/>
         <source>Can not find function %1</source>
-        <translation type="unfinished">找不到函数 %1</translation>
+        <translation>找不到函数 %1</translation>
     </message>
     <message>
         <location line="+21"/>
         <source>Octave Editor</source>
-        <translation type="unfinished">Octave 编辑器</translation>
+        <translation>Octave 编辑器</translation>
     </message>
     <message>
         <location line="+709"/>
         <source>&amp;File</source>
-        <translation type="unfinished">文件 (&amp;F)</translation>
+        <translation>文件 (&amp;F)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Open...</source>
-        <translation type="unfinished">打开...</translation>
+        <translation>打开...</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Open an existing file in editor</source>
-        <translation type="unfinished">在编辑器中打开一个已存在的文件</translation>
+        <translation>在编辑器中打开一个已存在的文件</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Load Workspace...</source>
-        <translation type="unfinished">导入工作区...</translation>
+        <translation>导入工作区...</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Save Workspace As...</source>
-        <translation type="unfinished">工作区另存为...</translation>
+        <translation>工作区另存为...</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Exit</source>
-        <translation type="unfinished">退出</translation>
+        <translation>退出</translation>
     </message>
     <message>
         <location line="+19"/>
         <source>New</source>
-        <translation type="unfinished">新建</translation>
+        <translation>新建</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>New Script</source>
-        <translation type="unfinished">新建脚本</translation>
+        <translation>新建脚本</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>New Function...</source>
-        <translation type="unfinished">新建函数...</translation>
+        <translation>新建函数...</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>New Figure</source>
-        <translation type="unfinished">新建图表</translation>
+        <translation>新建图表</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Edit</source>
-        <translation type="unfinished">编辑 (&amp;E)</translation>
+        <translation>编辑 (&amp;E)</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Undo</source>
-        <translation type="unfinished">撤销</translation>
+        <translation>撤销</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Copy</source>
-        <translation type="unfinished">复制</translation>
+        <translation>复制</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Paste</source>
-        <translation type="unfinished">粘贴</translation>
+        <translation>粘贴</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Select All</source>
-        <translation type="unfinished">全选</translation>
+        <translation>全选</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Clear Clipboard</source>
-        <translation type="unfinished">清空剪贴板</translation>
+        <translation>清空剪贴板</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Find Files...</source>
-        <translation type="unfinished">查找文件...</translation>
+        <translation>查找文件...</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Clear Command Window</source>
-        <translation type="unfinished">清空命令窗口</translation>
+        <translation>清空命令窗口</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Clear Command History</source>
-        <translation type="unfinished">清空命令历史</translation>
+        <translation>清空命令历史</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Clear Workspace</source>
-        <translation type="unfinished">清空工作区</translation>
+        <translation>清空工作区</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Set Path...</source>
-        <translation type="unfinished"></translation>
+        <translation>设置路径...</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Preferences...</source>
-        <translation type="unfinished">首选项...</translation>
+        <translation>首选项...</translation>
     </message>
     <message>
         <location line="+54"/>
         <source>De&amp;bug</source>
-        <translation type="unfinished">调试 (&amp;B)</translation>
+        <translation>调试 (&amp;B)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Step</source>
-        <translation type="unfinished"></translation>
+        <translation>单步跳过</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Step In</source>
-        <translation type="unfinished">单步执行</translation>
+        <translation>单步执行</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Step Out</source>
-        <translation type="unfinished"></translation>
+        <translation>单步停止</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Continue</source>
-        <translation type="unfinished">继续</translation>
+        <translation>继续</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Quit Debug Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>退出调试模式</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>&amp;Tools</source>
-        <translation type="unfinished">工具 (&amp;T)</translation>
+        <translation>工具 (&amp;T)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Start &amp;Profiler Session</source>
-        <translation type="unfinished">启动性能分析会话 (&amp;P)</translation>
+        <translation>启动性能分析会话 (&amp;P)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>&amp;Resume Profiler Session</source>
-        <translation type="unfinished">恢复性能分析会话 (&amp;R)</translation>
+        <translation>恢复性能分析会话 (&amp;R)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>&amp;Stop Profiler</source>
-        <translation type="unfinished">停止性能分析 (&amp;S)</translation>
+        <translation>停止性能分析 (&amp;S)</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>&amp;Show Profiler Data</source>
-        <translation type="unfinished"></translation>
+        <translation>显示性能分析数据 (&amp;S)</translation>
     </message>
     <message>
         <location line="+50"/>
         <source>&amp;Window</source>
-        <translation type="unfinished">窗口 (&amp;W)</translation>
+        <translation>窗口 (&amp;W)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Command Window</source>
-        <translation type="unfinished">显示命令窗口</translation>
+        <translation>显示命令窗口</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Command History</source>
-        <translation type="unfinished">显示命令历史</translation>
+        <translation>显示命令历史</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show File Browser</source>
-        <translation type="unfinished">显示文件浏览器</translation>
+        <translation>显示文件浏览器</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Workspace</source>
-        <translation type="unfinished">显示工作区</translation>
+        <translation>显示工作区</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Editor</source>
-        <translation type="unfinished">显示编辑器</translation>
+        <translation>显示编辑器</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Documentation</source>
-        <translation type="unfinished">显示文档</translation>
+        <translation>显示文档</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Variable Editor</source>
-        <translation type="unfinished">显示变量编辑器</translation>
+        <translation>显示变量编辑器</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Command Window</source>
-        <translation type="unfinished">命令窗口</translation>
+        <translation>命令窗口</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Command History</source>
-        <translation type="unfinished">命令历史</translation>
+        <translation>命令历史</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>File Browser</source>
-        <translation type="unfinished">文件浏览器</translation>
+        <translation>文件浏览器</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Workspace</source>
-        <translation type="unfinished">工作区</translation>
+        <translation>工作区</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Editor</source>
-        <translation type="unfinished">编辑器</translation>
+        <translation>编辑器</translation>
     </message>
     <message>
         <location line="+3"/>
         <location line="+44"/>
         <source>Documentation</source>
-        <translation type="unfinished">文档</translation>
+        <translation>文档</translation>
     </message>
     <message>
         <location line="-41"/>
         <source>Variable Editor</source>
-        <translation type="unfinished">变量编辑器</translation>
+        <translation>变量编辑器</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Previous Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>上一个组件</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Reset Default Window Layout</source>
-        <translation type="unfinished"></translation>
+        <translation>重置为默认窗口布局</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;Help</source>
-        <translation type="unfinished">帮助 (&amp;H)</translation>
+        <translation>帮助 (&amp;H)</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Report Bug</source>
-        <translation type="unfinished"></translation>
+        <translation>缺陷报告</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Octave Packages</source>
-        <translation type="unfinished">Octave 软件包</translation>
+        <translation>Octave 软件包</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Get Involved</source>
-        <translation type="unfinished"></translation>
+        <translation>参与 Octave</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Donate to Octave</source>
-        <translation type="unfinished">捐赠 Octave</translation>
+        <translation>捐赠 Octave</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>On Disk</source>
-        <translation type="unfinished">本地</translation>
+        <translation>本地</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Online</source>
-        <translation type="unfinished">在线</translation>
+        <translation>在线</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>&amp;News</source>
-        <translation type="unfinished">新闻 (&amp;N)</translation>
+        <translation>新闻 (&amp;N)</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Release Notes</source>
-        <translation type="unfinished">发行注记</translation>
+        <translation>发行注记</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>Community News</source>
-        <translation type="unfinished">社区新闻</translation>
+        <translation>社区新闻</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>Toolbar</source>
-        <translation type="unfinished">工具栏</translation>
+        <translation>工具栏</translation>
     </message>
     <message>
         <location line="+21"/>
         <source>Enter directory name</source>
-        <translation type="unfinished">输入目录名</translation>
+        <translation>输入目录名</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>Current Directory: </source>
-        <translation type="unfinished">当前目录: </translation>
+        <translation>当前目录: </translation>
     </message>
     <message>
         <location line="+7"/>
         <source>One directory up</source>
-        <translation type="unfinished">向上一级</translation>
+        <translation>向上一级</translation>
     </message>
 </context>
 <context>
@@ -3204,7 +3234,7 @@
 &lt;/p&gt;
 &lt;p&gt;
 &lt;small&gt;&lt;em&gt;&amp;mdash; The Octave Developers, </source>
-        <translation type="unfinished">&lt;html&gt;
+        <translation>&lt;html&gt;
 &lt;body&gt;
 &lt;p&gt;
 Octave的社区新闻源似乎无法连接。
@@ -3232,7 +3262,19 @@
 &lt;/p&gt;
 &lt;p&gt;
 &lt;small&gt;&lt;em&gt;&amp;mdash; The Octave Developers, </source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;
+连接到网络以显示最新 Octave 社区新闻的功能已被禁用。
+&lt;/p&gt;
+&lt;p&gt;
+当您连接到互联网时,请访问
+&lt;a href=&quot;https://octave.org/community-news.html&quot;&gt;https://octave.org/community-news.html&lt;/a&gt;
+获取最新新闻(在外部浏览器中打开链接)
+或在 Octave 的网络设置选项卡中启用新闻的网络连接。
+&lt;/p&gt;
+&lt;p&gt;
+&lt;small&gt;&lt;em&gt;&amp;mdash; Octave 开发者, </translation>
     </message>
 </context>
 <context>
@@ -3240,17 +3282,17 @@
     <message>
         <location filename="../src/octave-dock-widget.cc" line="+144"/>
         <source>Hide Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>隐藏组件</translation>
     </message>
     <message>
         <location line="+81"/>
         <source>Dock Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>停靠组件</translation>
     </message>
     <message>
         <location line="+58"/>
         <source>Undock Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>悬浮组件</translation>
     </message>
 </context>
 <context>
@@ -3258,27 +3300,27 @@
     <message>
         <location filename="../src/m-editor/octave-qscintilla.cc" line="+299"/>
         <source>Help on</source>
-        <translation type="unfinished">开启帮助</translation>
+        <translation>开启帮助</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Documentation on</source>
-        <translation type="unfinished">开启文档</translation>
+        <translation>开启文档</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Edit</source>
-        <translation type="unfinished">编辑</translation>
+        <translation>编辑</translation>
     </message>
     <message>
         <location line="+15"/>
         <source>dbstop if ...</source>
-        <translation type="unfinished">dbstop 如果 ...</translation>
+        <translation>dbstop 如果 ...</translation>
     </message>
     <message>
         <location line="+524"/>
         <source>Octave Editor</source>
-        <translation type="unfinished">Octave 编辑器</translation>
+        <translation>Octave 编辑器</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -3287,7 +3329,7 @@
 %1
 
 &quot;Run Selection&quot; requires temporary files.</source>
-        <translation type="unfinished">创建临时文件失败。
+        <translation>创建临时文件失败。
 确保您具有对temp目录的写权限。目录
 %1
 
@@ -3296,7 +3338,7 @@
     <message>
         <location line="+306"/>
         <source>Press &apos;%1&apos; to replace all occurrences of &apos;%2&apos; with &apos;%3&apos;.</source>
-        <translation type="unfinished">按&apos;%1将所有出现的&apos;%2&apos;替换为&apos;%3&apos;。</translation>
+        <translation>按&apos;%1将所有出现的&apos;%2&apos;替换为&apos;%3&apos;。</translation>
     </message>
 </context>
 <context>
@@ -3304,7 +3346,7 @@
     <message>
         <location filename="../src/m-editor/octave-txt-lexer.cc" line="+41"/>
         <source>Default</source>
-        <translation type="unfinished">默认</translation>
+        <translation>默认</translation>
     </message>
 </context>
 <context>
@@ -3314,50 +3356,52 @@
         <location line="+5"/>
         <location line="+2"/>
         <source>Create</source>
-        <translation type="unfinished">创建</translation>
+        <translation>创建</translation>
     </message>
     <message>
         <location line="-7"/>
         <location line="+31"/>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <location line="-28"/>
         <source>File
 %1
 does not exist. Do you want to create it?</source>
-        <translation type="unfinished"></translation>
+        <translation>文件
+%1
+不存在。您想创建它吗?</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Octave Editor</source>
-        <translation type="unfinished">Octave 编辑器</translation>
+        <translation>Octave 编辑器</translation>
     </message>
     <message>
         <location line="+19"/>
         <source>The file %1 does not exist in the load path.  To run or debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.</source>
-        <translation type="unfinished">加载路径中文件 %1 不存在。如要运行或调试正在编辑的函数,请转到目录 %2 或添加其至加载路径。</translation>
+        <translation>加载路径中文件 %1 不存在。如要运行或调试正在编辑的函数,请转到目录 %2 或添加其至加载路径。</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>The file %1 is shadowed by a file with the same name in the load path. To run or debug the function you are editing, change to the directory %2.</source>
-        <translation type="unfinished">文件 %1 被加载路径中同名文件隐藏。 如要运行或调试正在编辑的函数,请切换到目录 %2 。</translation>
+        <translation>文件 %1 被加载路径中同名文件隐藏。 如要运行或调试正在编辑的函数,请切换到目录 %2 。</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Change Directory or Add Directory to Load Path</source>
-        <translation type="unfinished">切换目录或添加目录到载入路径</translation>
+        <translation>切换目录或添加目录到载入路径</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>&amp;Change Directory</source>
-        <translation type="unfinished">切换目录 (&amp;C)</translation>
+        <translation>切换目录 (&amp;C)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>&amp;Add Directory to Load Path</source>
-        <translation type="unfinished">添加目录到载入路径 (&amp;A)</translation>
+        <translation>添加目录到载入路径 (&amp;A)</translation>
     </message>
 </context>
 <context>
@@ -3365,17 +3409,17 @@
     <message>
         <location filename="../src/release-notes.cc" line="+84"/>
         <source>The release notes file &apos;%1&apos; is empty.</source>
-        <translation type="unfinished">发行注记文件 &apos;%1&apos; 是空的。</translation>
+        <translation>发行注记文件 &apos;%1&apos; 是空的。</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>The release notes file &apos;%1&apos; cannot be read.</source>
-        <translation type="unfinished">发行注记文件 &apos;%1&apos; 无法读取。</translation>
+        <translation>发行注记文件 &apos;%1&apos; 无法读取。</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>Octave Release Notes</source>
-        <translation type="unfinished">Octave 发行注记</translation>
+        <translation>Octave 发行注记</translation>
     </message>
 </context>
 <context>
@@ -3383,82 +3427,82 @@
     <message>
         <location filename="../src/set-path-dialog.cc" line="+64"/>
         <source>Set Path</source>
-        <translation type="unfinished">设置路径</translation>
+        <translation>设置路径</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>All changes take effect immediately.</source>
-        <translation type="unfinished">所有改动立即生效。</translation>
+        <translation>所有改动立即生效。</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Add Directory...</source>
-        <translation type="unfinished"></translation>
+        <translation>添加目录...</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Single Directory</source>
-        <translation type="unfinished"></translation>
+        <translation>单个目录</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Directory With Subdirectories</source>
-        <translation type="unfinished"></translation>
+        <translation>目录及其子目录</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Move to Top</source>
-        <translation type="unfinished">置顶</translation>
+        <translation>置顶</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Move to Bottom</source>
-        <translation type="unfinished">置底</translation>
+        <translation>置底</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Move Up</source>
-        <translation type="unfinished">上移</translation>
+        <translation>上移</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Move Down</source>
-        <translation type="unfinished">下移</translation>
+        <translation>下移</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Remove</source>
-        <translation type="unfinished">移除</translation>
+        <translation>移除</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Reload</source>
-        <translation type="unfinished">刷新</translation>
+        <translation>刷新</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Save</source>
-        <translation type="unfinished">保存</translation>
+        <translation>保存</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Revert</source>
-        <translation type="unfinished">撤销</translation>
+        <translation>撤销</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Revert Last Change</source>
-        <translation type="unfinished">撤销最后改动</translation>
+        <translation>撤销最后改动</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Revert All Changes</source>
-        <translation type="unfinished">撤销所有改动</translation>
+        <translation>撤销所有改动</translation>
     </message>
     <message>
         <location line="+90"/>
         <source>Open Directory</source>
-        <translation type="unfinished">打开目录</translation>
+        <translation>打开目录</translation>
     </message>
 </context>
 <context>
@@ -3498,12 +3542,12 @@
     <message>
         <location line="+1"/>
         <source>Selection</source>
-        <translation type="unfinished"></translation>
+        <translation>选择</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cursor</source>
-        <translation type="unfinished"></translation>
+        <translation>光标</translation>
     </message>
     <message>
         <location filename="../src/gui-preferences-ve.h" line="+1"/>
@@ -3518,7 +3562,7 @@
     <message>
         <location line="+1"/>
         <source>Alternating Background</source>
-        <translation type="unfinished"></translation>
+        <translation>备选背景色</translation>
     </message>
     <message>
         <location filename="../src/gui-preferences-ws.h" line="+75"/>
@@ -3550,19 +3594,23 @@
         <source>Switch to a second set of colors.
 Useful for defining light/dark modes.
 Discards non-applied current changes!</source>
-        <translation type="unfinished"></translation>
+        <translation>切换到第二组颜色。
+可用于定义明/暗模式。
+丢弃未应用的当前更改!</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>Reload the default colors,
 depends on currently selected mode.</source>
-        <translation type="unfinished"></translation>
+        <translation>重新载入默认颜色,
+取决于当前选择的模式。</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Reload the default style values,
 depends on currently selected mode.</source>
-        <translation type="unfinished"></translation>
+        <translation>重新载入默认样式值,
+取决于当前选择的模式。</translation>
     </message>
     <message>
         <location line="-13"/>
@@ -3577,104 +3625,104 @@
     <message>
         <location filename="../src/settings-dialog.cc" line="-945"/>
         <source>Loading current preferences ... </source>
-        <translation type="unfinished"></translation>
+        <translation>加载当前首选项 ... </translation>
     </message>
     <message>
         <location line="+43"/>
         <location line="+6"/>
         <location line="+1049"/>
         <source>System setting</source>
-        <translation type="unfinished">系统设置</translation>
+        <translation>系统设置</translation>
     </message>
     <message>
         <location line="-795"/>
         <source>IBeam Cursor</source>
-        <translation type="unfinished">IBeam 光标</translation>
+        <translation>IBeam 光标</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Block Cursor</source>
-        <translation type="unfinished">块状光标</translation>
+        <translation>块状光标</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Underline Cursor</source>
-        <translation type="unfinished">下划线光标</translation>
+        <translation>下划线光标</translation>
     </message>
     <message>
         <location line="+176"/>
         <source>Color of highlighted current line (magenta (255,0,255) for automatic color)</source>
-        <translation type="unfinished">当前行高亮显示的颜色 (品红 (255,0,255) 为自动颜色)</translation>
+        <translation>当前行高亮显示的颜色 (品红 (255,0,255) 为自动颜色)</translation>
     </message>
     <message>
         <location line="+63"/>
         <source>Set Octave Startup Directory</source>
-        <translation type="unfinished">设置 Octave 启动目录</translation>
+        <translation>设置 Octave 启动目录</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Set File Browser Startup Directory</source>
-        <translation type="unfinished">设置文件浏览器启动目录</translation>
+        <translation>设置文件浏览器启动目录</translation>
     </message>
     <message>
         <location line="+30"/>
         <source>Applying preferences ... </source>
-        <translation type="unfinished"></translation>
+        <translation>应用首选项 ... </translation>
     </message>
     <message>
         <location line="+86"/>
         <location line="+21"/>
         <location line="+1069"/>
         <source>Failed to open %1 as Octave shortcut file</source>
-        <translation type="unfinished">无法将 %1 作为 Octave 快捷键文件打开</translation>
+        <translation>无法将 %1 作为 Octave 快捷键文件打开</translation>
     </message>
     <message>
         <location line="-428"/>
         <source>Enable attribute colors</source>
-        <translation type="unfinished">启用属性颜色</translation>
+        <translation>启用属性颜色</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Hide tool tips</source>
-        <translation type="unfinished"></translation>
+        <translation>隐藏工具提示</translation>
     </message>
     <message>
         <location line="+360"/>
         <source>Import shortcuts from file...</source>
-        <translation type="unfinished">从文件导入快捷键...</translation>
+        <translation>从文件导入快捷键...</translation>
     </message>
     <message>
         <location line="+1"/>
         <location line="+6"/>
         <source>Octave Shortcut Files (*.osc);;All Files (*)</source>
-        <translation type="unfinished">Octave 快捷键文件 (*.osc);;全部文件 (*)</translation>
+        <translation>Octave 快捷键文件 (*.osc);;全部文件 (*)</translation>
     </message>
     <message>
         <location line="-1"/>
         <source>Export shortcuts to file...</source>
-        <translation type="unfinished">导出快捷键到文件...</translation>
+        <translation>导出快捷键到文件...</translation>
     </message>
     <message>
         <location line="+31"/>
         <source>Overwriting Shortcuts</source>
-        <translation type="unfinished">覆盖快捷键</translation>
+        <translation>覆盖快捷键</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>You are about to overwrite all shortcuts.
 Would you like to save the current shortcut set or cancel the action?</source>
-        <translation type="unfinished">您即将覆盖所有快捷键。
+        <translation>您即将覆盖所有快捷键。
 你想保存当前的快捷键设置还是取消操作?</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Don&apos;t save</source>
-        <translation type="unfinished">不保存 (&apos;t)</translation>
+        <translation>不保存 (&apos;t)</translation>
     </message>
     <message>
         <location line="+33"/>
         <source>Octave GUI preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>Octave 图形用户界面首选项</translation>
     </message>
 </context>
 <context>
@@ -3682,22 +3730,22 @@
     <message>
         <location filename="../src/welcome-wizard.cc" line="+45"/>
         <source>Community News</source>
-        <translation type="unfinished">社区新闻</translation>
+        <translation>社区新闻</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Previous</source>
-        <translation type="unfinished">上一个</translation>
+        <translation>上一个</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Next</source>
-        <translation type="unfinished">下一个</translation>
+        <translation>下一个</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
     </message>
     <message>
         <location line="+7"/>
@@ -3707,7 +3755,7 @@
 &lt;p&gt;You may also view the news by selecting the &quot;Community News&quot; item in the &quot;Help&quot; menu, or by visiting
 &lt;a href=&quot;https://octave.org/community-news.html&quot;&gt;https://octave.org/community-news.html&lt;/a&gt;.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished">&lt;html&gt;&lt;body&gt;
+        <translation>&lt;html&gt;&lt;body&gt;
 &lt;p&gt;当 Octave GUI 启动的时候,它会检查 Octave 站点上关于 Octave 社区的新闻和信息。
 每天会检查一次新闻消息,而只有在你上次阅读新闻起有新的新闻出现时才会弹出。&lt;/p&gt;
 &lt;p&gt;你也可以点选 GUI 上的 &quot;社区新闻&quot; 以直接阅读新闻,或直接访问:
@@ -3720,7 +3768,10 @@
 &lt;/head&gt;&lt;body&gt;
 &lt;p&gt;Allow Octave to connect to the Octave web site when it starts in order to display current news and information about the Octave community.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;head&gt;
+&lt;/head&gt;&lt;body&gt;
+&lt;p&gt;允许 Octave 在启动时连接到 Octave 网站,以便显示有关 Octave 社区的最新新闻和信息。&lt;/p&gt;
+&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
 </context>
 <context>
@@ -3728,45 +3779,46 @@
     <message>
         <location filename="../src/shortcuts-tree-widget.cc" line="+162"/>
         <source>Enter New Shortcut</source>
-        <translation type="unfinished"></translation>
+        <translation>输入新快捷键</translation>
     </message>
     <message>
         <location line="+7"/>
         <source>Enter custom shortcut
 Action: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>输入自定义快捷方式
+动作:%1</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Enter shortcut by typing it</source>
-        <translation type="unfinished"></translation>
+        <translation>键盘键入来输入快捷键</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Add Shift modifier
 (allows one to enter number keys)</source>
-        <translation type="unfinished">添加Shift修改器
+        <translation>添加Shift修改器
 (允许输入数字键)</translation>
     </message>
     <message>
         <location line="+17"/>
         <source>Actual Shortcut</source>
-        <translation type="unfinished"></translation>
+        <translation>实际快捷键</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>Default Shortcut</source>
-        <translation type="unfinished"></translation>
+        <translation>默认快捷键</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>Set to default</source>
-        <translation type="unfinished">设为默认值</translation>
+        <translation>设为默认值</translation>
     </message>
     <message>
         <location line="+104"/>
         <source>Double Shortcut</source>
-        <translation type="unfinished">双快捷键</translation>
+        <translation>双快捷键</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -3775,7 +3827,11 @@
 is already used for the action
   &quot;%2&quot;.
 Do you want to use the shortcut and remove it from the previous action?</source>
-        <translation type="unfinished"></translation>
+        <translation>选择的快捷方式
+  &quot;%1&quot;
+已用于动作
+  &quot;%2&quot;.
+您想使用该快捷键并将其从之前的动作中删除吗?</translation>
     </message>
 </context>
 <context>
@@ -3783,96 +3839,96 @@
     <message>
         <location line="+33"/>
         <source>Global</source>
-        <translation type="unfinished">全局</translation>
+        <translation>全局</translation>
     </message>
     <message>
         <location line="+4"/>
         <location line="+49"/>
         <source>File Menu</source>
-        <translation type="unfinished">文件菜单</translation>
+        <translation>文件菜单</translation>
     </message>
     <message>
         <location line="-46"/>
         <location line="+49"/>
         <source>Edit Menu</source>
-        <translation type="unfinished">编辑菜单</translation>
+        <translation>编辑菜单</translation>
     </message>
     <message>
         <location line="-46"/>
         <location line="+52"/>
         <source>Debug Menu</source>
-        <translation type="unfinished">调试菜单</translation>
+        <translation>调试菜单</translation>
     </message>
     <message>
         <location line="-49"/>
         <source>Tools Menu</source>
-        <translation type="unfinished">工具菜单</translation>
+        <translation>工具菜单</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Window Menu</source>
-        <translation type="unfinished">窗口菜单</translation>
+        <translation>窗口菜单</translation>
     </message>
     <message>
         <location line="+3"/>
         <location line="+49"/>
         <source>Help Menu</source>
-        <translation type="unfinished">帮助目录</translation>
+        <translation>帮助目录</translation>
     </message>
     <message>
         <location line="-46"/>
         <source>News Menu</source>
-        <translation type="unfinished">新闻目录</translation>
+        <translation>新闻目录</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Handling of Dock Widgets</source>
-        <translation type="unfinished">停靠组件相关操作</translation>
+        <translation>停靠组件相关操作</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Tab Handling in Dock Widgets</source>
-        <translation type="unfinished">停靠组件中标签页的相关操作</translation>
+        <translation>停靠组件中标签页的相关操作</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Find &amp; Replace in Dock Widgets</source>
-        <translation type="unfinished">停靠组件中的查找和替换</translation>
+        <translation>停靠组件中的查找和替换</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Zooming in Editor and Documentation</source>
-        <translation type="unfinished">编辑器和文档的缩放</translation>
+        <translation>编辑器和文档的缩放</translation>
     </message>
     <message>
         <location line="+15"/>
         <source>Editor</source>
-        <translation type="unfinished">编辑器</translation>
+        <translation>编辑器</translation>
     </message>
     <message>
         <location line="+10"/>
         <source>View Menu</source>
-        <translation type="unfinished">视图菜单</translation>
+        <translation>视图菜单</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Run Menu</source>
-        <translation type="unfinished">运行菜单</translation>
+        <translation>运行菜单</translation>
     </message>
     <message>
         <location line="+13"/>
         <source>Documentation Viewer</source>
-        <translation type="unfinished">文档浏览器</translation>
+        <translation>文档浏览器</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Browser</source>
-        <translation type="unfinished">浏览</translation>
+        <translation>浏览</translation>
     </message>
     <message>
         <location line="+109"/>
         <source>item %1 not found in shortcut settings dialog</source>
-        <translation type="unfinished"></translation>
+        <translation>在快捷键设置对话框中找不到 %1 项</translation>
     </message>
 </context>
 <context>
@@ -3880,7 +3936,7 @@
     <message>
         <location filename="../src/terminal-dock-widget.cc" line="+107"/>
         <source>Command Window</source>
-        <translation type="unfinished">命令窗口</translation>
+        <translation>命令窗口</translation>
     </message>
 </context>
 <context>
@@ -3888,27 +3944,27 @@
     <message>
         <location filename="../src/variable-editor.cc" line="+177"/>
         <source>Dock Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>停靠组件</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Variable Editor: </source>
-        <translation type="unfinished">变量编辑器: </translation>
+        <translation>变量编辑器: </translation>
     </message>
     <message>
         <location line="+15"/>
         <source>Undock Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>解除组件停靠</translation>
     </message>
     <message>
         <location line="+22"/>
         <source>Restore geometry</source>
-        <translation type="unfinished">恢复窗口几何形状</translation>
+        <translation>恢复窗口几何形状</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Redock</source>
-        <translation type="unfinished">重新停靠</translation>
+        <translation>重新停靠</translation>
     </message>
 </context>
 <context>
@@ -3916,96 +3972,96 @@
     <message>
         <location line="+918"/>
         <source>Variable Editor</source>
-        <translation type="unfinished">变量编辑器</translation>
+        <translation>变量编辑器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Edit variables.</source>
-        <translation type="unfinished">编辑变量。</translation>
+        <translation>编辑变量。</translation>
     </message>
     <message>
         <location line="+553"/>
         <source>Variable Editor Toolbar</source>
-        <translation type="unfinished">变量编辑器工具栏</translation>
+        <translation>变量编辑器工具栏</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Save</source>
-        <translation type="unfinished">保存</translation>
+        <translation>保存</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Save variable to a file</source>
-        <translation type="unfinished">保存变量到文件</translation>
+        <translation>保存变量到文件</translation>
     </message>
     <message>
         <location line="+3"/>
         <location line="+5"/>
         <location line="+6"/>
         <source>Save in format ...</source>
-        <translation type="unfinished">保存为格式...</translation>
+        <translation>保存为格式...</translation>
     </message>
     <message>
         <location line="-5"/>
         <source>Save variable to a file in different format</source>
-        <translation type="unfinished">以不同的格式保存变量到文件</translation>
+        <translation>以不同的格式保存变量到文件</translation>
     </message>
     <message>
         <location line="+20"/>
         <source>Cut</source>
-        <translation type="unfinished">剪切</translation>
+        <translation>剪切</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Cut data to clipboard</source>
-        <translation type="unfinished">剪切到剪切板</translation>
+        <translation>剪切到剪切板</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Copy</source>
-        <translation type="unfinished">复制</translation>
+        <translation>复制</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Copy data to clipboard</source>
-        <translation type="unfinished">复制到剪切板</translation>
+        <translation>复制到剪切板</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Paste</source>
-        <translation type="unfinished">粘贴</translation>
+        <translation>粘贴</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Paste clipboard into variable data</source>
-        <translation type="unfinished">粘贴剪切板到变量中</translation>
+        <translation>粘贴剪切板到变量</translation>
     </message>
     <message>
         <location line="+8"/>
         <location line="+6"/>
         <location line="+7"/>
         <source>Plot</source>
-        <translation type="unfinished">绘制</translation>
+        <translation>绘制</translation>
     </message>
     <message>
         <location line="-11"/>
         <source>Plot Selected Data</source>
-        <translation type="unfinished">绘制所选数据</translation>
+        <translation>绘制所选数据</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Plot selected data</source>
-        <translation type="unfinished">绘制所选数据</translation>
+        <translation>绘制所选数据</translation>
     </message>
     <message>
         <location line="+17"/>
         <source>Up</source>
-        <translation type="unfinished">上</translation>
+        <translation>上</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Go one level up in variable hierarchy</source>
-        <translation type="unfinished">前往变量的上一级结点</translation>
+        <translation>前往变量的上一级节点</translation>
     </message>
 </context>
 <context>
@@ -4013,7 +4069,7 @@
     <message>
         <location line="-1260"/>
         <source>Save Variable %1 As</source>
-        <translation type="unfinished">保存变量 %1 为</translation>
+        <translation>保存变量 %1 为</translation>
     </message>
 </context>
 <context>
@@ -4021,57 +4077,57 @@
     <message>
         <location line="+142"/>
         <source>Cut</source>
-        <translation type="unfinished">剪切</translation>
+        <translation>剪切</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Copy</source>
-        <translation type="unfinished">复制</translation>
+        <translation>复制</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Paste</source>
-        <translation type="unfinished">粘贴</translation>
+        <translation>粘贴</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Clear</source>
-        <translation type="unfinished">清空</translation>
+        <translation>清空</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Delete</source>
-        <translation type="unfinished">删除</translation>
+        <translation>删除</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Variable from Selection</source>
-        <translation type="unfinished">所选变量</translation>
+        <translation>从所选区域创建变量</translation>
     </message>
     <message>
         <location line="+18"/>
         <source>Transpose</source>
-        <translation type="unfinished">转置</translation>
+        <translation>转置</translation>
     </message>
     <message>
         <location line="+56"/>
         <source> columns</source>
-        <translation type="unfinished"> 列</translation>
+        <translation> 列</translation>
     </message>
     <message>
         <location line="+0"/>
         <source> column</source>
-        <translation type="unfinished"> 列</translation>
+        <translation> 列</translation>
     </message>
     <message>
         <location line="+52"/>
         <source> rows</source>
-        <translation type="unfinished"> 行</translation>
+        <translation> 行</translation>
     </message>
     <message>
         <location line="+0"/>
         <source> row</source>
-        <translation type="unfinished"> 行</translation>
+        <translation> 行</translation>
     </message>
 </context>
 <context>
@@ -4079,7 +4135,7 @@
     <message>
         <location filename="../src/welcome-wizard.cc" line="-190"/>
         <source>Welcome to GNU Octave</source>
-        <translation type="unfinished">欢迎使用 GNU Octave</translation>
+        <translation>欢迎使用 GNU Octave</translation>
     </message>
 </context>
 <context>
@@ -4087,38 +4143,38 @@
     <message>
         <location filename="../src/workspace-model.cc" line="+49"/>
         <source>Name</source>
-        <translation type="unfinished">名称</translation>
+        <translation>名称</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Class</source>
-        <translation type="unfinished">类</translation>
+        <translation>类</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Dimension</source>
-        <translation type="unfinished">维度</translation>
+        <translation>维度</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Value</source>
-        <translation type="unfinished">值</translation>
+        <translation>值</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Attribute</source>
-        <translation type="unfinished">属性</translation>
+        <translation>属性</translation>
     </message>
     <message>
         <location line="+83"/>
         <source>Right click to copy, rename, or display</source>
-        <translation type="unfinished">右击以复制,重命名或显示</translation>
+        <translation>右击以复制,重命名或显示</translation>
     </message>
     <message>
         <location line="+30"/>
         <location line="+2"/>
         <source>complex</source>
-        <translation type="unfinished">复杂度</translation>
+        <translation>复杂度</translation>
     </message>
 </context>
 <context>
@@ -4146,67 +4202,67 @@
     <message>
         <location filename="../src/workspace-view.cc" line="+57"/>
         <source>Workspace</source>
-        <translation type="unfinished">工作区</translation>
+        <translation>工作区</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>View the variables in the active workspace.</source>
-        <translation type="unfinished">显示当前活动工作区的变量。</translation>
+        <translation>显示当前活动工作区的变量。</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Enter text to filter the workspace</source>
-        <translation type="unfinished">输入文本筛选工作区</translation>
+        <translation>输入文本以筛选工作区</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Filter</source>
-        <translation type="unfinished">过滤器</translation>
+        <translation>过滤器</translation>
     </message>
     <message>
         <location line="+122"/>
         <source>View the variables in the active workspace.&lt;br&gt;</source>
-        <translation type="unfinished">显示当前活动工作区的变量。&lt;br&gt;</translation>
+        <translation>显示当前活动工作区的变量。&lt;br&gt;</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Colors for variable attributes:</source>
-        <translation type="unfinished">变量属性的颜色:</translation>
+        <translation>变量属性的颜色:</translation>
     </message>
     <message>
         <location line="+156"/>
         <source>Open in Variable Editor</source>
-        <translation type="unfinished">在变量编辑器中打开</translation>
+        <translation>在变量编辑器中打开</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Copy name</source>
-        <translation type="unfinished">复制变量名</translation>
+        <translation>复制变量名</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Copy value</source>
-        <translation type="unfinished">复制变量值</translation>
+        <translation>复制变量值</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Rename</source>
-        <translation type="unfinished">重命名</translation>
+        <translation>重命名</translation>
     </message>
     <message>
         <location line="+8"/>
         <source>Only top-level symbols may be renamed</source>
-        <translation type="unfinished">只有顶级符号可能会被重命名</translation>
+        <translation>只有顶级符号可能会被重命名</translation>
     </message>
     <message>
         <location line="+22"/>
         <source>Hide filter</source>
-        <translation type="unfinished">隐藏过滤器</translation>
+        <translation>隐藏过滤器</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show filter</source>
-        <translation type="unfinished">显示过滤器</translation>
+        <translation>显示过滤器</translation>
     </message>
 </context>
 <context>
@@ -4631,7 +4687,7 @@
         <location line="+323"/>
         <location filename="../src/ui-settings-dialog.h" line="+16"/>
         <source>Blinking cursor</source>
-        <translation type="unfinished"></translation>
+        <translation>闪烁光标</translation>
     </message>
     <message>
         <location line="+57"/>
@@ -4817,7 +4873,7 @@
         <location line="+907"/>
         <location filename="../src/ui-settings-dialog.h" line="+68"/>
         <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Ok&lt;/span&gt; - close dialog and apply settings&lt;br&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Apply - &lt;/span&gt;apply settings but leave dialog open&lt;br&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Cancel - &lt;/span&gt;close dialog and discard changes not yet applied&lt;br&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Reset -&lt;/span&gt; reload settings discarding changes not yet applied&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;确定&lt;/span&gt; - 关闭对话框并应用设置&lt;br&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;应用 - &lt;/span&gt;应用设置但保持对话框打开&lt;br&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;取消 - &lt;/span&gt;关闭对话框并丢弃未应用的修改&lt;br&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;重置 -&lt;/span&gt; 重新加载设置并丢弃未应用的修改&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
         <location line="-2367"/>
@@ -5087,7 +5143,7 @@
         <location line="+29"/>
         <location filename="../src/ui-settings-dialog.h" line="+9"/>
         <source>Edit a shortcut by double-clicking in Actual column</source>
-        <translation type="unfinished"></translation>
+        <translation>双击“当前”列以编辑快捷方式</translation>
     </message>
     <message>
         <location line="+61"/>
@@ -5137,616 +5193,616 @@
     <message>
         <location filename="../src/gui-preferences-sc.cc" line="+42"/>
         <source>Undock/Dock Widget</source>
-        <translation type="unfinished">悬浮/停靠 组件</translation>
+        <translation>悬浮/停靠 组件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Close Widget</source>
-        <translation type="unfinished">关闭组件</translation>
+        <translation>关闭组件</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>New File</source>
-        <translation type="unfinished">新建文件</translation>
+        <translation>新建文件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>New Function</source>
-        <translation type="unfinished">新建函数</translation>
+        <translation>新建函数</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>New Figure</source>
-        <translation type="unfinished">新建图表</translation>
+        <translation>新建图表</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Open File</source>
-        <translation type="unfinished">打开文件</translation>
+        <translation>打开文件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Load Workspace</source>
-        <translation type="unfinished">导入工作区</translation>
+        <translation>导入工作区</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Save Workspace As</source>
-        <translation type="unfinished">工作区另存为</translation>
+        <translation>工作区另存为</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Exit Octave</source>
-        <translation type="unfinished">退出 Octave</translation>
+        <translation>退出 Octave</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Copy</source>
-        <translation type="unfinished">复制</translation>
+        <translation>复制</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Paste</source>
-        <translation type="unfinished">粘贴</translation>
+        <translation>粘贴</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Undo</source>
-        <translation type="unfinished">撤销</translation>
+        <translation>撤销</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Select All</source>
-        <translation type="unfinished">全选</translation>
+        <translation>全选</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Clear Clipboard</source>
-        <translation type="unfinished">清空剪贴板</translation>
+        <translation>清空剪贴板</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Find in Files</source>
-        <translation type="unfinished">在文件中查找</translation>
+        <translation>在文件中查找</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Clear Command Window</source>
-        <translation type="unfinished">清空命令窗口</translation>
+        <translation>清空命令窗口</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Clear Command History</source>
-        <translation type="unfinished">清空命令历史</translation>
+        <translation>清空命令历史</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Clear Workspace</source>
-        <translation type="unfinished">清空工作区</translation>
+        <translation>清空工作区</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Set Path</source>
-        <translation type="unfinished">设置路径</translation>
+        <translation>设置路径</translation>
     </message>
     <message>
         <location line="+1"/>
         <location line="+118"/>
         <source>Preferences</source>
-        <translation type="unfinished">首选项</translation>
+        <translation>首选项</translation>
     </message>
     <message>
         <location line="-115"/>
         <source>Step</source>
-        <translation type="unfinished"></translation>
+        <translation>单步跳过</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Step In</source>
-        <translation type="unfinished">单步执行</translation>
+        <translation>单步执行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Step Out</source>
-        <translation type="unfinished"></translation>
+        <translation>单步停止</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Continue</source>
-        <translation type="unfinished">继续</translation>
+        <translation>继续</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Quit Debug Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>退出调试模式</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Start/Stop Profiler Session</source>
-        <translation type="unfinished">启动/停止性能分析会话</translation>
+        <translation>启动/停止性能分析会话</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Resume Profiler Session</source>
-        <translation type="unfinished">恢复性能分析会话</translation>
+        <translation>恢复性能分析会话</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Profile Data</source>
-        <translation type="unfinished">显示性能分析数据</translation>
+        <translation>显示性能分析数据</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Show Command Window</source>
-        <translation type="unfinished">显示命令窗口</translation>
+        <translation>显示命令窗口</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Command History</source>
-        <translation type="unfinished">显示命令历史</translation>
+        <translation>显示命令历史</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show File Browser</source>
-        <translation type="unfinished">显示文件浏览器</translation>
+        <translation>显示文件浏览器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Workspace</source>
-        <translation type="unfinished">显示工作区</translation>
+        <translation>显示工作区</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Editor</source>
-        <translation type="unfinished">显示编辑器</translation>
+        <translation>显示编辑器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Documentation</source>
-        <translation type="unfinished">显示文档</translation>
+        <translation>显示文档</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Variable Editor</source>
-        <translation type="unfinished">显示变量编辑器</translation>
+        <translation>显示变量编辑器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Command Window</source>
-        <translation type="unfinished">命令窗口</translation>
+        <translation>命令窗口</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Command History</source>
-        <translation type="unfinished">命令历史</translation>
+        <translation>命令历史</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>File Browser</source>
-        <translation type="unfinished">文件浏览器</translation>
+        <translation>文件浏览器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Workspace</source>
-        <translation type="unfinished">工作区</translation>
+        <translation>工作区</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Editor</source>
-        <translation type="unfinished">编辑器</translation>
+        <translation>编辑器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Documentation</source>
-        <translation type="unfinished">文档</translation>
+        <translation>文档</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Variable Editor</source>
-        <translation type="unfinished">变量编辑器</translation>
+        <translation>变量编辑器</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Previous Widget</source>
-        <translation type="unfinished"></translation>
+        <translation>上一个组件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Reset Default Window Layout</source>
-        <translation type="unfinished"></translation>
+        <translation>重置为默认窗口布局</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show On-disk Documentation</source>
-        <translation type="unfinished">显示磁盘中的文档</translation>
+        <translation>显示磁盘中的文档</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Online Documentation</source>
-        <translation type="unfinished">显示在线文档</translation>
+        <translation>显示在线文档</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Report Bug</source>
-        <translation type="unfinished"></translation>
+        <translation>缺陷报告</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Octave Packages</source>
-        <translation type="unfinished">Octave 软件包</translation>
+        <translation>Octave 软件包</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Contribute to Octave</source>
-        <translation type="unfinished">贡献 Octave</translation>
+        <translation>参与 Octave</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Octave Developer Resources</source>
-        <translation type="unfinished">Octave 开发者资源</translation>
+        <translation>Octave 开发者资源</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>About Octave</source>
-        <translation type="unfinished">关于 Octave</translation>
+        <translation>关于 Octave</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Release Notes</source>
-        <translation type="unfinished">发行注记</translation>
+        <translation>发行注记</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Community News</source>
-        <translation type="unfinished">社区新闻</translation>
+        <translation>社区新闻</translation>
     </message>
     <message>
         <location line="+5"/>
         <source>Close Tab</source>
-        <translation type="unfinished">关闭标签页</translation>
+        <translation>关闭标签页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Close All Tabs</source>
-        <translation type="unfinished">关闭所有标签页</translation>
+        <translation>关闭所有标签页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Close Other Tabs</source>
-        <translation type="unfinished">关闭其他标签页</translation>
+        <translation>关闭其他标签页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Switch to Left Tab</source>
-        <translation type="unfinished">切换到左侧标签页</translation>
+        <translation>切换到左侧标签页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Switch to Right Tab</source>
-        <translation type="unfinished">切换到右侧标签页</translation>
+        <translation>切换到右侧标签页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Move Tab Left</source>
-        <translation type="unfinished">向左移动标签页</translation>
+        <translation>向左移动标签页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Move Tab Right</source>
-        <translation type="unfinished">向右移动标签页</translation>
+        <translation>向右移动标签页</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Zoom In</source>
-        <translation type="unfinished">放大</translation>
+        <translation>放大</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Zoom Out</source>
-        <translation type="unfinished">缩小</translation>
+        <translation>缩小</translation>
     </message>
     <message>
         <location line="+2"/>
         <location line="+2"/>
         <source>Zoom Normal</source>
-        <translation type="unfinished">缩放正常</translation>
+        <translation>恢复缩放比例</translation>
     </message>
     <message>
         <location line="+6"/>
         <source>Edit Function</source>
-        <translation type="unfinished">编辑函数</translation>
+        <translation>编辑函数</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Save File</source>
-        <translation type="unfinished">保存文件</translation>
+        <translation>保存文件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Save File As</source>
-        <translation type="unfinished">另存文件为</translation>
+        <translation>另存文件为</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Print</source>
-        <translation type="unfinished">打印</translation>
+        <translation>打印</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Redo</source>
-        <translation type="unfinished">撤销</translation>
+        <translation>撤销</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cut</source>
-        <translation type="unfinished">剪切</translation>
+        <translation>剪切</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Find and Replace</source>
-        <translation type="unfinished">查找并替换</translation>
+        <translation>查找并替换</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Find Next</source>
-        <translation type="unfinished">查找下一个</translation>
+        <translation>查找下一个</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Find Previous</source>
-        <translation type="unfinished">查找上一个</translation>
+        <translation>查找上一个</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Delete to Start of Word</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到单词开始</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Delete to End of Word</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到单词结尾</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Delete to Start of Line</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到行的开始</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Delete to End of Line</source>
-        <translation type="unfinished"></translation>
+        <translation>删除到行的结尾</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Delete Line</source>
-        <translation type="unfinished">删除行</translation>
+        <translation>删除行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Copy Line</source>
-        <translation type="unfinished">复制行</translation>
+        <translation>复制行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Cut Line</source>
-        <translation type="unfinished">剪切行</translation>
+        <translation>剪切行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Duplicate Selection/Line</source>
-        <translation type="unfinished"></translation>
+        <translation>重复选择的文本/行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Transpose Line</source>
-        <translation type="unfinished">交换行</translation>
+        <translation>交换行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Completion List</source>
-        <translation type="unfinished">显示补全列表</translation>
+        <translation>显示补全列表</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Comment Selection</source>
-        <translation type="unfinished">注释选择的文本</translation>
+        <translation>注释选择的文本</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Uncomment Selection</source>
-        <translation type="unfinished">取消选择的文本的注释</translation>
+        <translation>取消选择的文本的注释</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Comment Selection (Choosing String)</source>
-        <translation type="unfinished">注释所选(正在选择字符串)</translation>
+        <translation>注释所选(正在选择字符串)</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Uppercase Selection</source>
-        <translation type="unfinished">将选择的文本大写</translation>
+        <translation>将选择的文本大写</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Lowercase Selection</source>
-        <translation type="unfinished">将选择的文本小写</translation>
+        <translation>将选择的文本小写</translation>
     </message>
     <message>
         <location line="+3"/>
         <location line="+3"/>
         <source>Indent Selection Rigidly</source>
-        <translation type="unfinished">严格缩进所选</translation>
+        <translation>严格向右缩进所选</translation>
     </message>
     <message>
         <location line="-2"/>
         <location line="+3"/>
         <source>Unindent Selection Rigidly</source>
-        <translation type="unfinished">严格向左缩进</translation>
+        <translation>严格向左缩进所选</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Indent Code</source>
-        <translation type="unfinished">缩进代码</translation>
+        <translation>缩进代码</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Convert Line Endings to Windows</source>
-        <translation type="unfinished">将行结束符转换为Windows样式</translation>
+        <translation>将行结束符转换为Windows样式</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Convert Line Endings to Unix</source>
-        <translation type="unfinished">将行结束符转换为Unix样式</translation>
+        <translation>将行结束符转换为Unix样式</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Convert Line Endings to Mac</source>
-        <translation type="unfinished">将行结束符转换为Mac样式</translation>
+        <translation>将行结束符转换为Mac样式</translation>
     </message>
     <message>
         <location line="+2"/>
         <source>Goto Line</source>
-        <translation type="unfinished">转到行</translation>
+        <translation>跳转到行</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Move to Matching Brace</source>
-        <translation type="unfinished">移至匹配的括号</translation>
+        <translation>移至匹配的括号</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Select to Matching Brace</source>
-        <translation type="unfinished"></translation>
+        <translation>选择匹配的括号间的文本</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Toggle Bookmark</source>
-        <translation type="unfinished">切换书签</translation>
+        <translation>切换书签</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Next Bookmark</source>
-        <translation type="unfinished">下一个书签</translation>
+        <translation>下一个书签</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Previous Bookmark</source>
-        <translation type="unfinished">上一个书签</translation>
+        <translation>上一个书签</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Remove All Bookmark</source>
-        <translation type="unfinished">移除所有书签</translation>
+        <translation>移除所有书签</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Styles Preferences</source>
-        <translation type="unfinished">样式首选项</translation>
+        <translation>样式首选项</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Show Line Numbers</source>
-        <translation type="unfinished">显示行号</translation>
+        <translation>显示行号</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Whitespace Characters</source>
-        <translation type="unfinished">显示空白字符</translation>
+        <translation>显示空白字符</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Line Endings</source>
-        <translation type="unfinished">显示行结束符</translation>
+        <translation>显示行结束符</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Indentation Guides</source>
-        <translation type="unfinished">显示缩进对齐线</translation>
+        <translation>显示缩进对齐线</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Long Line Marker</source>
-        <translation type="unfinished">显示长线标记</translation>
+        <translation>显示长文本行标记</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Toolbar</source>
-        <translation type="unfinished">显示工具栏</translation>
+        <translation>显示工具栏</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Statusbar</source>
-        <translation type="unfinished">显示状态栏</translation>
+        <translation>显示状态栏</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Show Horizontal Scrollbar</source>
-        <translation type="unfinished">显示水平滚动条</translation>
+        <translation>显示水平滚动条</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Sort Tabs Alphabetically</source>
-        <translation type="unfinished">按字母顺序排序标签页</translation>
+        <translation>按字母顺序排序标签页</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Toggle Breakpoint</source>
-        <translation type="unfinished">切换断点</translation>
+        <translation>开关断点</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Next Breakpoint</source>
-        <translation type="unfinished">下一个断点</translation>
+        <translation>下一个断点</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Previous Breakpoint</source>
-        <translation type="unfinished">上一个断点</translation>
+        <translation>上一个断点</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Remove All Breakpoints</source>
-        <translation type="unfinished">移除所有断点</translation>
+        <translation>移除所有断点</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Run File</source>
-        <translation type="unfinished">运行文件</translation>
+        <translation>运行文件</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Run Selection</source>
-        <translation type="unfinished">运行所选</translation>
+        <translation>运行所选</translation>
     </message>
     <message>
         <location line="+3"/>
         <source>Help on Keyword</source>
-        <translation type="unfinished">关键字帮助</translation>
+        <translation>关键字帮助</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Document on Keyword</source>
-        <translation type="unfinished">关键字文档</translation>
+        <translation>关键字文档</translation>
     </message>
     <message>
         <location line="+4"/>
         <source>Go to Homepage</source>
-        <translation type="unfinished">回到主页</translation>
+        <translation>回到主页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Go Back one Page</source>
-        <translation type="unfinished">回退一页</translation>
+        <translation>回退一页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Go Forward one Page</source>
-        <translation type="unfinished">前进一页</translation>
+        <translation>前进一页</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>Bookmark this Page</source>
-        <translation type="unfinished">为此标签页添加标签</translation>
+        <translation>为此标签页添加标签</translation>
     </message>
 </context>
 </TS>
--- a/libinterp/corefcn/Cell.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/Cell.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 
 class octave_value_list;
 
-class
-OCTINTERP_API
-Cell : public Array<octave_value>
+class OCTINTERP_API Cell : public Array<octave_value>
 {
 public:
 
--- a/libinterp/corefcn/__betainc__.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/__betainc__.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -79,7 +79,7 @@
 
       // Initialize variables used in algorithm
       static const float tiny = math::exp2 (-50.0f);
-      static const float eps = std::numeric_limits<float>::epsilon ();
+      static constexpr float eps = std::numeric_limits<float>::epsilon ();
       float xj, x2, y, Cj, Dj, aj, bj, Deltaj, alpha_j, beta_j;
       int j, maxit;
       maxit = 200;
@@ -150,7 +150,7 @@
 
       // Initialize variables used in algorithm
       static const double tiny = math::exp2 (-100.0);
-      static const double eps = std::numeric_limits<double>::epsilon ();
+      static constexpr double eps = std::numeric_limits<double>::epsilon ();
       double xj, x2, y, Cj, Dj, aj, bj, Deltaj, alpha_j, beta_j;
       int j, maxit;
       maxit = 200;
--- a/libinterp/corefcn/__expint__.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/__expint__.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -65,7 +65,7 @@
 
       // Initialize variables used in algorithm
       static const FloatComplex tiny = math::exp2 (-50.0f);
-      static const float eps = std::numeric_limits<float>::epsilon ();
+      static constexpr float eps = std::numeric_limits<float>::epsilon ();
       const FloatComplex cone (1.0, 0.0);
       const FloatComplex czero (0.0, 0.0);
       const int maxit = 100;
@@ -123,7 +123,7 @@
 
       // Initialize variables used in algorithm
       static const Complex tiny = math::exp2 (-100.0);
-      static const double eps = std::numeric_limits<double>::epsilon ();
+      static constexpr double eps = std::numeric_limits<double>::epsilon ();
       const Complex cone (1.0, 0.0);
       const Complex czero (0.0, 0.0);
       const int maxit = 200;
--- a/libinterp/corefcn/__gammainc__.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/__gammainc__.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -71,7 +71,7 @@
 
       // Initialize variables used in algorithm
       static const float tiny = math::exp2 (-50.0f);
-      static const float eps = std::numeric_limits<float>::epsilon();
+      static constexpr float eps = std::numeric_limits<float>::epsilon();
       float y, Cj, Dj, bj, aj, Deltaj;
       int j, maxit;
       maxit = 200;
@@ -126,7 +126,7 @@
 
       // Initialize variables used in algorithm
       static const double tiny = math::exp2 (-100.0);
-      static const double eps = std::numeric_limits<double>::epsilon();
+      static constexpr double eps = std::numeric_limits<double>::epsilon();
       double y, Cj, Dj, bj, aj, Deltaj;
       int j, maxit;
       maxit = 200;
--- a/libinterp/corefcn/__magick_read__.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/__magick_read__.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -176,8 +176,7 @@
   return output;
 }
 
-class
-image_region
+class image_region
 {
 public:
 
--- a/libinterp/corefcn/auto-shlib.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/auto-shlib.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 // time.  When deriving new classes, you can either use it as a field or
 // as a parent (with multiple inheritance).
 
-class
-OCTINTERP_API
-auto_shlib : public dynamic_library
+class OCTINTERP_API auto_shlib : public dynamic_library
 {
 public:
 
--- a/libinterp/corefcn/base-text-renderer.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/base-text-renderer.h	Thu Dec 21 17:48:59 2023 -0500
@@ -40,8 +40,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-base_text_renderer : public text_processor
+class base_text_renderer : public text_processor
 {
 public:
 
--- a/libinterp/corefcn/c-file-ptr-stream.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/c-file-ptr-stream.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,8 +37,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-c_file_ptr_buf : public std::streambuf
+class c_file_ptr_buf : public std::streambuf
 {
 public:
 
@@ -106,8 +105,7 @@
 // FIXME: the following three classes could probably share some code...
 
 template <typename STREAM_T, typename FILE_T, typename BUF_T>
-class
-c_file_ptr_stream : public STREAM_T
+class c_file_ptr_stream : public STREAM_T
 {
 public:
 
@@ -148,8 +146,7 @@
 
 #if defined (HAVE_ZLIB)
 
-class
-c_zfile_ptr_buf : public std::streambuf
+class c_zfile_ptr_buf : public std::streambuf
 {
 public:
 
--- a/libinterp/corefcn/call-stack.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/call-stack.h	Thu Dec 21 17:48:59 2023 -0500
@@ -54,9 +54,7 @@
 class vm;
 #endif
 
-class
-OCTINTERP_API
-call_stack
+class OCTINTERP_API call_stack
 {
 public:
 
--- a/libinterp/corefcn/dlmread.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/dlmread.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -47,10 +47,10 @@
 #include "ovl.h"
 #include "utils.h"
 
-static const octave_idx_type idx_max
+static constexpr octave_idx_type idx_max
   = std::numeric_limits<octave_idx_type>::max () - 1;
 
-static const double idx_max_dbl = double (idx_max);
+static constexpr double idx_max_dbl = double (idx_max);
 
 static bool
 read_cell_spec (std::istream& is, octave_idx_type& row, octave_idx_type& col)
--- a/libinterp/corefcn/dynamic-ld.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/dynamic-ld.h	Thu Dec 21 17:48:59 2023 -0500
@@ -39,13 +39,11 @@
 
 class interpreter;
 
-class
-dynamic_loader
+class dynamic_loader
 {
 private:
 
-  class
-  shlibs_list
+  class shlibs_list
   {
   public:
 
--- a/libinterp/corefcn/event-manager.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/event-manager.h	Thu Dec 21 17:48:59 2023 -0500
@@ -288,9 +288,7 @@
 //! This class provides thread-safe communication between the
 //! interpreter and a GUI.
 
-class
-OCTINTERP_API
-event_manager
+class OCTINTERP_API event_manager
 {
 public:
 
--- a/libinterp/corefcn/event-queue.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/event-queue.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-event_queue : public action_container
+class event_queue : public action_container
 {
 public:
 
@@ -88,8 +87,7 @@
 // possibility of seeing an exception (or interrupt) in the cleanup actions.
 // Not that we can do much about it, but at least we won't crash.
 
-class
-event_queue_safe : public event_queue
+class event_queue_safe : public event_queue
 {
 public:
 
--- a/libinterp/corefcn/ft-text-renderer.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/ft-text-renderer.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -97,8 +97,7 @@
 // Forward declaration
 static void ft_face_destroyed (void *object);
 
-class
-ft_manager
+class ft_manager
 {
 private:
 
@@ -450,9 +449,7 @@
   ft_manager::font_destroyed (reinterpret_cast<FT_Face> (object));
 }
 
-class
-OCTINTERP_API
-ft_text_renderer : public base_text_renderer
+class OCTINTERP_API ft_text_renderer : public base_text_renderer
 {
 public:
 
--- a/libinterp/corefcn/gl-render.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/gl-render.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -339,8 +339,7 @@
   return retval;
 }
 
-class
-opengl_tessellator
+class opengl_tessellator
 {
 public:
 #if defined (HAVE_FRAMEWORK_OPENGL) && defined (HAVE_GLUTESSCALLBACK_THREEDOTS)
@@ -508,8 +507,7 @@
   std::shared_ptr<vertex_data_rep> m_rep;
 };
 
-class
-opengl_renderer::patch_tessellator : public opengl_tessellator
+class opengl_renderer::patch_tessellator : public opengl_tessellator
 {
 public:
 
@@ -675,8 +673,7 @@
 
 #else
 
-class
-opengl_renderer::patch_tessellator
+class opengl_renderer::patch_tessellator
 {
   // Dummy class.
 };
--- a/libinterp/corefcn/gl-render.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/gl-render.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 
 class opengl_functions;
 
-class
-OCTINTERP_API
-opengl_renderer
+class OCTINTERP_API opengl_renderer
 {
 public:
 
--- a/libinterp/corefcn/gl2ps-print.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/gl2ps-print.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -57,9 +57,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-gl2ps_renderer : public opengl_renderer
+class OCTINTERP_API gl2ps_renderer : public opengl_renderer
 {
 public:
 
@@ -1522,10 +1520,10 @@
 
   OCTAVE_LOCAL_BUFFER (float, tmp_data, static_cast<size_t> (3)*w*h);
 
-  static const float maxval = std::numeric_limits<uint8_t>::max ();
+  static constexpr float MAXVAL = std::numeric_limits<uint8_t>::max ();
 
   for (int i = 0; i < 3*w*h; i++)
-    tmp_data[i] = data[i] / maxval;
+    tmp_data[i] = data[i] / MAXVAL;
 
   draw_pixels (w, h, tmp_data);
 }
@@ -1537,10 +1535,10 @@
 
   OCTAVE_LOCAL_BUFFER (float, tmp_data, static_cast<size_t> (3)*w*h);
 
-  static const float maxval = std::numeric_limits<uint16_t>::max ();
+  static constexpr float MAXVAL = std::numeric_limits<uint16_t>::max ();
 
   for (int i = 0; i < 3*w*h; i++)
-    tmp_data[i] = data[i] / maxval;
+    tmp_data[i] = data[i] / MAXVAL;
 
   draw_pixels (w, h, tmp_data);
 }
--- a/libinterp/corefcn/graphics.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/graphics.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -7364,20 +7364,20 @@
 
   magform ((hi - lo) / ticint, a, b);
 
-  static const double sqrt_2 = sqrt (2.0);
-  static const double sqrt_10 = sqrt (10.0);
-  static const double sqrt_50 = sqrt (50.0);
-
-  if (a < sqrt_2)
+  static const double SQRT_2 = sqrt (2.0);
+  static const double SQRT_10 = sqrt (10.0);
+  static const double SQRT_50 = sqrt (50.0);
+
+  if (a < SQRT_2)
     x = 1;
-  else if (a < sqrt_10)
+  else if (a < SQRT_10)
     x = 2;
-  else if (a < sqrt_50)
+  else if (a < SQRT_50)
     x = 5;
   else
     x = 10;
 
-  return x * std::pow (10., b);
+  return x * std::pow (10.0, b);
 }
 
 // Attempt to make "nice" limits from the actual max and min of the data.
@@ -11591,8 +11591,7 @@
   return parent_go.get_factory_default (type () + name);
 }
 
-class
-callback_event : public base_graphics_event
+class callback_event : public base_graphics_event
 {
 public:
   callback_event (const graphics_handle& h, const std::string& name,
@@ -11628,8 +11627,7 @@
   octave_value m_callback_data;
 };
 
-class
-mcode_event : public base_graphics_event
+class mcode_event : public base_graphics_event
 {
 public:
   mcode_event (const graphics_handle& h, const std::string& cmd,
@@ -11662,8 +11660,7 @@
   std::string m_mcode;
 };
 
-class
-function_event : public base_graphics_event
+class function_event : public base_graphics_event
 {
 public:
 
@@ -11687,8 +11684,7 @@
   void *m_function_data;
 };
 
-class
-set_event : public base_graphics_event
+class set_event : public base_graphics_event
 {
 public:
   set_event (const graphics_handle& h, const std::string& name,
--- a/libinterp/corefcn/graphics.in.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/graphics.in.h	Thu Dec 21 17:48:59 2023 -0500
@@ -6681,9 +6681,7 @@
 
 class graphics_event;
 
-class
-OCTINTERP_API
-base_graphics_event
+class OCTINTERP_API base_graphics_event
 {
 public:
   enum priority { INTERRUPT, QUEUE, CANCEL };
@@ -6710,9 +6708,7 @@
   int m_busyaction;
 };
 
-class
-OCTINTERP_API
-graphics_event
+class OCTINTERP_API graphics_event
 {
 public:
 
--- a/libinterp/corefcn/input.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/input.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -261,13 +261,13 @@
 is_completing_dirfns ()
 {
   static std::string dirfns_commands[] = {"cd", "isfile", "isfolder", "ls"};
-  static const std::size_t dirfns_commands_length = 4;
+  static const std::size_t DIRFNS_COMMANDS_LENGTH = 4;
 
   bool retval = false;
 
   std::string line = command_editor::get_line_buffer ();
 
-  for (std::size_t i = 0; i < dirfns_commands_length; i++)
+  for (std::size_t i = 0; i < DIRFNS_COMMANDS_LENGTH; i++)
     {
       int index = line.find (dirfns_commands[i] + ' ');
 
@@ -889,8 +889,7 @@
   return retval;
 }
 
-class
-terminal_reader : public base_reader
+class terminal_reader : public base_reader
 {
 public:
 
@@ -912,8 +911,7 @@
   static const std::string s_in_src;
 };
 
-class
-file_reader : public base_reader
+class file_reader : public base_reader
 {
 public:
 
@@ -942,8 +940,7 @@
   static const std::string s_in_src;
 };
 
-class
-eval_string_reader : public base_reader
+class eval_string_reader : public base_reader
 {
 public:
 
--- a/libinterp/corefcn/latex-text-renderer.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/latex-text-renderer.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -49,9 +49,7 @@
   return ('"' + str + '"');
 }
 
-class
-OCTINTERP_API
-latex_renderer : public base_text_renderer
+class OCTINTERP_API latex_renderer : public base_text_renderer
 {
 public:
 
--- a/libinterp/corefcn/load-path.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/load-path.h	Thu Dec 21 17:48:59 2023 -0500
@@ -41,9 +41,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-load_path
+class OCTINTERP_API load_path
 {
 public:
 
--- a/libinterp/corefcn/mx-type-traits.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/mx-type-traits.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 #include "oct-inttypes-fwd.h"
 
 template <typename T>
-class
-mx_type_traits
+class mx_type_traits
 {
 public:
   static const mxClassID mx_class;
@@ -41,8 +40,7 @@
 };
 
 template <>
-class
-mx_type_traits<bool>
+class mx_type_traits<bool>
 {
 public:
   static const mxClassID mx_class = mxLOGICAL_CLASS;
@@ -50,8 +48,7 @@
 };
 
 template <>
-class
-mx_type_traits<char>
+class mx_type_traits<char>
 {
 public:
   static const mxClassID mx_class = mxCHAR_CLASS;
@@ -59,8 +56,7 @@
 };
 
 template <>
-class
-mx_type_traits<double>
+class mx_type_traits<double>
 {
 public:
   static const mxClassID mx_class = mxDOUBLE_CLASS;
@@ -68,8 +64,7 @@
 };
 
 template <>
-class
-mx_type_traits<float>
+class mx_type_traits<float>
 {
 public:
   static const mxClassID mx_class = mxSINGLE_CLASS;
@@ -77,8 +72,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_int8>
+class mx_type_traits<octave_int8>
 {
 public:
   static const mxClassID mx_class = mxINT8_CLASS;
@@ -86,8 +80,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_uint8>
+class mx_type_traits<octave_uint8>
 {
 public:
   static const mxClassID mx_class = mxUINT8_CLASS;
@@ -95,8 +88,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_int16>
+class mx_type_traits<octave_int16>
 {
 public:
   static const mxClassID mx_class = mxINT16_CLASS;
@@ -104,8 +96,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_uint16>
+class mx_type_traits<octave_uint16>
 {
 public:
   static const mxClassID mx_class = mxUINT16_CLASS;
@@ -113,8 +104,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_int32>
+class mx_type_traits<octave_int32>
 {
 public:
   static const mxClassID mx_class = mxINT32_CLASS;
@@ -122,8 +112,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_uint32>
+class mx_type_traits<octave_uint32>
 {
 public:
   static const mxClassID mx_class = mxUINT32_CLASS;
@@ -131,8 +120,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_int64>
+class mx_type_traits<octave_int64>
 {
 public:
   static const mxClassID mx_class = mxINT64_CLASS;
@@ -140,8 +128,7 @@
 };
 
 template <>
-class
-mx_type_traits<octave_uint64>
+class mx_type_traits<octave_uint64>
 {
 public:
   static const mxClassID mx_class = mxUINT64_CLASS;
--- a/libinterp/corefcn/oct-errno.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-errno.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,8 +34,7 @@
 
 #include "oct-map.h"
 
-class
-octave_errno
+class octave_errno
 {
 protected:
 
--- a/libinterp/corefcn/oct-fstrm.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-fstrm.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-fstream : public base_stream
+class fstream : public base_stream
 {
 public:
 
--- a/libinterp/corefcn/oct-iostrm.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-iostrm.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,8 +34,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-base_iostream : public base_stream
+class base_iostream : public base_stream
 {
 public:
 
@@ -79,8 +78,7 @@
   virtual const char * stream_type () const = 0;
 };
 
-class
-istream : public base_iostream
+class istream : public base_iostream
 {
 public:
 
@@ -113,8 +111,7 @@
   const char * stream_type () const { return "istream"; }
 };
 
-class
-ostream : public base_iostream
+class ostream : public base_iostream
 {
 public:
 
--- a/libinterp/corefcn/oct-prcstrm.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-prcstrm.h	Thu Dec 21 17:48:59 2023 -0500
@@ -40,8 +40,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-octave_iprocstream : public octave::stdiostream
+class octave_iprocstream : public octave::stdiostream
 {
 public:
 
@@ -64,8 +63,7 @@
   ~octave_iprocstream ();
 };
 
-class
-octave_oprocstream : public octave::stdiostream
+class octave_oprocstream : public octave::stdiostream
 {
 public:
 
--- a/libinterp/corefcn/oct-procbuf.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-procbuf.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,8 +37,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-procbuf : public c_file_ptr_buf
+class procbuf : public c_file_ptr_buf
 {
 public:
 
--- a/libinterp/corefcn/oct-process.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-process.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-process_execution_result
+class process_execution_result
 {
 public:
 
--- a/libinterp/corefcn/oct-stdstrm.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-stdstrm.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,8 +36,7 @@
 OCTAVE_BEGIN_NAMESPACE(octave)
 
 template <typename BUF_T, typename STREAM_T, typename FILE_T>
-class
-tstdiostream : public base_stream
+class tstdiostream : public base_stream
 {
 public:
 
@@ -119,8 +118,7 @@
   int m_fnum;
 };
 
-class
-stdiostream
+class stdiostream
   : public tstdiostream<c_file_ptr_buf, io_c_file_ptr_stream, FILE *>
 {
 public:
@@ -152,8 +150,7 @@
 
 #if defined (HAVE_ZLIB)
 
-class
-zstdiostream
+class zstdiostream
   : public tstdiostream<c_zfile_ptr_buf, io_c_zfile_ptr_stream, gzFile>
 {
 public:
--- a/libinterp/corefcn/oct-stream.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-stream.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -142,9 +142,8 @@
         ::error ("%s: negative value invalid as size specification",
                  who.c_str ());
 
-      static const double out_of_range_top
-        = static_cast<double> (std::numeric_limits<octave_idx_type>::max ())
-          + 1.;
+      static constexpr double out_of_range_top
+        = static_cast<double> (std::numeric_limits<octave_idx_type>::max ()) + 1.0;
       if (d >= out_of_range_top)
         ::error ("%s: dimension too large for Octave's index type",
                  who.c_str ());
@@ -240,8 +239,7 @@
   return retval;
 }
 
-class
-scanf_format_elt
+class scanf_format_elt
 {
 public:
 
@@ -285,8 +283,7 @@
   std::string char_class;
 };
 
-class
-scanf_format_list
+class scanf_format_list
 {
 public:
 
@@ -748,8 +745,7 @@
     return false;
 }
 
-class
-printf_format_elt
+class printf_format_elt
 {
 public:
 
@@ -789,8 +785,7 @@
   char modifier;
 };
 
-class
-printf_format_list
+class printf_format_list
 {
 public:
 
@@ -1214,8 +1209,7 @@
 // of the buffer and the buffer is refilled.  This also allows cheap
 // seek and tell operations within a "fast read" block.
 
-class
-delimited_stream
+class delimited_stream
 {
 public:
 
@@ -1637,8 +1631,7 @@
 
 // A single conversion specifier, such as %f or %c.
 
-class
-textscan_format_elt
+class textscan_format_elt
 {
 public:
 
@@ -1692,8 +1685,7 @@
 
 class textscan;
 
-class
-textscan_format_list
+class textscan_format_list
 {
 public:
 
@@ -1803,9 +1795,7 @@
 //   textscan scanner ();
 //   scanner.scan (...);
 
-class
-OCTINTERP_API
-textscan
+class OCTINTERP_API textscan
 {
 public:
 
@@ -5482,8 +5472,7 @@
   return retval;
 }
 
-class
-printf_value_cache
+class printf_value_cache
 {
 public:
 
--- a/libinterp/corefcn/oct-stream.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-stream.h	Thu Dec 21 17:48:59 2023 -0500
@@ -63,9 +63,7 @@
 
 // Provide an interface for Octave streams.
 
-class
-OCTINTERP_API
-base_stream
+class OCTINTERP_API base_stream
 {
   friend class stream;
 
@@ -297,9 +295,7 @@
   invalid_operation (const std::string& who, const char *rw);
 };
 
-class
-OCTINTERP_API
-stream
+class OCTINTERP_API stream
 {
 public:
 
@@ -499,9 +495,7 @@
                  mach_info::float_format ffmt);
 };
 
-class
-OCTINTERP_API
-stream_list
+class OCTINTERP_API stream_list
 {
 public:
 
--- a/libinterp/corefcn/oct-strstrm.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/oct-strstrm.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-base_strstream : public base_stream
+class base_strstream : public base_stream
 {
 public:
 
@@ -73,8 +72,7 @@
   virtual void clear () = 0;
 };
 
-class
-istrstream : public base_strstream
+class istrstream : public base_strstream
 {
 public:
 
@@ -133,8 +131,7 @@
   std::istringstream m_istream;
 };
 
-class
-ostrstream : public base_strstream
+class ostrstream : public base_strstream
 {
 public:
 
--- a/libinterp/corefcn/pager.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/pager.h	Thu Dec 21 17:48:59 2023 -0500
@@ -41,9 +41,7 @@
 class interpreter;
 class oprocstream;
 
-class
-OCTINTERP_API
-pager_buf : public std::stringbuf
+class OCTINTERP_API pager_buf : public std::stringbuf
 {
 public:
 
@@ -66,9 +64,7 @@
   std::size_t m_diary_skip;
 };
 
-class
-OCTINTERP_API
-pager_stream : public std::ostream
+class OCTINTERP_API pager_stream : public std::ostream
 {
 public:
 
@@ -91,9 +87,7 @@
   pager_buf *m_pb;
 };
 
-class
-OCTINTERP_API
-diary_buf : public std::stringbuf
+class OCTINTERP_API diary_buf : public std::stringbuf
 {
 public:
 
@@ -105,9 +99,7 @@
   int sync ();
 };
 
-class
-OCTINTERP_API
-diary_stream : public std::ostream
+class OCTINTERP_API diary_stream : public std::ostream
 {
 public:
 
--- a/libinterp/corefcn/pr-flt-fmt.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/pr-flt-fmt.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,9 +44,7 @@
 
 extern OCTINTERP_API void set_output_prec (int prec);
 
-class
-OCTINTERP_API
-float_format
+class OCTINTERP_API float_format
 {
 public:
 
@@ -205,9 +203,7 @@
   int m_sp;
 };
 
-class
-OCTINTERP_API
-float_display_format
+class OCTINTERP_API float_display_format
 {
 public:
 
--- a/libinterp/corefcn/pr-output.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/pr-output.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -2784,8 +2784,7 @@
 }
 
 template <typename T>
-class
-octave_print_conv
+class octave_print_conv
 {
 public:
   typedef T print_conv_type;
--- a/libinterp/corefcn/pr-output.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/pr-output.h	Thu Dec 21 17:48:59 2023 -0500
@@ -508,8 +508,7 @@
                        bool pr_as_read_syntax = false);
 
 template <typename T>
-class
-pr_engineering_float
+class pr_engineering_float
 {
 public:
 
@@ -529,8 +528,7 @@
 };
 
 template <typename T>
-class
-pr_formatted_float
+class pr_formatted_float
 {
 public:
 
@@ -546,8 +544,7 @@
 };
 
 template <typename T>
-class
-pr_rational_float
+class pr_rational_float
 {
 public:
 
--- a/libinterp/corefcn/procstream.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/procstream.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-procstreambase : virtual public std::ios
+class OCTINTERP_API procstreambase : virtual public std::ios
 {
 public:
 
@@ -80,9 +78,7 @@
   }
 };
 
-class
-OCTINTERP_API
-iprocstream : public std::istream, public procstreambase
+class OCTINTERP_API iprocstream : public std::istream, public procstreambase
 {
 public:
 
@@ -111,9 +107,7 @@
   }
 };
 
-class
-OCTINTERP_API
-oprocstream : public std::ostream, public procstreambase
+class OCTINTERP_API oprocstream : public std::ostream, public procstreambase
 {
 public:
 
@@ -140,9 +134,7 @@
   }
 };
 
-class
-OCTINTERP_API
-procstream : public std::iostream, public procstreambase
+class OCTINTERP_API procstream : public std::iostream, public procstreambase
 {
 public:
 
--- a/libinterp/corefcn/quadcc.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/quadcc.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -61,7 +61,7 @@
 };
 
 // Define relative tolerance used when deciding to drop an interval.
-static const double DROP_RELTOL = std::numeric_limits<double>::epsilon () * 10;
+static constexpr double DROP_RELTOL = std::numeric_limits<double>::epsilon () * 10;
 
 // Some constants and matrices that we'll need.
 
--- a/libinterp/corefcn/syminfo.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/syminfo.h	Thu Dec 21 17:48:59 2023 -0500
@@ -50,9 +50,7 @@
   std::string line;
 };
 
-class
-OCTINTERP_API
-symbol_info
+class OCTINTERP_API symbol_info
 {
 public:
 
@@ -90,9 +88,7 @@
   bool m_is_persistent;
 };
 
-class
-OCTINTERP_API
-symbol_info_list : public base_list<symbol_info>
+class OCTINTERP_API symbol_info_list : public base_list<symbol_info>
 {
 public:
 
--- a/libinterp/corefcn/symrec.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/symrec.h	Thu Dec 21 17:48:59 2023 -0500
@@ -125,11 +125,18 @@
                         | ADDED_STATIC);
     }
 
+    void mark_variable ()
+    {
+      m_storage_class = static_cast<symrec_t> (m_storage_class | VARIABLE);
+    }
+
+    OCTAVE_DEPRECATED (10, "symbol_record_rep::mark_as_variable is obsolete, use mark_variable")
     void mark_as_variable ()
     {
       m_storage_class = static_cast<symrec_t> (m_storage_class | VARIABLE);
     }
 
+
     void unmark_local ()
     {
       m_storage_class = static_cast<symrec_t> (m_storage_class & ~LOCAL);
@@ -146,6 +153,12 @@
                         & ~ADDED_STATIC);
     }
 
+    void unmark_variable ()
+    {
+      m_storage_class = static_cast<symrec_t> (m_storage_class & ~VARIABLE);
+    }
+
+    OCTAVE_DEPRECATED (10, "symbol_record_rep::unmark_as_variable is obsolete, use unmark_variable")
     void unmark_as_variable ()
     {
       m_storage_class = static_cast<symrec_t> (m_storage_class & ~VARIABLE);
@@ -216,12 +229,16 @@
   void mark_local () { m_rep->mark_local (); }
   void mark_formal () { m_rep->mark_formal (); }
   void mark_added_static () { m_rep->mark_added_static (); }
-  void mark_as_variable () { m_rep->mark_as_variable (); }
+  void mark_variable () { m_rep->mark_variable (); }
+  OCTAVE_DEPRECATED (10, "symbol_record::mark_as_variable is obsolete, use mark_variable")
+  void mark_as_variable () { m_rep->mark_variable (); }
 
   void unmark_local () { m_rep->unmark_local (); }
   void unmark_formal () { m_rep->unmark_formal (); }
   void unmark_added_static () { m_rep->unmark_added_static (); }
-  void unmark_as_variable () { m_rep->unmark_as_variable (); }
+  void unmark_variable () { m_rep->unmark_variable (); }
+  OCTAVE_DEPRECATED (10, "symbol_record::unmark_as_variable is obsolete, use unmark_variable")
+  void unmark_as_variable () { m_rep->unmark_variable (); }
 
   unsigned int storage_class () const { return m_rep->storage_class (); }
 
--- a/libinterp/corefcn/symscope.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/symscope.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -281,7 +281,7 @@
   table_iterator p = m_symbols.find (nm);
 
   if (p != m_symbols.end ())
-    p->second.mark_as_variable ();
+    p->second.mark_variable ();
 }
 
 void
--- a/libinterp/corefcn/text-engine.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/text-engine.h	Thu Dec 21 17:48:59 2023 -0500
@@ -51,9 +51,7 @@
 
 class text_processor;
 
-class
-OCTINTERP_API
-text_element
+class OCTINTERP_API text_element
 {
 public:
 
@@ -64,9 +62,7 @@
   virtual void accept (text_processor& p) = 0;
 };
 
-class
-OCTINTERP_API
-text_element_string : public text_element
+class OCTINTERP_API text_element_string : public text_element
 {
 public:
 
@@ -84,9 +80,7 @@
   std::string m_str;
 };
 
-class
-OCTINTERP_API
-text_element_symbol : public text_element
+class OCTINTERP_API text_element_symbol : public text_element
 {
 public:
 
@@ -109,9 +103,7 @@
   int m_symbol;
 };
 
-class
-OCTINTERP_API
-text_element_list
+class OCTINTERP_API text_element_list
   : public text_element, public base_list<text_element *>
 {
 public:
@@ -137,9 +129,7 @@
   void accept (text_processor& p);
 };
 
-class
-OCTINTERP_API
-text_element_subscript : public text_element
+class OCTINTERP_API text_element_subscript : public text_element
 {
 public:
 
@@ -164,9 +154,7 @@
   text_element *m_elem;
 };
 
-class
-OCTINTERP_API
-text_element_superscript : public text_element
+class OCTINTERP_API text_element_superscript : public text_element
 {
 public:
 
@@ -191,9 +179,7 @@
   text_element *m_elem;
 };
 
-class
-OCTINTERP_API
-text_element_combined : public text_element_list
+class OCTINTERP_API text_element_combined : public text_element_list
 {
 public:
 
@@ -209,9 +195,7 @@
   void accept (text_processor& p);
 };
 
-class
-OCTINTERP_API
-text_element_fontstyle : public text_element
+class OCTINTERP_API text_element_fontstyle : public text_element
 {
 public:
 
@@ -239,9 +223,7 @@
   fontstyle m_style;
 };
 
-class
-OCTINTERP_API
-text_element_fontname : public text_element
+class OCTINTERP_API text_element_fontname : public text_element
 {
 public:
 
@@ -261,9 +243,7 @@
   std::string m_name;
 };
 
-class
-OCTINTERP_API
-text_element_fontsize : public text_element
+class OCTINTERP_API text_element_fontsize : public text_element
 {
 public:
 
@@ -283,9 +263,7 @@
   double m_size;
 };
 
-class
-OCTINTERP_API
-text_element_color : public text_element
+class OCTINTERP_API text_element_color : public text_element
 {
 public:
 
@@ -328,9 +306,7 @@
   Matrix m_rgb;
 };
 
-class
-OCTINTERP_API
-text_processor
+class OCTINTERP_API text_processor
 {
 public:
 
@@ -389,9 +365,7 @@
 TEXT_ELEMENT_ACCEPT(text_element_fontsize)
 TEXT_ELEMENT_ACCEPT(text_element_color)
 
-class
-OCTINTERP_API
-text_parser
+class OCTINTERP_API text_parser
 {
 public:
 
@@ -406,9 +380,7 @@
                               const caseless_str& interpreter);
 };
 
-class
-OCTINTERP_API
-text_parser_none : public text_parser
+class OCTINTERP_API text_parser_none : public text_parser
 {
 public:
 
@@ -425,9 +397,7 @@
   }
 };
 
-class
-OCTINTERP_API
-text_parser_tex : public text_parser
+class OCTINTERP_API text_parser_tex : public text_parser
 {
 public:
 
--- a/libinterp/corefcn/text-renderer.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/text-renderer.h	Thu Dec 21 17:48:59 2023 -0500
@@ -41,9 +41,7 @@
 class base_text_renderer;
 class text_element;
 
-class
-OCTINTERP_API
-text_renderer
+class OCTINTERP_API text_renderer
 {
 public:
 
--- a/libinterp/corefcn/utils.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/utils.h	Thu Dec 21 17:48:59 2023 -0500
@@ -51,9 +51,7 @@
 //! Extracting options separately for multiple (e.g. 1000+) function calls
 //! avoids expensive repetitive parsing of the very same options.
 
-class
-OCTINTERP_API
-make_valid_name_options
+class OCTINTERP_API make_valid_name_options
 {
 public:
 
--- a/libinterp/corefcn/xpow.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/corefcn/xpow.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -83,8 +83,9 @@
 static inline bool
 xisint (float x)
 {
-  static const float out_of_range_top
-    = static_cast<float> (std::numeric_limits<int>::max ()) + 1.;
+  static constexpr float out_of_range_top
+    = static_cast<float> (std::numeric_limits<int>::max ()) + 1.0;
+
   return (octave::math::x_nint (x) == x
           && x < out_of_range_top
           && x >= std::numeric_limits<int>::min ());
--- a/libinterp/octave-value/cdef-class.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/cdef-class.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,14 +48,11 @@
 class interpreter;
 class tree_classdef;
 
-class
-OCTINTERP_API
-cdef_class : public cdef_meta_object
+class OCTINTERP_API cdef_class : public cdef_meta_object
 {
 private:
 
-  class
-  cdef_class_rep : public cdef_meta_object_rep
+  class cdef_class_rep : public cdef_meta_object_rep
   {
   public:
     cdef_class_rep ()
--- a/libinterp/octave-value/cdef-manager.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/cdef-manager.h	Thu Dec 21 17:48:59 2023 -0500
@@ -39,9 +39,7 @@
 
 class interpreter;
 
-class
-OCTINTERP_API
-cdef_manager
+class OCTINTERP_API cdef_manager
 {
 public:
 
--- a/libinterp/octave-value/cdef-method.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/cdef-method.h	Thu Dec 21 17:48:59 2023 -0500
@@ -39,16 +39,13 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-cdef_method : public cdef_meta_object
+class OCTINTERP_API cdef_method : public cdef_meta_object
 {
   friend class cdef_class;
 
 private:
 
-  class
-  cdef_method_rep : public cdef_meta_object_rep
+  class cdef_method_rep : public cdef_meta_object_rep
   {
   public:
 
--- a/libinterp/octave-value/cdef-object.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/cdef-object.h	Thu Dec 21 17:48:59 2023 -0500
@@ -45,9 +45,7 @@
 // The actual base class is cdef_class_base, which is declared after
 // cdef_object, such that it can contain cdef_object objects.
 
-class
-OCTINTERP_API
-cdef_object_rep
+class OCTINTERP_API cdef_object_rep
 {
 public:
 
@@ -198,9 +196,7 @@
   }
 };
 
-class
-OCTINTERP_API
-cdef_object
+class OCTINTERP_API cdef_object
 {
 public:
 
@@ -350,9 +346,7 @@
   cdef_object_rep *m_rep;
 };
 
-class
-OCTINTERP_API
-cdef_object_base : public cdef_object_rep
+class OCTINTERP_API cdef_object_base : public cdef_object_rep
 {
 public:
 
@@ -388,9 +382,7 @@
   cdef_object m_klass;
 };
 
-class
-OCTINTERP_API
-cdef_object_array : public cdef_object_base
+class OCTINTERP_API cdef_object_array : public cdef_object_base
 {
 public:
 
@@ -456,9 +448,7 @@
   { }
 };
 
-class
-OCTINTERP_API
-cdef_object_scalar : public cdef_object_base
+class OCTINTERP_API cdef_object_scalar : public cdef_object_base
 {
 public:
 
@@ -543,9 +533,7 @@
   { }
 };
 
-class
-OCTINTERP_API
-handle_cdef_object : public cdef_object_scalar
+class OCTINTERP_API handle_cdef_object : public cdef_object_scalar
 {
 public:
 
@@ -579,9 +567,7 @@
   { }
 };
 
-class
-OCTINTERP_API
-value_cdef_object : public cdef_object_scalar
+class OCTINTERP_API value_cdef_object : public cdef_object_scalar
 {
 public:
 
@@ -610,9 +596,7 @@
   { }
 };
 
-class
-OCTINTERP_API
-cdef_meta_object_rep : public handle_cdef_object
+class OCTINTERP_API cdef_meta_object_rep : public handle_cdef_object
 {
 public:
 
@@ -658,9 +642,7 @@
   { }
 };
 
-class
-OCTINTERP_API
-cdef_meta_object : public cdef_object
+class OCTINTERP_API cdef_meta_object : public cdef_object
 {
 public:
 
--- a/libinterp/octave-value/cdef-package.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/cdef-package.h	Thu Dec 21 17:48:59 2023 -0500
@@ -42,16 +42,13 @@
 
 class interpreter;
 
-class
-OCTINTERP_API
-cdef_package : public cdef_meta_object
+class OCTINTERP_API cdef_package : public cdef_meta_object
 {
   friend class cdef_class;
 
 private:
 
-  class
-  cdef_package_rep : public cdef_meta_object_rep
+  class cdef_package_rep : public cdef_meta_object_rep
   {
   public:
 
--- a/libinterp/octave-value/cdef-property.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/cdef-property.h	Thu Dec 21 17:48:59 2023 -0500
@@ -40,16 +40,13 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-cdef_property : public cdef_meta_object
+class OCTINTERP_API cdef_property : public cdef_meta_object
 {
   friend class cdef_class;
 
 private:
 
-  class
-  cdef_property_rep : public cdef_meta_object_rep
+  class cdef_property_rep : public cdef_meta_object_rep
   {
   public:
 
--- a/libinterp/octave-value/ov-base-diag.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base-diag.h	Thu Dec 21 17:48:59 2023 -0500
@@ -43,9 +43,7 @@
 // Real matrix values.
 
 template <typename DMT, typename MT>
-class
-OCTINTERP_API
-octave_base_diag : public octave_base_value
+class OCTINTERP_API octave_base_diag : public octave_base_value
 {
 
 public:
--- a/libinterp/octave-value/ov-base-int.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base-int.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -177,8 +177,8 @@
 
       val_type ival = tmp.value ();
 
-      static const bool is_signed = std::numeric_limits<val_type>::is_signed;
-      static const bool can_be_larger_than_uchar_max
+      static constexpr bool is_signed = std::numeric_limits<val_type>::is_signed;
+      static constexpr bool can_be_larger_than_uchar_max
         = octave_base_int_helper_traits<val_type>::can_be_larger_than_uchar_max;
 
       if (octave_base_int_helper<val_type, is_signed,
@@ -578,8 +578,8 @@
 
   val_type ival = tmp.value ();
 
-  static const bool is_signed = std::numeric_limits<val_type>::is_signed;
-  static const bool can_be_larger_than_uchar_max
+  static constexpr bool is_signed = std::numeric_limits<val_type>::is_signed;
+  static constexpr bool can_be_larger_than_uchar_max
     = octave_base_int_helper_traits<val_type>::can_be_larger_than_uchar_max;
 
   if (octave_base_int_helper<val_type, is_signed,
--- a/libinterp/octave-value/ov-base-int.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base-int.h	Thu Dec 21 17:48:59 2023 -0500
@@ -45,9 +45,7 @@
 // base int matrix values.
 
 template <typename T>
-class
-OCTINTERP_API
-octave_base_int_matrix : public octave_base_matrix<T>
+class OCTINTERP_API octave_base_int_matrix : public octave_base_matrix<T>
 {
 public:
 
@@ -117,9 +115,7 @@
 // base int scalar values.
 
 template <typename T>
-class
-OCTINTERP_API
-octave_base_int_scalar : public octave_base_scalar<T>
+class OCTINTERP_API octave_base_int_scalar : public octave_base_scalar<T>
 {
 public:
 
--- a/libinterp/octave-value/ov-base-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -45,9 +45,7 @@
 // Real matrix values.
 
 template <typename MT>
-class
-OCTINTERP_API
-octave_base_matrix : public octave_base_value
+class OCTINTERP_API octave_base_matrix : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-base-scalar.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base-scalar.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,9 +44,7 @@
 // Real scalar values.
 
 template <typename ST>
-class
-OCTINTERP_API
-octave_base_scalar : public octave_base_value
+class OCTINTERP_API octave_base_scalar : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-base-sparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base-sparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -46,9 +46,7 @@
 class octave_sparse_bool_matrix;
 
 template <typename T>
-class
-OCTINTERP_API
-octave_base_sparse : public octave_base_value
+class OCTINTERP_API octave_base_sparse : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-base.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -551,8 +551,8 @@
         err_wrong_type_arg (ee, "octave_base_value::" #F "_value ()", type_name ()); \
       }                                                                 \
                                                                         \
-    static const double out_of_range_top                                \
-      = static_cast<double> (std::numeric_limits<T>::max ()) + 1.;      \
+    static constexpr double out_of_range_top                            \
+      = static_cast<double> (std::numeric_limits<T>::max ()) + 1.0;     \
     if (require_int && octave::math::x_nint (d) != d)                   \
       error_with_cfn ("conversion of %g to " #T " value failed", d);    \
     else if (d < std::numeric_limits<T>::min ())                        \
--- a/libinterp/octave-value/ov-base.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-base.h	Thu Dec 21 17:48:59 2023 -0500
@@ -239,9 +239,7 @@
 // they need (if they are derived from octave_base_value instead of
 // octave_value).
 
-class
-OCTINTERP_API
-octave_base_value
+class OCTINTERP_API octave_base_value
 {
 public:
 
@@ -1006,9 +1004,7 @@
   DECLARE_OV_BASE_TYPEID_FUNCTIONS_AND_DATA
 };
 
-class
-OCTINTERP_API
-octave_base_dld_value : public octave_base_value
+class OCTINTERP_API octave_base_dld_value : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-bool-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-bool-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,8 +48,7 @@
 
 // Character matrix values.
 
-class
-octave_bool_matrix : public octave_base_matrix<boolNDArray>
+class octave_bool_matrix : public octave_base_matrix<boolNDArray>
 {
 public:
 
--- a/libinterp/octave-value/ov-bool-sparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-bool-sparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -47,9 +47,7 @@
 
 class octave_value_list;
 
-class
-OCTINTERP_API
-octave_sparse_bool_matrix : public octave_base_sparse<SparseBoolMatrix>
+class OCTINTERP_API octave_sparse_bool_matrix : public octave_base_sparse<SparseBoolMatrix>
 {
 public:
 
--- a/libinterp/octave-value/ov-bool.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-bool.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Real scalar values.
 
-class
-OCTINTERP_API
-octave_bool : public octave_base_scalar<bool>
+class OCTINTERP_API octave_bool : public octave_base_scalar<bool>
 {
 public:
 
--- a/libinterp/octave-value/ov-builtin.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-builtin.h	Thu Dec 21 17:48:59 2023 -0500
@@ -47,9 +47,7 @@
 
 // Builtin functions.
 
-class
-OCTINTERP_API
-octave_builtin : public octave_function
+class OCTINTERP_API octave_builtin : public octave_function
 {
 public:
 
--- a/libinterp/octave-value/ov-cell.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-cell.h	Thu Dec 21 17:48:59 2023 -0500
@@ -46,8 +46,7 @@
 
 // Cells.
 
-class
-octave_cell : public octave_base_matrix<Cell>
+class octave_cell : public octave_base_matrix<Cell>
 {
 public:
 
--- a/libinterp/octave-value/ov-ch-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-ch-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,8 +48,7 @@
 
 // Character matrix values.
 
-class
-octave_char_matrix : public octave_base_matrix<charNDArray>
+class octave_char_matrix : public octave_base_matrix<charNDArray>
 {
 protected:
 
--- a/libinterp/octave-value/ov-class.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-class.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -2090,8 +2090,7 @@
 // The following class can be removed once the
 // octave_value::function_value method is removed.
 
-class
-octave_inline_fcn : public octave_function
+class octave_inline_fcn : public octave_function
 {
 public:
 
@@ -2129,8 +2128,7 @@
 //   return class_name () == "inline";
 // }
 
-class
-octave_inline : public octave_class
+class octave_inline : public octave_class
 {
 public:
 
--- a/libinterp/octave-value/ov-class.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-class.h	Thu Dec 21 17:48:59 2023 -0500
@@ -50,8 +50,7 @@
 
 // Data structures.
 
-class
-octave_class : public octave_base_value
+class octave_class : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-classdef.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-classdef.h	Thu Dec 21 17:48:59 2023 -0500
@@ -43,8 +43,7 @@
 
 OCTAVE_END_NAMESPACE(octave)
 
-class
-octave_classdef : public octave_base_value
+class octave_classdef : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-colon.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-colon.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,8 +44,7 @@
 
 // A type to represent ':' as used for indexing.
 
-class
-octave_magic_colon : public octave_base_value
+class octave_magic_colon : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-complex.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-complex.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Complex scalar values.
 
-class
-OCTINTERP_API
-octave_complex : public octave_base_scalar<Complex>
+class OCTINTERP_API octave_complex : public octave_base_scalar<Complex>
 {
 public:
 
--- a/libinterp/octave-value/ov-cs-list.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-cs-list.h	Thu Dec 21 17:48:59 2023 -0500
@@ -43,8 +43,7 @@
 
 // Lists.
 
-class
-octave_cs_list : public octave_base_value
+class octave_cs_list : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-cx-diag.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-cx-diag.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 
 // Real diagonal matrix values.
 
-class
-octave_complex_diag_matrix
+class octave_complex_diag_matrix
   : public octave_base_diag<ComplexDiagMatrix, ComplexMatrix>
 {
 public:
--- a/libinterp/octave-value/ov-cx-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-cx-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Complex matrix values.
 
-class
-OCTINTERP_API
-octave_complex_matrix : public octave_base_matrix<ComplexNDArray>
+class OCTINTERP_API octave_complex_matrix : public octave_base_matrix<ComplexNDArray>
 {
 public:
 
--- a/libinterp/octave-value/ov-cx-sparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-cx-sparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -47,9 +47,7 @@
 
 class octave_value_list;
 
-class
-OCTINTERP_API
-octave_sparse_complex_matrix : public octave_base_sparse<SparseComplexMatrix>
+class OCTINTERP_API octave_sparse_complex_matrix : public octave_base_sparse<SparseComplexMatrix>
 {
 public:
 
--- a/libinterp/octave-value/ov-dld-fcn.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-dld-fcn.h	Thu Dec 21 17:48:59 2023 -0500
@@ -41,9 +41,7 @@
 
 // Dynamically-linked functions.
 
-class
-OCTINTERP_API
-octave_dld_function : public octave_builtin
+class OCTINTERP_API octave_dld_function : public octave_builtin
 {
 public:
 
--- a/libinterp/octave-value/ov-fcn-handle.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-fcn-handle.h	Thu Dec 21 17:48:59 2023 -0500
@@ -182,9 +182,7 @@
 
 OCTAVE_END_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-octave_fcn_handle : public octave_base_value
+class OCTINTERP_API octave_fcn_handle : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-fcn.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-fcn.h	Thu Dec 21 17:48:59 2023 -0500
@@ -52,9 +52,7 @@
 
 // Class that holds a cached reference to a octave function
 // for use in the bytecode VM.
-class
-OCTINTERP_API
-octave_fcn_cache : public octave_base_value
+class OCTINTERP_API octave_fcn_cache : public octave_base_value
 {
 public:
   octave_fcn_cache (const std::string &name) :m_fcn_name (name) { }
@@ -137,9 +135,7 @@
 
 #endif
 
-class
-OCTINTERP_API
-octave_function : public octave_base_value
+class OCTINTERP_API octave_function : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-float.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-float.h	Thu Dec 21 17:48:59 2023 -0500
@@ -50,9 +50,7 @@
 
 // Real scalar values.
 
-class
-OCTINTERP_API
-octave_float_scalar : public octave_base_scalar<float>
+class OCTINTERP_API octave_float_scalar : public octave_base_scalar<float>
 {
 public:
 
--- a/libinterp/octave-value/ov-flt-complex.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-flt-complex.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Complex scalar values.
 
-class
-OCTINTERP_API
-octave_float_complex : public octave_base_scalar<FloatComplex>
+class OCTINTERP_API octave_float_complex : public octave_base_scalar<FloatComplex>
 {
 public:
 
--- a/libinterp/octave-value/ov-flt-cx-diag.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-flt-cx-diag.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 
 // Real diagonal matrix values.
 
-class
-OCTINTERP_API
-octave_float_complex_diag_matrix
+class OCTINTERP_API octave_float_complex_diag_matrix
   : public octave_base_diag<FloatComplexDiagMatrix, FloatComplexMatrix>
 {
 public:
--- a/libinterp/octave-value/ov-flt-cx-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-flt-cx-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Complex matrix values.
 
-class
-OCTINTERP_API
-octave_float_complex_matrix : public octave_base_matrix<FloatComplexNDArray>
+class OCTINTERP_API octave_float_complex_matrix : public octave_base_matrix<FloatComplexNDArray>
 {
 public:
 
--- a/libinterp/octave-value/ov-flt-re-diag.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-flt-re-diag.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 
 // Real diagonal matrix values.
 
-class
-OCTINTERP_API
-octave_float_diag_matrix
+class OCTINTERP_API octave_float_diag_matrix
   : public octave_base_diag<FloatDiagMatrix, FloatMatrix>
 {
 public:
--- a/libinterp/octave-value/ov-flt-re-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-flt-re-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Real matrix values.
 
-class
-OCTINTERP_API
-octave_float_matrix : public octave_base_matrix<FloatNDArray>
+class OCTINTERP_API octave_float_matrix : public octave_base_matrix<FloatNDArray>
 {
 public:
 
--- a/libinterp/octave-value/ov-int-traits.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-int-traits.h	Thu Dec 21 17:48:59 2023 -0500
@@ -39,8 +39,7 @@
 #include "ov-uint64.h"
 
 template <typename T>
-class
-octave_value_int_traits
+class octave_value_int_traits
 {
 public:
   typedef T scalar_type;
--- a/libinterp/octave-value/ov-intx.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-intx.h	Thu Dec 21 17:48:59 2023 -0500
@@ -49,9 +49,7 @@
 #include "ov-re-mat.h"
 #include "ov-scalar.h"
 
-class
-OCTINTERP_API
-OCTAVE_VALUE_INT_MATRIX_T
+class OCTINTERP_API OCTAVE_VALUE_INT_MATRIX_T
   : public octave_base_int_matrix<intNDArray<OCTAVE_INT_T>>
 {
 public:
@@ -386,9 +384,7 @@
   DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
 };
 
-class
-OCTINTERP_API
-OCTAVE_VALUE_INT_SCALAR_T
+class OCTINTERP_API OCTAVE_VALUE_INT_SCALAR_T
   : public octave_base_int_scalar<OCTAVE_INT_T>
 {
 public:
--- a/libinterp/octave-value/ov-lazy-idx.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-lazy-idx.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 // Lazy indices that stay in idx_vector form until the conversion to NDArray is
 // actually needed.
 
-class
-OCTINTERP_API
-octave_lazy_index : public octave_base_value
+class OCTINTERP_API octave_lazy_index : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-legacy-range.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-legacy-range.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -50,8 +50,7 @@
 #include "ls-hdf5.h"
 #include "ls-utils.h"
 
-class
-Range
+class Range
 {
 public:
 
--- a/libinterp/octave-value/ov-legacy-range.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-legacy-range.h	Thu Dec 21 17:48:59 2023 -0500
@@ -57,8 +57,7 @@
 // of this type used by the interpreter.  The action of maybe_mutate is
 // performed by octave_legacy_range::try_narrowing_conversion.
 
-class
-octave_legacy_range : public octave_base_value
+class octave_legacy_range : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-magic-int.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-magic-int.h	Thu Dec 21 17:48:59 2023 -0500
@@ -47,8 +47,7 @@
 // type conversion.
 
 template <typename T>
-class
-octave_base_magic_int : public octave_base_scalar<T>
+class octave_base_magic_int : public octave_base_scalar<T>
 {
 public:
 
@@ -275,9 +274,7 @@
   octave_value map (octave_base_value::unary_mapper_t umap) const;
 };
 
-class
-OCTINTERP_API
-octave_magic_uint : public octave_base_magic_int<octave_uint64>
+class OCTINTERP_API octave_magic_uint : public octave_base_magic_int<octave_uint64>
 {
 public:
 
@@ -301,9 +298,7 @@
   DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
 };
 
-class
-OCTINTERP_API
-octave_magic_int : public octave_base_magic_int<octave_int64>
+class OCTINTERP_API octave_magic_int : public octave_base_magic_int<octave_int64>
 {
 public:
 
--- a/libinterp/octave-value/ov-mex-fcn.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-mex-fcn.h	Thu Dec 21 17:48:59 2023 -0500
@@ -47,8 +47,7 @@
 
 // Dynamically-linked functions.
 
-class
-octave_mex_function : public octave_function
+class octave_mex_function : public octave_function
 {
 public:
 
--- a/libinterp/octave-value/ov-null-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-null-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -41,9 +41,7 @@
 
 // The special [] value.
 
-class
-OCTINTERP_API
-octave_null_matrix : public octave_matrix
+class OCTINTERP_API octave_null_matrix : public octave_matrix
 {
   octave_null_matrix () : octave_matrix () { }
 
@@ -63,9 +61,7 @@
 
 // The special "" value
 
-class
-OCTINTERP_API
-octave_null_str : public octave_char_matrix_str
+class OCTINTERP_API octave_null_str : public octave_char_matrix_str
 {
   octave_null_str () : octave_char_matrix_str () { }
 
@@ -87,9 +83,7 @@
 
 // The special '' value
 
-class
-OCTINTERP_API
-octave_null_sq_str : public octave_char_matrix_sq_str
+class OCTINTERP_API octave_null_sq_str : public octave_char_matrix_sq_str
 {
   octave_null_sq_str () : octave_char_matrix_sq_str () { }
 
--- a/libinterp/octave-value/ov-perm.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-perm.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 #include "ov-typeinfo.h"
 #include "ovl.h"
 
-class
-OCTINTERP_API
-octave_perm_matrix : public octave_base_value
+class OCTINTERP_API octave_perm_matrix : public octave_base_value
 {
 public:
   octave_perm_matrix () : m_matrix (), m_dense_cache () { }
--- a/libinterp/octave-value/ov-range-traits.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-range-traits.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,8 +44,7 @@
 #include "ov-uint8.h"
 
 template <typename T>
-class
-octave_value_range_traits
+class octave_value_range_traits
 {
 public:
   typedef T scalar_type;
@@ -53,8 +52,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<bool>
+class octave_value_range_traits<bool>
 {
 public:
   typedef octave_bool scalar_type;
@@ -62,8 +60,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<float>
+class octave_value_range_traits<float>
 {
 public:
   typedef octave_float_scalar scalar_type;
@@ -71,8 +68,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<double>
+class octave_value_range_traits<double>
 {
 public:
   typedef octave_scalar scalar_type;
@@ -80,8 +76,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_int8>
+class octave_value_range_traits<octave_int8>
 {
 public:
   typedef octave_int8_scalar scalar_type;
@@ -89,8 +84,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_int16>
+class octave_value_range_traits<octave_int16>
 {
 public:
   typedef octave_int16_scalar scalar_type;
@@ -98,8 +92,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_int32>
+class octave_value_range_traits<octave_int32>
 {
 public:
   typedef octave_int32_scalar scalar_type;
@@ -107,8 +100,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_int64>
+class octave_value_range_traits<octave_int64>
 {
 public:
   typedef octave_int64_scalar scalar_type;
@@ -116,8 +108,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_uint8>
+class octave_value_range_traits<octave_uint8>
 {
 public:
   typedef octave_uint8_scalar scalar_type;
@@ -125,8 +116,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_uint16>
+class octave_value_range_traits<octave_uint16>
 {
 public:
   typedef octave_uint16_scalar scalar_type;
@@ -134,8 +124,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_uint32>
+class octave_value_range_traits<octave_uint32>
 {
 public:
   typedef octave_uint32_scalar scalar_type;
@@ -143,8 +132,7 @@
 };
 
 template <>
-class
-octave_value_range_traits<octave_uint64>
+class octave_value_range_traits<octave_uint64>
 {
 public:
   typedef octave_uint64_scalar scalar_type;
--- a/libinterp/octave-value/ov-range.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-range.h	Thu Dec 21 17:48:59 2023 -0500
@@ -93,8 +93,7 @@
 // enforce that restriction.
 
 template <typename T>
-class
-ov_range : public octave_base_value
+class ov_range : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-re-diag.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-re-diag.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 
 // Real diagonal matrix values.
 
-class
-OCTINTERP_API
-octave_diag_matrix
+class OCTINTERP_API octave_diag_matrix
   : public octave_base_diag<DiagMatrix, Matrix>
 {
 public:
--- a/libinterp/octave-value/ov-re-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-re-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 // Real matrix values.
 
-class
-OCTINTERP_API
-octave_matrix : public octave_base_matrix<NDArray>
+class OCTINTERP_API octave_matrix : public octave_base_matrix<NDArray>
 {
 public:
 
--- a/libinterp/octave-value/ov-re-sparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-re-sparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 
 class octave_value_list;
 
-class
-OCTINTERP_API
-octave_sparse_matrix : public octave_base_sparse<SparseMatrix>
+class OCTINTERP_API octave_sparse_matrix : public octave_base_sparse<SparseMatrix>
 {
 public:
 
--- a/libinterp/octave-value/ov-scalar.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-scalar.h	Thu Dec 21 17:48:59 2023 -0500
@@ -49,9 +49,7 @@
 
 // Real scalar values.
 
-class
-OCTINTERP_API
-octave_scalar : public octave_base_scalar<double>
+class OCTINTERP_API octave_scalar : public octave_base_scalar<double>
 {
 public:
 
--- a/libinterp/octave-value/ov-str-mat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-str-mat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,9 +48,7 @@
 // Character matrix values with special properties for use as
 // strings.
 
-class
-OCTINTERP_API
-octave_char_matrix_str : public octave_char_matrix
+class OCTINTERP_API octave_char_matrix_str : public octave_char_matrix
 {
 public:
 
@@ -186,8 +184,7 @@
 
 typedef octave_char_matrix_str octave_char_matrix_dq_str;
 
-class
-octave_char_matrix_sq_str : public octave_char_matrix_str
+class octave_char_matrix_sq_str : public octave_char_matrix_str
 {
 public:
 
--- a/libinterp/octave-value/ov-struct.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-struct.h	Thu Dec 21 17:48:59 2023 -0500
@@ -45,8 +45,7 @@
 
 // Data structures.
 
-class
-octave_struct : public octave_base_value
+class octave_struct : public octave_base_value
 {
 public:
 
@@ -188,8 +187,7 @@
   DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
 };
 
-class
-octave_scalar_struct : public octave_base_value
+class octave_scalar_struct : public octave_base_value
 {
 public:
 
--- a/libinterp/octave-value/ov-typeinfo.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-typeinfo.h	Thu Dec 21 17:48:59 2023 -0500
@@ -39,9 +39,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-type_info
+class OCTINTERP_API type_info
 {
 public:
 
--- a/libinterp/octave-value/ov-usr-fcn.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov-usr-fcn.h	Thu Dec 21 17:48:59 2023 -0500
@@ -56,8 +56,7 @@
 
 OCTAVE_END_NAMESPACE(octave)
 
-class
-octave_user_code : public octave_function
+class octave_user_code : public octave_function
 {
 protected:
 
@@ -171,8 +170,7 @@
 
 // Scripts.
 
-class
-octave_user_script : public octave_user_code
+class octave_user_script : public octave_user_code
 {
 public:
 
@@ -224,8 +222,7 @@
 
 // User-defined functions.
 
-class
-octave_user_function : public octave_user_code
+class octave_user_function : public octave_user_code
 {
 public:
 
--- a/libinterp/octave-value/ov.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -2976,9 +2976,8 @@
 
   double dval = val.double_value ();
   double intpart;
-  static const double out_of_range_top
-    = static_cast<double> (std::numeric_limits<typename T::val_type>::max ())
-      + 1.;
+  static constexpr double out_of_range_top
+    = static_cast<double> (std::numeric_limits<typename T::val_type>::max ()) + 1.0;
 
   if (dval >= out_of_range_top
       || dval < std::numeric_limits<typename T::val_type>::min ()
@@ -3013,8 +3012,7 @@
   // Map to unsigned.
   // Idea from https://stackoverflow.com/questions/10589559
 
-  static const UT offset
-    = UT (0) - static_cast<UT> (std::numeric_limits<ST>::min ());
+  static const UT offset = UT (0) - static_cast<UT> (std::numeric_limits<ST>::min ());
 
   UT au = static_cast<UT> (a) + offset;
   UT bu = static_cast<UT> (b) + offset;
@@ -3152,8 +3150,8 @@
       || (increment < 0 && base < limit))
     return 0;
 
-  static const double out_of_range_top
-    = static_cast<double> (std::numeric_limits<UT>::max ()) + 1.;
+  static constexpr double out_of_range_top
+    = static_cast<double> (std::numeric_limits<UT>::max ()) + 1.0;
 
   double abs_increment = std::abs (increment);
 
--- a/libinterp/octave-value/ov.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ov.h	Thu Dec 21 17:48:59 2023 -0500
@@ -74,9 +74,7 @@
 #include "oct-stream.h"
 #include "ov-base.h"
 
-class
-OCTINTERP_API
-octave_value
+class OCTINTERP_API octave_value
 {
 public:
 
--- a/libinterp/octave-value/ovl.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/octave-value/ovl.h	Thu Dec 21 17:48:59 2023 -0500
@@ -38,9 +38,7 @@
 #include "ov.h"
 #include "Cell.h"
 
-class
-OCTINTERP_API
-octave_value_list
+class OCTINTERP_API octave_value_list
 {
 public:
 
--- a/libinterp/operators/op-mi.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/operators/op-mi.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -67,10 +67,10 @@
 
   uint64_t ival = val.value ();
 
-  static const uint64_t max_val
+  static constexpr uint64_t max_val
     = static_cast<uint64_t> (std::numeric_limits<int64_t>::max ());
 
-  static const uint64_t max_val_p1 = max_val + 1;
+  static constexpr uint64_t max_val_p1 = max_val + 1;
 
   if (ival <= max_val)
     {
@@ -84,7 +84,7 @@
       // should return int8(-128) but converting directly to int8 and
       // negating will not return the correct result.
 
-      static const int64_t min_signed_ival
+      static constexpr int64_t min_signed_ival
         = std::numeric_limits<int64_t>::min ();
 
       return octave_value (new octave_magic_int (min_signed_ival));
--- a/libinterp/parse-tree/comment-list.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/parse-tree/comment-list.h	Thu Dec 21 17:48:59 2023 -0500
@@ -40,8 +40,7 @@
 
 extern void save_comment_text (const std::string& text);
 
-class
-comment_elt
+class comment_elt
 {
 public:
 
@@ -93,8 +92,7 @@
   comment_type m_type;
 };
 
-class
-comment_list : public base_list<comment_elt>
+class comment_list : public base_list<comment_elt>
 {
 public:
 
--- a/libinterp/parse-tree/lex.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/parse-tree/lex.h	Thu Dec 21 17:48:59 2023 -0500
@@ -48,8 +48,7 @@
 
 // For communication between the lexer and parser.
 
-class
-lexical_feedback
+class lexical_feedback
 {
 public:
 
@@ -522,8 +521,7 @@
 // initialize if everything is grouped in a parent class rather than
 // listing all the members in the base_lexer class.
 
-class
-base_lexer : public lexical_feedback
+class base_lexer : public lexical_feedback
 {
 public:
 
@@ -558,8 +556,7 @@
 
   // Collect comment text.
 
-  class
-  comment_buffer
+  class comment_buffer
   {
   public:
 
@@ -751,8 +748,7 @@
   std::stack<int> start_state_stack;
 };
 
-class
-lexer : public base_lexer
+class lexer : public base_lexer
 {
 public:
 
@@ -821,8 +817,7 @@
 template <> int base_lexer::handle_number<10> ();
 template <> int base_lexer::handle_number<16> ();
 
-class
-push_lexer : public base_lexer
+class push_lexer : public base_lexer
 {
 public:
 
--- a/libinterp/parse-tree/profiler.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/parse-tree/profiler.h	Thu Dec 21 17:48:59 2023 -0500
@@ -38,9 +38,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTINTERP_API
-profiler
+class OCTINTERP_API profiler
 {
 public:
 
--- a/libinterp/parse-tree/pt-anon-scopes.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/libinterp/parse-tree/pt-anon-scopes.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,8 +36,7 @@
 // In possibly nested definitions of anonymous functions, collect
 // their scopes and the symbol records therein.
 
-class
-tree_anon_scopes : public tree_walker
+class tree_anon_scopes : public tree_walker
 {
 public:
 
--- a/liboctave/array/Array-base.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/Array-base.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -951,8 +951,8 @@
         }
       else
         {
-          static const octave_idx_type max_stack_chunk = 1024;
-          octave_idx_type nn = n + std::min (nx, max_stack_chunk);
+          static const octave_idx_type MAX_STACK_CHUNK = 1024;
+          octave_idx_type nn = n + std::min (nx, MAX_STACK_CHUNK);
           Array<T, Alloc> tmp (Array<T, Alloc> (dim_vector (nn, 1)), dv, 0, n);
           T *dest = tmp.fortran_vec ();
 
@@ -2196,11 +2196,11 @@
 
   // This determines the split ratio between the O(M*log2(N)) and O(M+N)
   // algorithms.
-  static const double ratio = 1.0;
+  static const double RATIO = 1.0;
   sortmode vmode = UNSORTED;
 
   // Attempt the O(M+N) algorithm if M is large enough.
-  if (nval > ratio * n / octave::math::log2 (n + 1.0))
+  if (nval > RATIO * n / octave::math::log2 (n + 1.0))
     {
       vmode = values.issorted ();
       // The table must not contain a NaN.
--- a/liboctave/array/Array.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/Array.h	Thu Dec 21 17:48:59 2023 -0500
@@ -124,9 +124,7 @@
 //!   - Cell: Array<octave_value>, equivalent to an Octave cell.
 
 template <typename T, typename Alloc>
-class
-OCTARRAY_TEMPLATE_API
-Array
+class OCTARRAY_TEMPLATE_API Array
 {
 protected:
 
--- a/liboctave/array/CColVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/CColVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "MArray.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-ComplexColumnVector : public MArray<Complex>
+class OCTAVE_API ComplexColumnVector : public MArray<Complex>
 {
   friend class ComplexMatrix;
   friend class ComplexRowVector;
--- a/liboctave/array/CDiagMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/CDiagMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 #include "dRowVector.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-ComplexDiagMatrix : public MDiagArray2<Complex>
+class OCTAVE_API ComplexDiagMatrix : public MDiagArray2<Complex>
 {
 public:
 
--- a/liboctave/array/CMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/CMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 #include "mx-op-decl.h"
 #include "oct-cmplx.h"
 
-class
-OCTAVE_API
-ComplexMatrix : public ComplexNDArray
+class OCTAVE_API ComplexMatrix : public ComplexNDArray
 {
 public:
 
--- a/liboctave/array/CNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/CNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-ComplexNDArray : public MArray<Complex>
+class OCTAVE_API ComplexNDArray : public MArray<Complex>
 {
 public:
 
--- a/liboctave/array/CRowVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/CRowVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,9 +32,7 @@
 #include "dRowVector.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-ComplexRowVector : public MArray<Complex>
+class OCTAVE_API ComplexRowVector : public MArray<Complex>
 {
   friend class ComplexColumnVector;
 
--- a/liboctave/array/CSparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/CSparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -41,9 +41,7 @@
 #include "oct-cmplx.h"
 #include "mx-fwd.h"
 
-class
-OCTAVE_API
-SparseComplexMatrix : public MSparse<Complex>
+class OCTAVE_API SparseComplexMatrix : public MSparse<Complex>
 {
 public:
 
--- a/liboctave/array/DiagArray2.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/DiagArray2.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 // produce unexpected results.
 
 template <typename T>
-class
-OCTAVE_API
-DiagArray2 : protected Array<T>
+class OCTAVE_API DiagArray2 : protected Array<T>
 {
 protected:
   octave_idx_type m_d1, m_d2;
--- a/liboctave/array/MArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/MArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -57,9 +57,7 @@
 
 //! Template for N-dimensional array classes with like-type math operators.
 template <typename T>
-class
-OCTARRAY_API
-MArray : public Array<T>
+class OCTARRAY_API MArray : public Array<T>
 {
 public:
 
--- a/liboctave/array/MDiagArray2.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/MDiagArray2.h	Thu Dec 21 17:48:59 2023 -0500
@@ -50,9 +50,7 @@
 
 //! Template for two dimensional diagonal array with math operators.
 template <typename T>
-class
-OCTAVE_API
-MDiagArray2 : public DiagArray2<T>
+class OCTAVE_API MDiagArray2 : public DiagArray2<T>
 {
 public:
 
--- a/liboctave/array/MSparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/MSparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -40,9 +40,7 @@
 
 // Two dimensional sparse array with math ops.
 template <typename T>
-class
-OCTAVE_API
-MSparse : public Sparse<T>
+class OCTAVE_API MSparse : public Sparse<T>
 {
 public:
 
--- a/liboctave/array/MatrixType.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/MatrixType.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 
 #include "MSparse.h"
 
-class
-MatrixType
+class MatrixType
 {
 public:
   enum matrix_type
--- a/liboctave/array/Range.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/Range.h	Thu Dec 21 17:48:59 2023 -0500
@@ -45,8 +45,7 @@
 // in ov.cc.
 
 template <typename T>
-class
-range<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
+class range<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
 {
 public:
 
--- a/liboctave/array/Sparse.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/Sparse.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -150,9 +150,9 @@
   // Always preserve space for 1 element.
   nz = (nz > 0 ? nz : 1);
 
-  // Skip reallocation if we have less than 1/frac extra elements to discard.
-  static const int frac = 5;
-  if (nz > m_nzmax || nz < m_nzmax - m_nzmax/frac)
+  // Skip reallocation if we have less than 1/FRAC extra elements to discard.
+  static const int FRAC = 5;
+  if (nz > m_nzmax || nz < m_nzmax - m_nzmax/FRAC)
     {
       // Reallocate.
       octave_idx_type min_nzmax = std::min (nz, m_nzmax);
--- a/liboctave/array/Sparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/Sparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -43,9 +43,7 @@
 // all the derived classes.
 
 template <typename T, typename Alloc>
-class
-OCTAVE_API
-Sparse
+class OCTAVE_API Sparse
 {
 public:
 
--- a/liboctave/array/boolMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/boolMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-boolMatrix : public boolNDArray
+class OCTAVE_API boolMatrix : public boolNDArray
 {
 public:
 
--- a/liboctave/array/boolNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/boolNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-boolNDArray : public Array<bool>
+class OCTAVE_API boolNDArray : public Array<bool>
 {
 public:
 
--- a/liboctave/array/boolSparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/boolSparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 #include "boolNDArray.h"
 #include "mx-fwd.h"
 
-class
-OCTAVE_API
-SparseBoolMatrix : public Sparse<bool>
+class OCTAVE_API SparseBoolMatrix : public Sparse<bool>
 {
 public:
 
--- a/liboctave/array/chMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/chMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 #include "mx-op-decl.h"
 #include "str-vec.h"
 
-class
-OCTAVE_API
-charMatrix : public charNDArray
+class OCTAVE_API charMatrix : public charNDArray
 {
   friend class ComplexMatrix;
 
--- a/liboctave/array/chNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/chNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 #include "mx-op-decl.h"
 #include "str-vec.h"
 
-class
-OCTAVE_API
-charNDArray : public Array<char>
+class OCTAVE_API charNDArray : public Array<char>
 {
 public:
 
--- a/liboctave/array/dColVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dColVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "MArray.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-ColumnVector : public MArray<double>
+class OCTAVE_API ColumnVector : public MArray<double>
 {
 public:
 
--- a/liboctave/array/dDiagMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dDiagMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 #include "dRowVector.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-DiagMatrix : public MDiagArray2<double>
+class OCTAVE_API DiagMatrix : public MDiagArray2<double>
 {
 public:
 
--- a/liboctave/array/dMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-Matrix : public NDArray
+class OCTAVE_API Matrix : public NDArray
 {
 public:
 
--- a/liboctave/array/dNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-NDArray : public MArray<double>
+class OCTAVE_API NDArray : public MArray<double>
 {
 public:
 
--- a/liboctave/array/dRowVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dRowVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "MArray.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-RowVector : public MArray<double>
+class OCTAVE_API RowVector : public MArray<double>
 {
 public:
 
--- a/liboctave/array/dSparse.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dSparse.h	Thu Dec 21 17:48:59 2023 -0500
@@ -40,8 +40,7 @@
 #include "dMatrix.h"
 #include "dNDArray.h"
 
-class
-SparseMatrix : public MSparse<double>
+class SparseMatrix : public MSparse<double>
 {
 public:
 
--- a/liboctave/array/dim-vector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/dim-vector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -88,9 +88,7 @@
 //! that rep points to the beginning of dims to grant faster access
 //! (reinterpret_cast is assumed to be an inexpensive operation).
 
-class
-OCTAVE_API
-dim_vector
+class OCTAVE_API dim_vector
 {
 private:
 
--- a/liboctave/array/fCColVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fCColVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "MArray.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-FloatComplexColumnVector : public MArray<FloatComplex>
+class OCTAVE_API FloatComplexColumnVector : public MArray<FloatComplex>
 {
   friend class FloatComplexMatrix;
   friend class FloatComplexRowVector;
--- a/liboctave/array/fCDiagMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fCDiagMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 #include "fRowVector.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-FloatComplexDiagMatrix : public MDiagArray2<FloatComplex>
+class OCTAVE_API FloatComplexDiagMatrix : public MDiagArray2<FloatComplex>
 {
 public:
 
--- a/liboctave/array/fCMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fCMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 #include "mx-op-decl.h"
 #include "oct-cmplx.h"
 
-class
-OCTAVE_API
-FloatComplexMatrix : public FloatComplexNDArray
+class OCTAVE_API FloatComplexMatrix : public FloatComplexNDArray
 {
 public:
 
--- a/liboctave/array/fCNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fCNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-FloatComplexNDArray : public MArray<FloatComplex>
+class OCTAVE_API FloatComplexNDArray : public MArray<FloatComplex>
 {
 public:
 
--- a/liboctave/array/fCRowVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fCRowVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,9 +32,7 @@
 #include "fRowVector.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-FloatComplexRowVector : public MArray<FloatComplex>
+class OCTAVE_API FloatComplexRowVector : public MArray<FloatComplex>
 {
   friend class FloatComplexColumnVector;
 
--- a/liboctave/array/fColVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fColVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "MArray.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-FloatColumnVector : public MArray<float>
+class OCTAVE_API FloatColumnVector : public MArray<float>
 {
 public:
 
--- a/liboctave/array/fDiagMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fDiagMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 #include "fRowVector.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-FloatDiagMatrix : public MDiagArray2<float>
+class OCTAVE_API FloatDiagMatrix : public MDiagArray2<float>
 {
 public:
 
--- a/liboctave/array/fMatrix.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fMatrix.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-FloatMatrix : public FloatNDArray
+class OCTAVE_API FloatMatrix : public FloatNDArray
 {
 public:
 
--- a/liboctave/array/fNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 
-class
-OCTAVE_API
-FloatNDArray : public MArray<float>
+class OCTAVE_API FloatNDArray : public MArray<float>
 {
 public:
 
--- a/liboctave/array/fRowVector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/fRowVector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "MArray.h"
 #include "mx-defs.h"
 
-class
-OCTAVE_API
-FloatRowVector : public MArray<float>
+class OCTAVE_API FloatRowVector : public MArray<float>
 {
 public:
 
--- a/liboctave/array/idx-vector.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/idx-vector.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -761,7 +761,7 @@
   : m_rep (nullptr)
 {
   // Convert only if it means saving at least half the memory.
-  static const int factor = (2 * sizeof (octave_idx_type));
+  static constexpr int factor = (2 * sizeof (octave_idx_type));
   octave_idx_type nnz = bnda.nnz ();
   if (nnz <= bnda.numel () / factor)
     m_rep = new idx_vector_rep (bnda, nnz);
--- a/liboctave/array/idx-vector.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/idx-vector.h	Thu Dec 21 17:48:59 2023 -0500
@@ -54,9 +54,7 @@
 // as templates implementing "early dispatch", i.e., hoisting the checks
 // for index type out of loops.
 
-class
-OCTAVE_API
-idx_vector
+class OCTAVE_API idx_vector
 {
 public:
 
--- a/liboctave/array/intNDArray.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/array/intNDArray.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,8 +34,7 @@
 #include "boolNDArray.h"
 
 template <typename T>
-class
-intNDArray : public MArray<T>
+class intNDArray : public MArray<T>
 {
 public:
 
--- a/liboctave/numeric/DAE.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DAE.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "DAEFunc.h"
 #include "base-dae.h"
 
-class
-OCTAVE_API
-DAE : public base_diff_alg_eqn, public DAEFunc
+class OCTAVE_API DAE : public base_diff_alg_eqn, public DAEFunc
 {
 public:
 
--- a/liboctave/numeric/DAEFunc.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DAEFunc.h	Thu Dec 21 17:48:59 2023 -0500
@@ -30,8 +30,7 @@
 
 #include "mx-fwd.h"
 
-class
-DAEFunc
+class DAEFunc
 {
 public:
 
--- a/liboctave/numeric/DAERT.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DAERT.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 #include "DAERTFunc.h"
 #include "base-dae.h"
 
-class
-DAERT : public base_diff_alg_eqn, public DAERTFunc
+class DAERT : public base_diff_alg_eqn, public DAERTFunc
 {
 public:
 
--- a/liboctave/numeric/DAERTFunc.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DAERTFunc.h	Thu Dec 21 17:48:59 2023 -0500
@@ -30,8 +30,7 @@
 
 #include "DAEFunc.h"
 
-class
-DAERTFunc : public DAEFunc
+class DAERTFunc : public DAEFunc
 {
 public:
 
--- a/liboctave/numeric/DASPK.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DASPK.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 
 #include "mx-fwd.h"
 
-class
-OCTAVE_API
-DASPK : public DAE, public DASPK_options
+class OCTAVE_API DASPK : public DAE, public DASPK_options
 {
 public:
 
--- a/liboctave/numeric/DASRT.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DASRT.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,8 +34,7 @@
 #include "DASRT-opts.h"
 #include "dMatrix.h"
 
-class
-DASRT_result
+class DASRT_result
 {
 public:
 
@@ -72,9 +71,7 @@
   ColumnVector m_t;
 };
 
-class
-OCTAVE_API
-DASRT : public DAERT, public DASRT_options
+class OCTAVE_API DASRT : public DAERT, public DASRT_options
 {
 public:
 
--- a/liboctave/numeric/DASSL.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DASSL.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 #include "Array.h"
 #include "DASSL-opts.h"
 
-class
-OCTAVE_API
-DASSL : public DAE, public DASSL_options
+class OCTAVE_API DASSL : public DAE, public DASSL_options
 {
 public:
 
--- a/liboctave/numeric/DET.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/DET.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,8 +34,7 @@
 #include "oct-cmplx.h"
 
 template <typename T>
-class
-base_det
+class base_det
 {
 public:
 
--- a/liboctave/numeric/EIG.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/EIG.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 #include "CColVector.h"
 #include "CMatrix.h"
 
-class
-OCTAVE_API
-EIG
+class OCTAVE_API EIG
 {
   friend class Matrix;
   friend class ComplexMatrix;
--- a/liboctave/numeric/LSODE.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/LSODE.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 #include "Array.h"
 #include "LSODE-opts.h"
 
-class
-OCTAVE_API
-LSODE : public ODE, public LSODE_options
+class OCTAVE_API LSODE : public ODE, public LSODE_options
 {
 public:
 
--- a/liboctave/numeric/ODE.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/ODE.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 #include "base-de.h"
 #include "dMatrix.h"
 
-class
-ODE : public base_diff_eqn, public ODEFunc
+class ODE : public base_diff_eqn, public ODEFunc
 {
 public:
 
--- a/liboctave/numeric/ODEFunc.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/ODEFunc.h	Thu Dec 21 17:48:59 2023 -0500
@@ -30,8 +30,7 @@
 
 #include "mx-fwd.h"
 
-class
-ODEFunc
+class ODEFunc
 {
 public:
 
--- a/liboctave/numeric/ODES.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/ODES.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,8 +31,7 @@
 #include "ODESFunc.h"
 #include "base-de.h"
 
-class
-ODES : public base_diff_eqn, public ODESFunc
+class ODES : public base_diff_eqn, public ODESFunc
 {
 public:
 
--- a/liboctave/numeric/ODESFunc.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/ODESFunc.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 
 #include "dMatrix.h"
 
-class
-ODESFunc
+class ODESFunc
 {
 public:
 
--- a/liboctave/numeric/Quad.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/Quad.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 
 #include "Quad-opts.h"
 
-class
-OCTAVE_API
-Quad : public Quad_options
+class OCTAVE_API Quad : public Quad_options
 {
 public:
 
@@ -118,9 +116,7 @@
   float_integrand_fcn m_ff;
 };
 
-class
-OCTAVE_API
-DefQuad : public Quad
+class OCTAVE_API DefQuad : public Quad
 {
 public:
 
@@ -159,9 +155,7 @@
   ColumnVector m_singularities;
 };
 
-class
-OCTAVE_API
-IndefQuad : public Quad
+class OCTAVE_API IndefQuad : public Quad
 {
 public:
 
@@ -189,9 +183,7 @@
   IntegralType m_type;
 };
 
-class
-OCTAVE_API
-FloatDefQuad : public Quad
+class OCTAVE_API FloatDefQuad : public Quad
 {
 public:
 
@@ -230,9 +222,7 @@
   FloatColumnVector m_singularities;
 };
 
-class
-OCTAVE_API
-FloatIndefQuad : public Quad
+class OCTAVE_API FloatIndefQuad : public Quad
 {
 public:
 
--- a/liboctave/numeric/aepbalance.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/aepbalance.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename MT>
-class
-aepbalance
+class aepbalance
 {
 public:
 
--- a/liboctave/numeric/base-dae.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/base-dae.h	Thu Dec 21 17:48:59 2023 -0500
@@ -30,8 +30,7 @@
 
 #include "base-de.h"
 
-class
-base_diff_alg_eqn : public base_diff_eqn
+class base_diff_alg_eqn : public base_diff_eqn
 {
 public:
 
--- a/liboctave/numeric/base-de.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/base-de.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 
 #include "dColVector.h"
 
-class
-base_diff_eqn
+class base_diff_eqn
 {
 public:
 
--- a/liboctave/numeric/chol.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/chol.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,8 +33,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-chol
+class chol
 {
 public:
 
--- a/liboctave/numeric/fEIG.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/fEIG.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 #include "fCColVector.h"
 #include "fCMatrix.h"
 
-class
-OCTAVE_API
-FloatEIG
+class OCTAVE_API FloatEIG
 {
   friend class FloatMatrix;
   friend class FloatComplexMatrix;
--- a/liboctave/numeric/gepbalance.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/gepbalance.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-gepbalance
+class gepbalance
 {
 public:
 
--- a/liboctave/numeric/gsvd.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/gsvd.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-OCTAVE_API
-gsvd
+class OCTAVE_API gsvd
 {
 public:
 
--- a/liboctave/numeric/hess.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/hess.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-hess
+class hess
 {
 public:
 
--- a/liboctave/numeric/lo-mappers.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/lo-mappers.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -187,29 +187,29 @@
 octave_idx_type
 nint_big (double x)
 {
-  static const double out_of_range_top
-    = static_cast<double> (std::numeric_limits<octave_idx_type>::max ())+1.;
+  static constexpr double out_of_range_top
+    = static_cast<double> (std::numeric_limits<octave_idx_type>::max ()) + 1.0;
+
   if (x >= out_of_range_top)
     return std::numeric_limits<octave_idx_type>::max ();
   else if (x < std::numeric_limits<octave_idx_type>::min ())
     return std::numeric_limits<octave_idx_type>::min ();
   else
-    return static_cast<octave_idx_type> ((x > 0.0) ? (x + 0.5)
-                                         : (x - 0.5));
+    return static_cast<octave_idx_type> ((x > 0.0) ? (x + 0.5) : (x - 0.5));
 }
 
 octave_idx_type
 nint_big (float x)
 {
-  static const float out_of_range_top
-    = static_cast<float> (std::numeric_limits<octave_idx_type>::max ())+1.;
+  static constexpr float out_of_range_top
+    = static_cast<float> (std::numeric_limits<octave_idx_type>::max ()) + 1.0;
+
   if (x >= out_of_range_top)
     return std::numeric_limits<octave_idx_type>::max ();
   else if (x < std::numeric_limits<octave_idx_type>::min ())
     return std::numeric_limits<octave_idx_type>::min ();
   else
-    return static_cast<octave_idx_type> ((x > 0.0f) ? (x + 0.5f)
-                                         : (x - 0.5f));
+    return static_cast<octave_idx_type> ((x > 0.0f) ? (x + 0.5f) : (x - 0.5f));
 }
 
 int
@@ -226,8 +226,9 @@
 int
 nint (float x)
 {
-  static const float out_of_range_top
-    = static_cast<float> (std::numeric_limits<int>::max ()) + 1.;
+  static constexpr float out_of_range_top
+    = static_cast<float> (std::numeric_limits<int>::max ()) + 1.0;
+
   if (x >= out_of_range_top)
     return std::numeric_limits<int>::max ();
   else if (x < std::numeric_limits<int>::min ())
--- a/liboctave/numeric/lu.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/lu.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,8 +37,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-lu
+class lu
 {
 public:
 
--- a/liboctave/numeric/oct-fftw.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/oct-fftw.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTAVE_API
-fftw_planner
+class OCTAVE_API fftw_planner
 {
 protected:
 
@@ -179,9 +177,7 @@
   int m_nthreads;
 };
 
-class
-OCTAVE_API
-float_fftw_planner
+class OCTAVE_API float_fftw_planner
 {
 protected:
 
@@ -321,9 +317,7 @@
   int m_nthreads;
 };
 
-class
-OCTAVE_API
-fftw
+class OCTAVE_API fftw
 {
 public:
 
--- a/liboctave/numeric/qr.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/qr.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-qr
+class qr
 {
 public:
 
--- a/liboctave/numeric/qrp.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/qrp.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,8 +36,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-qrp : public qr<T>
+class qrp : public qr<T>
 {
 public:
 
--- a/liboctave/numeric/schur.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/schur.h	Thu Dec 21 17:48:59 2023 -0500
@@ -42,8 +42,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-schur
+class schur
 {
 public:
 
--- a/liboctave/numeric/sparse-chol.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/sparse-chol.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,9 +44,7 @@
 // of the matrix type.
 
 template <typename chol_type>
-class
-OCTAVE_API
-sparse_chol
+class OCTAVE_API sparse_chol
 {
 public:
 
--- a/liboctave/numeric/sparse-lu.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/sparse-lu.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,9 +44,7 @@
 // of the matrix type.
 
 template <typename lu_type>
-class
-OCTAVE_API
-sparse_lu
+class OCTAVE_API sparse_lu
 {
 public:
 
--- a/liboctave/numeric/sparse-qr.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/sparse-qr.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -45,13 +45,11 @@
 
 #if defined (HAVE_CXSPARSE)
 template <typename SPARSE_T>
-class
-cxsparse_types
+class cxsparse_types
 { };
 
 template <>
-class
-cxsparse_types<SparseMatrix>
+class cxsparse_types<SparseMatrix>
 {
 public:
   typedef CXSPARSE_DNAME (s) symbolic_type;
@@ -59,8 +57,7 @@
 };
 
 template <>
-class
-cxsparse_types<SparseComplexMatrix>
+class cxsparse_types<SparseComplexMatrix>
 {
 public:
   typedef CXSPARSE_ZNAME (s) symbolic_type;
@@ -3072,16 +3069,14 @@
 // Bateman's original code.
 
 template <typename SPARSE_T>
-class
-cxsparse_defaults
+class cxsparse_defaults
 {
 public:
   enum { order = -1 };
 };
 
 template <>
-class
-cxsparse_defaults<SparseMatrix>
+class cxsparse_defaults<SparseMatrix>
 {
 public:
 #if (defined (HAVE_SPQR) && defined (HAVE_CHOLMOD))
@@ -3092,8 +3087,7 @@
 };
 
 template <>
-class
-cxsparse_defaults<SparseComplexMatrix>
+class cxsparse_defaults<SparseComplexMatrix>
 {
 public:
 #if (defined (HAVE_SPQR) && defined (HAVE_CHOLMOD))
--- a/liboctave/numeric/sparse-qr.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/sparse-qr.h	Thu Dec 21 17:48:59 2023 -0500
@@ -44,8 +44,7 @@
 // of the matrix type.
 
 template <typename SPARSE_T>
-class
-sparse_qr
+class sparse_qr
 {
 public:
 
--- a/liboctave/numeric/svd.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/svd.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -44,8 +44,7 @@
 
 // class to compute optimal work space size (lwork) for DGEJSV and SGEJSV
 template<typename T>
-class
-gejsv_lwork
+class gejsv_lwork
 {
 public:
 
--- a/liboctave/numeric/svd.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/numeric/svd.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,9 +35,7 @@
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
-class
-OCTAVE_API
-svd
+class OCTAVE_API svd
 {
 public:
 
--- a/liboctave/system/dir-ops.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/dir-ops.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(sys)
 
-class
-OCTAVE_API
-dir_entry
+class OCTAVE_API dir_entry
 {
 
   // NOTE: This class cannot be used safely cross-platform (Windows) with
--- a/liboctave/system/file-stat.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/file-stat.h	Thu Dec 21 17:48:59 2023 -0500
@@ -38,9 +38,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(sys)
 
-class
-OCTAVE_API
-base_file_stat
+class OCTAVE_API base_file_stat
 {
 public:
 
@@ -208,9 +206,7 @@
   long m_blocks;
 };
 
-class
-OCTAVE_API
-file_stat : public base_file_stat
+class OCTAVE_API file_stat : public base_file_stat
 {
 public:
 
@@ -269,9 +265,7 @@
   void update_internal (bool force = false);
 };
 
-class
-OCTAVE_API
-file_fstat : public base_file_stat
+class OCTAVE_API file_fstat : public base_file_stat
 {
 public:
 
--- a/liboctave/system/oct-env.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/oct-env.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(sys)
 
-class
-OCTAVE_API
-env
+class OCTAVE_API env
 {
 protected:
 
--- a/liboctave/system/oct-group.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/oct-group.h	Thu Dec 21 17:48:59 2023 -0500
@@ -38,9 +38,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(sys)
 
-class
-OCTAVE_API
-group
+class OCTAVE_API group
 {
 public:
 
--- a/liboctave/system/oct-password.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/oct-password.h	Thu Dec 21 17:48:59 2023 -0500
@@ -36,9 +36,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(sys)
 
-class
-OCTAVE_API
-password
+class OCTAVE_API password
 {
 public:
 
--- a/liboctave/system/oct-time.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/oct-time.h	Thu Dec 21 17:48:59 2023 -0500
@@ -59,8 +59,7 @@
 
 class base_tm;
 
-class
-time
+class time
 {
 public:
 
@@ -193,8 +192,7 @@
                t1.usec () + t2.usec ());
 }
 
-class
-base_tm
+class base_tm
 {
 public:
 
@@ -306,8 +304,7 @@
   OCTAVE_API void init (void *p);
 };
 
-class
-localtime : public base_tm
+class localtime : public base_tm
 {
 public:
 
@@ -333,8 +330,7 @@
   OCTAVE_API void init (const time& ot);
 };
 
-class
-gmtime : public base_tm
+class gmtime : public base_tm
 {
 public:
 
@@ -351,8 +347,7 @@
   OCTAVE_API void init (const time& ot);
 };
 
-class
-strptime : public base_tm
+class strptime : public base_tm
 {
 public:
 
@@ -375,8 +370,7 @@
   OCTAVE_API void init (const std::string& str, const std::string& fmt);
 };
 
-class
-cpu_time
+class cpu_time
 {
 public:
 
@@ -422,8 +416,7 @@
   { }
 };
 
-class
-resource_usage
+class resource_usage
 {
 public:
 
--- a/liboctave/system/oct-uname.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/system/oct-uname.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(sys)
 
-class
-OCTAVE_API
-uname
+class OCTAVE_API uname
 {
 public:
 
--- a/liboctave/util/action-container.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/action-container.h	Thu Dec 21 17:48:59 2023 -0500
@@ -56,8 +56,7 @@
 
 OCTAVE_END_NAMESPACE(util)
 
-class
-action_container
+class action_container
 {
 public:
 
--- a/liboctave/util/base-list.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/base-list.h	Thu Dec 21 17:48:59 2023 -0500
@@ -35,8 +35,7 @@
 OCTAVE_BEGIN_NAMESPACE(octave)
 
 template <typename elt_type>
-class
-base_list
+class base_list
 {
 public:
 
--- a/liboctave/util/cmd-edit.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/cmd-edit.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -69,8 +69,7 @@
 
 #if defined (USE_READLINE)
 
-class
-gnu_readline : public command_editor
+class gnu_readline : public command_editor
 {
 public:
 
@@ -929,8 +928,7 @@
 
 #endif
 
-class
-default_command_editor : public command_editor
+class default_command_editor : public command_editor
 {
 public:
 
--- a/liboctave/util/cmd-edit.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/cmd-edit.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTAVE_API
-command_editor
+class OCTAVE_API command_editor
 {
 protected:
 
--- a/liboctave/util/cmd-hist.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/cmd-hist.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -56,8 +56,7 @@
 
 #if defined (USE_READLINE)
 
-class
-gnu_history : public command_history
+class gnu_history : public command_history
 {
 public:
 
--- a/liboctave/util/cmd-hist.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/cmd-hist.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTAVE_API
-command_history
+class OCTAVE_API command_history
 {
 protected:
 
--- a/liboctave/util/data-conv.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/data-conv.h	Thu Dec 21 17:48:59 2023 -0500
@@ -31,9 +31,7 @@
 #include "mach-info.h"
 #include "oct-inttypes-fwd.h"
 
-class
-OCTAVE_API
-oct_data_conv
+class OCTAVE_API oct_data_conv
 {
 public:
 
--- a/liboctave/util/glob-match.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/glob-match.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 #include "Array.h"
 #include "str-vec.h"
 
-class
-OCTAVE_API
-glob_match
+class OCTAVE_API glob_match
 {
 public:
 
@@ -96,9 +94,7 @@
   int opts_to_fnmatch_flags (unsigned int xopts) const;
 };
 
-class
-OCTAVE_API
-symbol_match
+class OCTAVE_API symbol_match
 {
 
 // This class is meant to provide a performant implementation for symbol
--- a/liboctave/util/lo-regexp.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/lo-regexp.h	Thu Dec 21 17:48:59 2023 -0500
@@ -39,9 +39,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTAVE_API
-regexp
+class OCTAVE_API regexp
 {
 public:
 
--- a/liboctave/util/oct-inttypes.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-inttypes.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -538,8 +538,8 @@
 OCTAVE_API octave_int64
 operator - (const double& x, const octave_int64& y)
 {
-  static const bool twosc = (std::numeric_limits<int64_t>::min ()
-                             < -std::numeric_limits<int64_t>::max ());
+  static constexpr bool twosc = (std::numeric_limits<int64_t>::min ()
+                                 < -std::numeric_limits<int64_t>::max ());
   // In case of symmetric integers (not two's complement), this will probably
   // be eliminated at compile time.
   if (twosc && y.value () == std::numeric_limits<int64_t>::min ())
--- a/liboctave/util/oct-inttypes.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-inttypes.h	Thu Dec 21 17:48:59 2023 -0500
@@ -123,16 +123,16 @@
   class prom
   {
     // Promote to int?
-    static const bool s_pint = (sizeof (T1) < sizeof (int)
-                                && sizeof (T2) < sizeof (int));
+    static constexpr bool s_pint = (sizeof (T1) < sizeof (int)
+                                    && sizeof (T2) < sizeof (int));
 
-    static const bool s_t1sig = std::numeric_limits<T1>::is_signed;
-    static const bool s_t2sig = std::numeric_limits<T2>::is_signed;
+    static constexpr bool s_t1sig = std::numeric_limits<T1>::is_signed;
+    static constexpr bool s_t2sig = std::numeric_limits<T2>::is_signed;
 
-    static const bool s_psig
+    static constexpr bool s_psig
       = (s_pint || (sizeof (T2) > sizeof (T1) && s_t2sig) || s_t1sig);
 
-    static const int s_psize
+    static constexpr int s_psize
       = (s_pint
          ? sizeof (int)
          : (sizeof (T2) > sizeof (T1) ? sizeof (T2) : sizeof (T1)));
@@ -185,8 +185,8 @@
   {                                                     \
   public:                                               \
                                                         \
-    static const bool ltval = (0 OP 1);                 \
-    static const bool gtval = (1 OP 0);                 \
+    static constexpr bool ltval = (0 OP 1);             \
+    static constexpr bool gtval = (1 OP 0);             \
                                                         \
     template <typename T>                               \
     static bool op (T x, T y) { return x OP y; }        \
@@ -209,8 +209,8 @@
   {                                             \
   public:                                       \
                                                 \
-    static const bool ltval = VALUE;            \
-    static const bool gtval = VALUE;            \
+    static constexpr bool ltval = VALUE;        \
+    static constexpr bool gtval = VALUE;        \
                                                 \
     template <typename T>                       \
       static bool op (T, T) { return VALUE; }   \
@@ -357,16 +357,16 @@
     // An exhaustive test whether the max and/or min check can be
     // omitted.
 
-    static const bool t_is_signed = std::numeric_limits<T>::is_signed;
-    static const bool s_is_signed = std::numeric_limits<S>::is_signed;
+    static constexpr bool t_is_signed = std::numeric_limits<T>::is_signed;
+    static constexpr bool s_is_signed = std::numeric_limits<S>::is_signed;
 
-    static const int t_size = sizeof (T);
-    static const int s_size = sizeof (S);
+    static constexpr int t_size = sizeof (T);
+    static constexpr int s_size = sizeof (S);
 
-    static const bool omit_chk_min
+    static constexpr bool omit_chk_min
       = (! s_is_signed || (t_is_signed && t_size >= s_size));
 
-    static const bool omit_chk_max
+    static constexpr bool omit_chk_max
       = (t_size > s_size
          || (t_size == s_size && (! t_is_signed || s_is_signed)));
 
@@ -779,9 +779,7 @@
 { };
 
 template <typename T>
-class
-OCTAVE_TEMPLATE_API
-octave_int : public octave_int_base<T>
+class OCTAVE_TEMPLATE_API octave_int : public octave_int_base<T>
 {
 public:
 
--- a/liboctave/util/oct-mutex.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-mutex.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -60,8 +60,7 @@
 
 #if defined (OCTAVE_USE_WINDOWS_API)
 
-class
-w32_mutex : public base_mutex
+class w32_mutex : public base_mutex
 {
 public:
   w32_mutex ()
@@ -110,8 +109,7 @@
 
 #elif defined (HAVE_PTHREAD_H)
 
-class
-pthread_mutex : public base_mutex
+class pthread_mutex : public base_mutex
 {
 public:
 
--- a/liboctave/util/oct-mutex.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-mutex.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 
 class mutex;
 
-class
-OCTAVE_API
-base_mutex
+class OCTAVE_API base_mutex
 {
 public:
   friend class mutex;
@@ -52,9 +50,7 @@
   virtual bool try_lock ();
 };
 
-class
-OCTAVE_API
-mutex
+class OCTAVE_API mutex
 {
 public:
   mutex ();
@@ -80,9 +76,7 @@
   std::shared_ptr<base_mutex> m_rep;
 };
 
-class
-OCTAVE_API
-autolock
+class OCTAVE_API autolock
 {
 public:
   autolock (const mutex& m, bool block = true)
@@ -117,9 +111,7 @@
 };
 
 
-class
-OCTAVE_API
-thread
+class OCTAVE_API thread
 {
 public:
 
--- a/liboctave/util/oct-shlib.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-shlib.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -173,8 +173,7 @@
 
 #if defined (HAVE_DLOPEN_API)
 
-class
-octave_dlopen_shlib : public dynamic_library::dynlib_rep
+class octave_dlopen_shlib : public dynamic_library::dynlib_rep
 {
 public:
 
@@ -275,8 +274,7 @@
 
 #elif defined (HAVE_LOADLIBRARY_API)
 
-class
-octave_w32_shlib: public dynamic_library::dynlib_rep
+class octave_w32_shlib: public dynamic_library::dynlib_rep
 {
 public:
 
--- a/liboctave/util/oct-shlib.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-shlib.h	Thu Dec 21 17:48:59 2023 -0500
@@ -38,8 +38,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-dynamic_library
+class dynamic_library
 {
 public: // FIXME: make this class private?
 
--- a/liboctave/util/oct-sort.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-sort.h	Thu Dec 21 17:48:59 2023 -0500
@@ -97,9 +97,7 @@
 enum sortmode { UNSORTED = 0, ASCENDING, DESCENDING };
 
 template <typename T>
-class
-OCTAVE_TEMPLATE_API
-octave_sort
+class OCTAVE_TEMPLATE_API octave_sort
 {
 public:
 
@@ -339,9 +337,7 @@
 };
 
 template <typename T>
-class
-OCTAVE_TEMPLATE_API
-vec_index
+class OCTAVE_TEMPLATE_API vec_index
 {
 public:
   T m_vec;
--- a/liboctave/util/oct-string.cc	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-string.cc	Thu Dec 21 17:48:59 2023 -0500
@@ -917,10 +917,11 @@
   if (len <= 0)
     len = 10;
 
-  static const T out_of_range_top
-    = static_cast<T> (std::numeric_limits<int>::max ()) + 1.;
-  static const T out_of_range_bottom
-    = static_cast<T> (std::numeric_limits<int>::min ()) - 1.;
+  static constexpr T out_of_range_top
+    = static_cast<T> (std::numeric_limits<int>::max ()) + 1.0;
+  static constexpr T out_of_range_bottom
+    = static_cast<T> (std::numeric_limits<int>::min ()) - 1.0;
+
   if (octave::math::isinf (val))
     {
       if (val > 0)
--- a/liboctave/util/oct-string.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/oct-string.h	Thu Dec 21 17:48:59 2023 -0500
@@ -179,9 +179,7 @@
   OCTAVE_DEFAULT_COPY_MOVE_DELETE (deletable_facet)
 };
 
-class
-OCTAVE_API
-codecvt_u8 : public std::codecvt<char, char, std::mbstate_t>
+class OCTAVE_API codecvt_u8 : public std::codecvt<char, char, std::mbstate_t>
 {
 public:
 
--- a/liboctave/util/octave-preserve-stream-state.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/octave-preserve-stream-state.h	Thu Dec 21 17:48:59 2023 -0500
@@ -32,8 +32,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-preserve_stream_state
+class preserve_stream_state
 {
 public:
 
--- a/liboctave/util/pathsearch.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/pathsearch.h	Thu Dec 21 17:48:59 2023 -0500
@@ -33,9 +33,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTAVE_API
-directory_path
+class OCTAVE_API directory_path
 {
 public:
 
--- a/liboctave/util/singleton-cleanup.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/singleton-cleanup.h	Thu Dec 21 17:48:59 2023 -0500
@@ -30,9 +30,7 @@
 
 #include <set>
 
-class
-OCTAVE_API
-singleton_cleanup_list
+class OCTAVE_API singleton_cleanup_list
 {
 protected:
 
--- a/liboctave/util/str-vec.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/str-vec.h	Thu Dec 21 17:48:59 2023 -0500
@@ -34,9 +34,7 @@
 
 #include "Array.h"
 
-class
-OCTAVE_API
-string_vector
+class OCTAVE_API string_vector
 {
 public:
 
--- a/liboctave/util/unwind-prot.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/unwind-prot.h	Thu Dec 21 17:48:59 2023 -0500
@@ -37,9 +37,7 @@
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
-class
-OCTAVE_API
-unwind_protect : public action_container
+class OCTAVE_API unwind_protect : public action_container
 {
 public:
 
@@ -92,9 +90,7 @@
 // of seeing an exception (or interrupt) in the cleanup actions.
 // Not that we can do much about it, but at least we won't crash.
 
-class
-OCTAVE_API
-unwind_protect_safe : public unwind_protect
+class OCTAVE_API unwind_protect_safe : public unwind_protect
 {
 private:
 
--- a/liboctave/util/url-transfer.h	Wed Dec 20 16:07:27 2023 +0100
+++ b/liboctave/util/url-transfer.h	Thu Dec 21 17:48:59 2023 -0500
@@ -51,9 +51,7 @@
   std::string CertificateFilename;
 };
 
-class
-OCTAVE_API
-base_url_transfer
+class OCTAVE_API base_url_transfer
 {
 public:
 
@@ -160,9 +158,7 @@
   std::ostream *m_curr_ostream;
 };
 
-class
-OCTAVE_API
-url_transfer
+class OCTAVE_API url_transfer
 {
 public: