Is it possible to control code folding with code?

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?

Antworten (1)

Oleg Komarov
Oleg Komarov am 14 Feb. 2012

1 Stimme

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.

Kategorien

Mehr zu Debugging and Analysis finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 14 Feb. 2012

Community Treasure Hunt

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

Start Hunting!

Translated by