Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Is it possible to control code folding with code?

Asked by per isakson

per isakson (view profile)

on 14 Feb 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?


per isakson

per isakson (view profile)


1 Answer

Answer by Oleg Komarov

Oleg Komarov (view profile)

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;
for ii = 1:10
s(ii) = 20;

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');

Then smart indent everything and compare what got indented.

% Get unindented doc
txt         = matlab.desktop.editor.textToLines(edtObj.Text);
% Indent
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.


Oleg Komarov

Oleg Komarov (view profile)

Contact us