Clean and automate indents in scripts an live scripts
Mostra commenti meno recenti
Hi everyone,
Please, do you have any tips to automate indentation in scripts?
Example by the picture below:

1 Commento
Catalytic
il 19 Giu 2025
Please do not insert screenshots of code when text will suffice. It prevents us from copy/pasting the example.
Risposta accettata
Più risposte (1)
Les Beckham
il 19 Giu 2025
I think that Matt's answer is a bit more elegant, although I think it (at least as first posted) just adds spaces before and after each equals sign rather than lining them up. I don't see anything that detects which column they should be aligned on. Here is a function which does do that.
% alignEquals.m
%
% Lines up the equals signs in the selected text in the active Matlab editor document.
function alignEquals()
ed = matlab.desktop.editor.getActive;
selected_lines = matlab.desktop.editor.textToLines(ed.SelectedText); % cell array containing the selected lines
eqIdx = strfind(selected_lines, '='); % find the index for all of the equals signs
maxeqIdx = max([eqIdx{:}]); % index of the farthest right equals sign
% align all of the equals signs with the farthest right equals sign
for iLine = 1:numel(selected_lines)
if isempty(selected_lines{iLine}), continue, end % skip empty lines
if isempty(eqIdx{iLine}), continue, end % skip lines with no equals sign
selected_lines{iLine} = strrep(selected_lines{iLine}, '=', [repelem(' ', maxeqIdx - eqIdx{iLine}) '=']);
end
newText = matlab.desktop.editor.linesToText(selected_lines); % selected text with the equals signs lined up
ed.Text = strrep(ed.Text, ed.SelectedText, newText); % replace the text in the editor document
end
4 Commenti
I don't see anything that detects which column they should be aligned on.
Let's try it:
txt=[
"s.a=1;"
"s.bbbbbb=2;"
]
favoriteAlignEqualSigns(txt)
function newtxt = favoriteAlignEqualSigns(txt)
before= char(extractBefore(txt,"="));
after = char(extractAfter(txt,"="));
newtxt=before+" = "+after;
end
Les Beckham
il 19 Giu 2025
Modificato: Les Beckham
il 19 Giu 2025
Clever! Thanks.
So the conversion of a string array to char magically pads the strings so that each row of chars is the same length. Cool.
As I said, much more elegant than my brute force approach.
Silvio Rizzuto
il 23 Giu 2025
Silvio Rizzuto
il 23 Giu 2025
Modificato: Silvio Rizzuto
il 23 Giu 2025
Categorie
Scopri di più su Environment and Settings in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!