Is it possible to control code folding with code?

2 次查看(过去 30 天)
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?

回答(1 个)

Oleg Komarov
Oleg Komarov 2012-2-14
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.

类别

Help CenterFile Exchange 中查找有关 Debugging and Analysis 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by