Хорошо, все, что я пишу здесь, я узнал от undocumentedmatlab.com от Яир Альтман , в частности, глядя на его EditorMacro.m ... great материал!
Я предполагаю, что Итамар Кац правильно вас понял и что вы запускаете несохраненный код из редактора, используя "Evaluate Cell" или "Evaluate Selection"; вы хотите, чтобы ваш код понял, что он не сохранен, и сохраните версию, отображаемую в данный момент в редакторе, в другом месте.
Я не нашел способ сохранить файл непосредственно в исходное местоположение, но, по крайней мере, я нашел способ получить доступ к текущему тексту. Затем вы можете использовать fprintf, чтобы сохранить его в любом месте. Я проверил это в Matlab 7.11 (R2010b); если у вас есть другая версия, вам нужно покопаться в EditorMacro.m, чтобы найти правильный код для Matlab 6.
if com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor.isDirty
thisdocument=com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor.getDocument;
thisdocument_text=char(thisdocument.getText(0,thisdocument.getLength));
fid = fopen('backupfile.m','w');
fprintf(fid, '%s', thisdocument_text);
fclose(fid);
else
% saved file is unmodified in editor - no need to play tricks...
...
end
Таким образом, условие if проверяет, содержит ли текущее активное окно редактора файл, который не был сохранен («грязный»); если это так, нам нужно извлечь текущую версию кода (в переменную thisdocument_text) и сохранить эту строку в некотором файле.
Помогает ли это?