Is it possible to control code folding with code?

2 visualizaciones (últimos 30 días)
per isakson
per isakson el 14 de Feb. de 2012
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?

Respuestas (1)

Oleg Komarov
Oleg Komarov el 14 de Feb. de 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.

Categorías

Más información sobre Debugging and Analysis en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by