Is it possible to control code folding with code?

1 view (last 30 days)
There is a public MATLAB Editor API. However, I cannot find any way to manipulate folding of m-source-code with code. I search something similar to the Editor Debug API (dbclear, dbcont, dbdown, dbquit, dbstack, dbstatus, dbstep, dbstop, dbtype).
On my wishlist is
  • store and restore of "the current folding state"
  • set folding line_number on/off
  • get folding line_number
  • and more
Currently, I may display the source code nicely with the help of folding. However, a search will unfold every block in which the string is found and the display is turned into a mess.
Thus, is there a backdoor to the folding functionalities?

Answers (1)

Oleg Komarov
Oleg Komarov on 14 Feb 2012
I have not found a smarter way, but you could adopt the following solution, give that test.m contains:
for ii = 1:10
s(ii) = 20;
end
for ii = 1:10
s(ii) = 20;
end
Open in the editor a give focus to previous document
current = matlab.desktop.editor.getActive;
edtObj = matlab.desktop.editor.openDocument('C:\Users\ok1011\Desktop\test.m');
current.makeActive
Then smart indent everything and compare what got indented.
% Get unindented doc
txt = matlab.desktop.editor.textToLines(edtObj.Text);
% Indent
edtObj.smartIndentContents;
txtIndent = matlab.desktop.editor.textToLines(edtObj.Text);
% Line by Line comparison, true = unchanged, false = got indented
strcmp(txt, txtIndent)
The next step is to make a collage of the unindented code with the indented one, overwrite and save.

Categories

Find more on Debugging and Analysis in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!