emacs-matlab/toolbox/emacsrun.m

28 lines
818 B
Matlab

function emacsrun(mfile, varargin)
% Run code from MFILE.
% Assumes MFILE was recently edited, and proactively clears that function.
%
% Command sent by Emacs for save-and-go functionality
% Now figure out if shortFileName is on the path.
[ fullFilePath, shortFileName ] = fileparts(mfile);
onpath = ~isempty(which(shortFileName));
if ~exist(fullFilePath,'file')
error('You must save your file into a location accessible by MATLAB process.');
end
% If not on the path, temporarilly switch to that directory so it and an files it references are
% accessible
if ~onpath
oldpath = pwd;
cd(fullFilePath);
cleanup = onCleanup(@()cd(oldpath));
end
clear(shortFileName);
cmd = [ shortFileName varargin{:} ];
evalin('base',cmd);
end