Matlab unfolds folded code when I leave an open for/if loop (temporarily omit the "end" while working)

14 vues (au cours des 30 derniers jours)
I recently updated to Matlab 2015a, coming from a late 2013 or early 2014 build. I have noticed one disruptive change in particular. When I write code, I will often fold previous segments when finished, with some comment to explain what the fold contains. I will then continue writing code in later sections.
I have noticed that now when I continue working on later parts, if I make a new statement that requires an "end", such as a for loop or if statement, Matlab will automatically unfold previously folded for loops and if statements if I type much code without adding the "end." For example:
for fold = 1
z = 2;
end
for i = 1:10
disp(i);
If I fold the first for loop and keep working on code inside the second for loop without appending an "end," after a line or two of new code Matlab automatically unfolds the first for loop. Please let me know if this isn't clear. I have tried searching for some setting that governs this behavior, but have not found anything, and don't know what this sort of automatic behavior by Matlab would even be called!
Edit: I checked again, and it also does this automatic unfolding if I do something like leave a bracket open. Typing:
[1,2,3,4,5,
will unfold any closed/folded for loops or if statements in my script.
  4 commentaires
Travis Briles
Travis Briles le 28 Mai 2021
This is an absolutely infuriating feature. Still present May 2021

Connectez-vous pour commenter.

Réponses (3)

JWTay
JWTay le 5 Mai 2017
I've been encountering this bug and I did some testing and found that it occurs when there are at least two unmatched statements/brackets.
For example: Writing 'if aa == someValue' will trigger the code to unfold when the first equals sign is typed in because now there are two unmatched statements (the 'if' statement and the following expression).
A workaround would be to close the if statement first, before writing the expression to be evaluated. E.g. writing:
if
end
before writing the evaluation expression (aa == someValue) will keep your code closed.
Keep in mind though that the two unmatched statements do not have to occur in the same place. So if you had an open if/function/class/bracket somewhere else, it will still cause the code to unfold.
Hope this makes sense and helps in the meantime. Fingers crossed that MathWorks can solve this issue as it is pretty frustrating when working on large files.
  2 commentaires
Nicholas Roberts
Nicholas Roberts le 4 Avr 2018
Very perceptive JT! This helps me avoid the bug (still present in 2018a, ridiculously).
David Nguyen
David Nguyen le 26 Jan 2019
You could also (1) pre-comment (using the ctrl+R keyboard shortcut) some lines, onto which you can (2) type the scaffold structure of the if statement, then (3) uncomment (using the ctrl+T keyboard shortcut). After this, you can modify the if statement's condition like usual.
Works in App Designer 2018b.
(1) Pre-comment (using the ctrl+R keyboard shortcut)
%
%
%
(2) Type the scaffold structure of the if statement
% if (true)
%
% end
(3) Uncomment (using the ctrl+T keyboard shortcut)
if (true)
end

Connectez-vous pour commenter.


Eric Lin
Eric Lin le 18 Juin 2015
This is a known bug in MATLAB. The only workaround right now is to disable code folding for the particular constructs that experience this issue by going to "Preferences" > "Editor/Debugger" > "Code Folding".
  3 commentaires
Sean Costello
Sean Costello le 12 Déc 2016
This workaround doesn't work for me (Matlab 2015b). Opening an if statement causes all code in the file to unfold.
Chuck Saunders
Chuck Saunders le 2 Août 2018
I wish this were fixed. This was a known bug... three years ago now? It's still a problem.
> "The workaround to prevent your code from unfolding is to disable folding."
That's not a workaround at all. "The software doesn't have bugs if you don't use it." Trivial advice.

Connectez-vous pour commenter.


Amy
Amy le 10 Déc 2018
Modifié(e) : Amy le 10 Déc 2018
This bug is fixed as of R2018b. If you are still running into issues with unwanted code unfolding in R2018b or a later release, please feel free to contact technical support.
  1 commentaire
Christopher Schlosser
Christopher Schlosser le 18 Fév 2019
Modifié(e) : Christopher Schlosser le 18 Fév 2019
I have version '9.5.0.944444 (R2018b)' and still get unwanted unfolding when creating functions or if-statements.
Edit: I updated to version '9.5.0.1033004 (R2018b) Update 2'. The problem still exists.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Just for fun dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by