Завершение имен файлов с помощью табуляции в качестве аргументов для сценариев MATLAB

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

РЕДАКТИРОВАТЬ:

alt text

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


person Jacob    schedule 03.12.2009    source источник
comment
Вы говорите о том, как вы можете ввести первую часть имени функции в редакторе или командном окне, а затем нажать вкладку, чтобы получить список имен функций, которые ее завершают? Все функции, которые я написал, которые находятся на текущем пути MATLAB, появляются, когда я это делаю.   -  person gnovice    schedule 03.12.2009
comment
@gnovice: я обновил свой вопрос   -  person Jacob    schedule 04.12.2009
comment
Мне нужно будет проверить завтра (когда у меня будет доступ к MATLAB), но я думаю, что MATLAB будет выполнять завершение табуляции с каталогами / файлами в качестве предложений всякий раз, когда вы начинаете вводить строковое значение.   -  person gnovice    schedule 04.12.2009
comment
@gnovice: Нет. С imread () тогда да, набрав 'и нажав вкладку, вы увидите список файлов. Попытка сделать это с функцией, которую я написал сам, не дает такого поведения.   -  person Hannes Ovrén    schedule 04.12.2009
comment
Вы можете посмотреть исходный код функций, чтобы увидеть, как это можно сделать. По крайней мере, вы можете сделать это для двух предложенных вами функций.   -  person Pablo Rodriguez    schedule 04.12.2009
comment
@prm: К сожалению, исходный код imread () не показывает ничего, что указывало бы на то, что у него есть такая функциональность.   -  person Hannes Ovrén    schedule 04.12.2009
comment
@prm: Да, я уже проверял код, там ничего нет.   -  person Jacob    schedule 04.12.2009


Ответы (3)


Внимание: здесь не поддерживается взлом.

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

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

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

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

person Andrew Janke    schedule 04.12.2009
comment
Действует ли это решение 6 лет спустя в версии R2015b? Например: есть ли теперь способ сделать это без взлома и / или этот способ все еще работает? - person Adriaan; 20.09.2015
comment
По-прежнему нет официального способа сделать это без взлома, но см. Здесь (undocumentedmatlab.com / blog / setting-desktop-tab-completions) для менее хакерского способа (к сожалению, для записи в TC.xml по-прежнему требуется доступ для записи). - person Elmar Zander; 23.11.2015

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

person Mike Katz    schedule 04.12.2009

Для Matlab 2016a и более поздних версий:

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

Предположим, у вас есть файл функции 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 < / а>

person Abhinav    schedule 19.01.2017
comment
Подчеркну, что перезапуск Matlab важен при создании новых файлов .json - без него Matlab его не увидит. - person scrutari; 24.08.2018