MATLAB具有多种选择敏感功能。例如,如果您选择一些文本并按F9,它将评估您的选择。 (除非您重新设置了键盘设置。)
我希望能够通过快捷方式复制此功能。因此,例如,我想单击显示当前选择的快捷方式。我的快捷方式回调是disp(GetSelection())
。
但GetSelection
会怎样?
答案 0 :(得分:5)
感谢@Yair Altman的undocumented Matlab,我能够找出使其发挥作用的java命令。
将它放在快捷方式(或快捷方式调用的函数)中:
%# find the text area in the command window
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
try
cmdWin = jDesktop.getClient('Command Window');
jTextArea = cmdWin.getComponent(0).getViewport.getComponent(0);
catch
commandwindow;
jTextArea = jDesktop.getMainFrame.getFocusOwner;
end
%# read the current selection
jTxt = jTextArea.getSelectedText;
%# turn into Matlab text
currentSelection = jTxt.toCharArray'; %'
%# display
disp(currentSelection)
答案 1 :(得分:0)
我不相信有任何方法可以控制或从Matlab文本编辑器中读取选择,Mathworks网站上没有提到这样的API(至少在Google上快速搜索)。如果您希望此功能启用更高级的文本编辑,那么您可能需要考虑将.m文件编辑器设置为外部编辑器(http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_env/brxijcd.html)。可以从自定义GUI中的UIcontrol中读取选择,但我认为这不是您想要的。
答案 2 :(得分:0)
如果您想使用类似的内容,但在编辑器中而不是在命令窗口中突出显示文本。
我使用以下代码以便能够快速检查变量的nnz(),尽管您可以将嵌套的try-catch中的代码更改为您需要的任何代码。
最后,我在Matlab的右上角创建了一个带有此代码的快捷方式,按Alt-1可以快速访问。
try
activeEditor = matlab.desktop.editor.getActive;
currentSelection = activeEditor.SelectedText;
try
eval(sprintf('val = nnz(%s);',currentSelection))
disp(sprintf('>> nnz(%s) = %s',currentSelection,num2str(val)))
catch ex
disp(ex.message)
end
catch ex
disp(ex.message)
end