我想在“评估选择”功能中实现并添加一些功能,您可以在其中突出显示代码,然后通过右键单击鼠标(或F9)来“评估选择”。
在编辑器环境中,这就是它的完成方式:
editorObject = matlab.desktop.editor.getActive;
eval([editorObject.SelectedText ';']);
如何从命令行窗口或帮助窗口实现此功能?
修改:
也许我没有清楚地表达我的问题。
想象一下,我们已经有了这个名为 eva_select()的函数,我可以这样使用函数:
但是如果我们真的有这个功能,我们可以做得更多!我们可以将eva_select()修改为eva_select_ size (),这样我们就可以在命令行窗口或帮助窗口中选择一个变量,比如 var_a ,点击eva_select_size()快捷方式按钮,然后,我们将在命令行窗口获得大小(var_a)!
修改:
谢谢,我可以在命令窗口中检索文本,但我不能在帮助窗口中做同样的事情,是否可以这样做?
答案 0 :(得分:3)
与MATLAB桌面中的其他GUI组件一样,命令窗口是基于Java的。因此,它可以通过编程方式访问,但它完全是undocumented,并且它的使用不受官方支持。
探索周围,这是一个似乎在R2012a和R2012b都有效的解决方案。它涉及获取命令窗口的基础JTextArea
的句柄,该窗口用于获取所选文本(以评估所选变量名称的大小)
使用以下代码创建快捷方式:
x = com.mathworks.mde.cmdwin.XCmdWndView.getInstance();
s = char(x.getSelectedText());
if isvarname(s) && exist(s,'var')
eval( sprintf('size(%s)',s) );
end
接下来在命令窗口中突出显示变量名称并执行快捷方式。尺寸将立即打印,如下面的屏幕截图所示:
答案 1 :(得分:0)
它不是很好,因为它是一个外部解决方案,但这是它的工作方式:
假设您在命令窗口中并希望通过选择它来评估大小(var_a),您可以使用键盘宏来执行此操作。定义var_a
的相应功能f(x) = eval('size(' x ')'
%这可以在宏中完成,但在这里可以更好地进行编辑。
然后确保您的宏执行此操作:
Copy 'var_a'
Turn it into 'f(var_a)'
Paste the result
Hit enter
就像我说的那样,它并不漂亮,但它应该可以解决问题。