Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

History of previously opened m-files in MATLAB

Tags:

matlab

history

Is anyway to find history of previously opened m-files in MATLAB R2014b from 2 or 3 months ago? (a list of name of files and paths)

like image 587
Eghbal Avatar asked Feb 23 '15 08:02

Eghbal


2 Answers

Matlab R2014b stores its recent files in:

%APPDATA%\MathWorks\MATLAB\R2014b\MATLAB_Editor_State.xml

It's a .xml file so it's easy to load and parse with xmlread. I'm not very familiar with xml parsing syntax, but here is how to get information about files (to be adapted to your needs of course):

function [recentFiles] = GetRecentFiles()
%[
    % Opens editor's state file
    filepart = sprintf('MathWorks\\MATLAB\\R%s\\%s', version('-release'), 'MATLAB_Editor_State.xml');
    filename = fullfile(getenv('APPDATA'), filepart);
    document = xmlread(filename);

    % Get information about 'File' nodes
    recentFiles = struct([]);
    fileNodes = document.getElementsByTagName('File');
    for fni = 1:(fileNodes.getLength())

       attributes = fileNodes.item(fni-1).getAttributes(); % Careful, zero based indexing !

       for ai = 1:(attributes.getLength())

           % Get node attribute
           name = char(attributes.item(ai-1).getName()); % Zero based + need marshaling COM 'string' type
           value = char(attributes.item(ai-1).getValue()); % Zero based + need marshaling COM 'string' type

           % Save in structure
           name(1) = upper(name(1)); % Just because I prefer capital letter for field names ...
           recentFiles(fni).(name) = value;

       end

    end    
%]
end

This returns a structure like this:

recentFiles = 

1x43 struct array with fields:

    AbsPath
    LastWrittenTime
    Name

NB: I've tried to type in matlab command window matlab.desktop.editor.*, but seems there's nothing regarding recent files (anyway there are a lot of interesting things to manipulate the editor from the command line)

like image 89
CitizenInsane Avatar answered Nov 03 '22 01:11

CitizenInsane


Last answer waIs really helpful. I've just modified it to read and open the recent tab files. This works on Matlab R2013a:

function [recentFiles] = recover_tabs()
%[
% Opens editor's state file
filepart = sprintf('MathWorks\\MATLAB\\R%s\\%s', version('-release'), 'MATLAB_Editor_State.xml');
filename = fullfile(getenv('APPDATA'), filepart);
document = xmlread(filename);

% Get information about 'File' nodes
recentFiles = struct([]);
fileNodes = document.getElementsByTagName('File');
for fni = 1:(fileNodes.getLength())

   attributes = fileNodes.item(fni-1).getAttributes(); % Careful, zero based indexing !

   for ai = 1:(attributes.getLength())

       % Get node attribute
       name = char(attributes.item(ai-1).getName()); % Zero based + need marshaling COM 'string' type
       value = char(attributes.item(ai-1).getValue()); % Zero based + need marshaling COM 'string' type

       % Save in structure
       name(1) = upper(name(1)); % Just because I prefer capital letter for field names ...
       recentFiles(fni).(name) = value;

   end

end    

%     loop to access files in the tab history
for j=1:length(recentFiles)
    arquivo = [recentFiles(j).AbsPath '\' recentFiles(j).Name];
%         if exists, then open
    if exist(arquivo, 'file') == 2
        open(arquivo);
    end
end

%]
end
like image 38
Pablo Nunes Avatar answered Nov 02 '22 23:11

Pablo Nunes