Можно ли отменить закрытие вкладки в редакторе Matlab?

#matlab

#matlab

Вопрос:

Многие веб-браузеры позволяют отменить закрытие вкладки:

введите описание изображения здесь

Можно ли отменить закрытие вкладки в редакторе Matlab?

Я использую R2014a в Windows 7.

Ответ №1:

Он официально не поддерживается в MATLAB, но со ссылкой на недокументированный MATLAB существует обходной путь.

MATLAB сохраняет свое состояние рабочего стола Windows в вызываемом файле MATLABDesktop.xml , который находится в папке пользователя prefdir (каталог предпочтений). Вы можете повторить , где это находится в MATLAB, просто введя prefdir в командной строке и нажав Enterили RETURN. Поскольку вы также используете Windows, вы также можете сделать это, чтобы открыть папку в MATLAB:

 winopen(prefdir);
 

Это должно открыть новое окно Проводника Windows, которое приведет вас непосредственно к prefdir папке.

Этот файл содержит информацию о положении и состоянии каждого окна рабочего стола. Поскольку файлы редактора считаются документами рабочего стола, они также включены в этот файл. Таким образом, когда вы закрываете редактор, эти документы просто удаляются из MATLABDesktop.xml файла.

Оказывается, MATLAB автоматически сохраняет резервную версию этого файла в другом вызываемом файле MATLABDesktop.xml.prev в той же prefdir папке. Я также использую MATLAB R2014a в Windows 7, и я дважды проверил, есть ли эти файлы в моей системе, и они есть!

Поэтому, прежде чем делать что-либо еще, закройте MATLAB, удалите последний MATLABDesktop.xml файл, замените его копией MATLABDesktop.xml.prev файла, переименовав его в MATLABDesktop.xml . После этого перезапустите MATLAB, и редактор должен снова открыться с вашими предыдущими вкладками.

Комментарии:

1. Я всегда впечатлен знаниями о такого рода недокументированных вещах. 1

Ответ №2:

Вы можете использовать следующий код. Он извлекает имена файлов из MATLABDesktop.xml.prev

 %parse XML file
xmlFiles    = xmlread([prefdir filesep 'MATLABDesktop.xml.prev']);
%Retrieve the "clients"
FileNodes   = xmlFiles.getElementsByTagName('Client');
%get the length of the FileNodes
nrFiles     = FileNodes.getLength;
%initialize Files
Files       = cell(nrFiles,1);
%initialize isFile
isFile      = zeros(nrFiles,1);
%Iterate over all Elements and check if it is a file.
for iNode = 0:nrFiles-1 % Java indexing.
    %Files
    Files{iNode 1} = char(FileNodes.item(iNode).getAttribute('Title'));
    %check if the "client" is a file:
    isFile(iNode 1) = exist(Files{iNode 1},'file') == 2 amp;amp; ~(strcmp(Files{iNode 1},'Workspace'));
end
%remove the other files:
MyFiles = Files(find(isFile));
%open the files in the editor:
edit(MyFiles{:});
 

Из mathworks