I find it very useful to use the Matlab editor’s ability to load multiple files to help me remember which files I still need to work on. I typically have a few dozen files loaded in the editor. I guess you could say that the editor’s list of files is a simple reflection of my open tasks. It would be extremely inconvenient if I ever lost this list.
Which is, unfortunately, exactly what happened to me yesterday.
I was about to close a figure window and accidentally closed the editor window that was behind it.
I was now in quite a jam: reopening the editor would not load all my files, but start with a blank (empty) editor. The Matlab editor, unlike modern browsers, does not have a ‘reopen last session’ option, and using the most-recently-used (MRU) files list would at best return the latest 9 files (the default Matlab preference is to have an MRU depth of only 4 files, but this is one of the very first things that I change whenever I install Matlab, along with a few other very questionable [IMHO] default preferences).
Luckily for me, there is an escape hatch: Matlab stores its Desktop windows state in a file called MATLABDesktop.xml that is located in the user’s prefdir folder. This file includes information about the position and state (docked/undocked etc.) of every Desktop window. Since the editor files are considered Desktop documents (you can see them under the Desktop’s main menu’s Window menu), they are also included in this file. When I closed the Editor, these documents were simply removed from the MATLABDesktop.xml file.
It turns out that Matlab automatically stores a backup version of this file in another file called MATLABDesktop.xml.prev, in the same prefdir folder. We can inspect the folder using our system’s file browser. For example, on Windows we could use:
So before doing anything else, I closed Matlab (I actually crashed it to prevent any cleanup tasks to accidentally erase this backup file, but that turned out to be an unnecessary precaution), deleted the latest MATLABDesktop.xml file, replaced it with a copy of the MATLABDesktop.xml.prev file (which I renamed MATLABDesktop.xml), and only then did I restart Matlab.
Problem solved – everything back to normal. Resume breathing. Once again I have my never-ending virtual task list in front of me as I write this.
- don’t be too quick on the close button trigger
- always keep a relatively recent backup copy of your important config files (BTW, I use the same advice with my FireFox browser, where I normally have dozens of open tabs – I keep a backup copy of the sessionstore.js file)
- if you do get into a jam, don’t do anything hasty that might make recovery impossible. Calm down, look around, and maybe you’ll find an automatic backup somewhere
in above article you state “…best return the latest 9 files (the default Matlab preference is to have an MRU depth of only 4 files, but this is one of the very first things that I change whenever I install Matlab, along with a few other very questionable [IMHO] default preferences).”.
It might be interesting to me and maybe other readers what these questionable default preferences are. Perhaps you find the time to write an article on this topic.
One alternative I always do is to leave one blank unsaved file all the time open, so that when you close the editor by accident, it will first ask if you want to save that file, and then you have the option to cancel…
BTW, I’m also curious about what are your ‘default’ preferences 🙂
-display format using short g (I always work with matrix that represent different states at each line, and I hate when MATLAB just shows everything as 1e5 * [1 0.0001 0.01] instead of [1e5 10 1e3])
-increase java heap, I quite often hit the default value of 128mb…
-change the default font from to Consolas
-enable code folding for everything
-change indentation mode to all functions
-disable wrap comments (we have widescreen monitors, don’t need everything to be within 80 col anymore!)
-increase the number of lines in the cmd window buffer (one of the libraries I use outputs a lot of text to the cmd window, and I want to be able to scroll up and see what was before)
-when on linux, change the default keyboard set from emacs to windows (give me back my Ctrl+C Ctrl+V 🙂 )
any other I’m missing?
What could be really nice is to be able to easily change the colors of the names of the files, so as to group them into projects.
And regarding default options, naturally remove the vertical line from the middle of the screen.
Very cool! It seems we have a similar work flow. It also seems a reasonable task then to write some code that will make saving and restoring different editor states for different projects an easy thing to do. I’ll get right on it …
I had a similar problem a while back and wrote a function to manage it, I have finally uploaded it on Matlab FEX.