Как вы получаете выделенный текст в MATLAB? - PullRequest
5 голосов
/ 20 августа 2010

MATLAB имеет несколько чувствительных к выбору возможностей.Например, если вы выделите какой-нибудь текст и нажмете F9, он оценит ваш выбор.(Если вы не переназначили настройки клавиатуры.)

Я хотел бы иметь возможность скопировать эту функцию для быстрого доступа.Так, например, я хочу нажать на ярлык, который отображает текущий выбор.Мой быстрый вызов будет disp(GetSelection()).

Но что входит в GetSelection?

Ответы [ 3 ]

5 голосов
/ 20 августа 2010

Благодаря @ Yair Altman недокументированному 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)
0 голосов
/ 20 мая 2015

Если вы хотите использовать что-то подобное, но с текстом, выделенным в редакторе, а не в командном окне.

Я использую следующий код, чтобы иметь возможность быстро проверить 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
0 голосов
/ 20 августа 2010

Я не верю, что есть какой-либо способ контролировать или читать выборку из текстового редактора Matlab, о таком API нет упоминания на веб-сайте Mathworks (по крайней мере, из быстрого поиска в Google).Если вы хотите, чтобы эта функция включала более расширенное редактирование текста, вы можете рассмотреть возможность установки редактора файлов .m для внешнего редактора (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_env/brxijcd.html).. Возможно, можно прочитать выбор из UIcontrol в пользовательском графическом интерфейсе, но я не думаю, что это то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...