(matlab)在各地实施“评估或打开您选择的代码”?

时间:2012-08-18 03:00:29

标签: matlab

  

可能重复:
  How do you retrieve the selected text in MATLAB?

我想在“评估选择”功能中实现并添加一些功能,您可以在其中突出显示代码,然后通过右键单击鼠标(或F9)来“评估选择”。

在编辑器环境中,这就是它的完成方式:

editorObject = matlab.desktop.editor.getActive;
eval([editorObject.SelectedText ';']);

如何从命令行窗口或帮助窗口实现此功能?

修改

也许我没有清楚地表达我的问题。

想象一下,我们已经有了这个名为 eva_select()的函数,我可以这样使用函数:

  1. 我将该功能包装为快捷方式按钮。
  2. 使用鼠标在命令行窗口选择变量,也许我之前输入了,例如 var_a
  3. 然后我点击快捷方式按钮,我之前选择的文本将被执行。这与按 F9 键完全相同,或者选择鼠标右键菜单 - “评估选择”。
  4. 但是如果我们真的有这个功能,我们可以做得更多!我们可以将eva_select()修改为eva_select_ size (),这样我们就可以在命令行窗口或帮助窗口中选择一个变量,比如 var_a ,点击eva_select_size()快捷方式按钮,然后,我们将在命令行窗口获得大小(var_a)

    修改

    谢谢,我可以在命令窗口中检索文本,但我不能在帮助窗口中做同样的事情,是否可以这样做?

2 个答案:

答案 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

接下来在命令窗口中突出显示变量名称并执行快捷方式。尺寸将立即打印,如下面的屏幕截图所示:

screenshot

答案 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

就像我说的那样,它并不漂亮,但它应该可以解决问题。