2009-12-03 3 views
21

Мы все знаем, что MATLAB обеспечивает выполнение табуляции для имен файлов, используемых в качестве аргументов в функции MATLAB, таких как importdata, imread. Как мы это делаем для создаваемых нами функций?Tab-завершение имен файлов в качестве аргументов для скриптов MATLAB

EDIT:

alt text

Отображает файлы и папки в текущей директории.

+0

Вы говорите о том, как вы можете ввести первую часть имени функции в редакторе или Command Window, а затем нажмите вкладку, чтобы получить список имен функций, которые завершают это? Все функции, которые я написал, которые находятся на текущем пути MATLAB, появляются, когда я это делаю. – gnovice

+0

@gnovice: Я обновил свой вопрос – Jacob

+0

Мне нужно будет проверить завтра (когда у меня будет доступ к MATLAB), но я * думаю * MATLAB выполнит выполнение табуляции с каталогами/файлами в качестве предложений при каждом вводе текста в строковом значении. – gnovice

ответ

22

Предостережение: неподдерживаемый взлом здесь.

Посмотрите на файл toolbox \ local \ TC.xml в вашей установке Matlab. Кажется, что они содержат сопоставления типов аргументов для завершения табуляции. (Я нашел это, просто воспользовавшись установкой Matlab для «imread» в R2009b.)

Добавление этой строки внутри элемента <TC> позволит вам выполнить пополнение имени файла для каждого из его аргументов.

<binding name="importdata"  ctype="FILE"/> 

Для этого необходимо модифицировать установку Matlab. Для некоторых других файлов в toolbox/local, таких как classpath.txt, вы можете переопределить их, поместив модифицированные копии в каталог, в котором вы запускаете Matlab, но для TC.xml для меня это не работало.

+0

Это очень хорошо! – Jacob

+0

wow, spiffy! .... –

+0

Является ли это решение, через 6 лет и в версии R2015b все еще актуальным? Как и в случае: существует ли теперь не-хакерский способ сделать это и/или все еще работает? – Adriaan

5

Нет поддерживаемого способа добавления ваших функций в аргумент Tab, но один трюк, который я использую, - это поставить «!». перед командой, поэтому она рассматривается как системная команда. Затем вкладка завершит пути к файлам. Как только моя команда MATLAB будет завершена, я вернусь к началу строки, удалив "!" и нажмите enter.

+0

@Mike: Да, это может сработать. – Jacob

2

Для Matlab 2016a и выше:

Файл Tc.xml нет в Matlab 2016a года. Для достижения этого используется файл .json (Java Script Object Notation). Простым примером этого может быть следующее.

Предположим, что у вас есть файл функции Matlab с именем myFunction.m. Кроме того, предположим, что для этой функции нужны файлы с расширением .ext как входные данные, и вы хотите, чтобы вкладка-завершение отображала все возможные параметры ввода для этой функции. Затем напишите следующий файл в файле и назовите его functionSignatures.json.

{ 
"myFunction": 
{ 
    "inputs": 
    [ 
    {"name":"filename", "kind":"required", "type":"filepath=*.ext" } 
    ] 
} 
} 

Поместите этот файл в том же каталоге, что myFunction.m файл. Теперь перезапустите Matlab.

Что делает этот файл: При вводе на входе функции, на вкладке нажатием, вы увидите список файлов с расширением .ext выскакивать. Если вы хотите, чтобы все файлы отображались во всплывающем всплывающем окне, независимо от их расширения, замените "type":"filepath=*.ext" на "type":"filepath" в файле functionSignatures.json.

Источник: https://www.mathworks.com/matlabcentral/answers/306157-how-to-configure-tab-completion-for-my-function-in-matlab-2016#answer_237857

Смежные вопросы