M-file code formatting tool

Is there any similar to AStyle formatting tool for C/C++/C# languages which can beautify matlab m-file code?
Ctrl+I is too simple for my needs

2 comentarios

Jan
Jan el 22 de Oct. de 2011
To answer this, we have to know your needs.
Personally I prefer an indentation, which is as trivial as possible - simply eye-popping.
Yuriy Chesnokov
Yuriy Chesnokov el 22 de Oct. de 2011
Editada: Guillaume el 28 de Nov. de 2018
the same as in AStyle
to convert some unreadable or unformatted code to uniform style
example:
[V,D]=eig(Kn);clear Kn;
V=sortrows([V' diag(D)],size(X,1)+1);V=flipud(V);
latent=V(:,end);
coeff= V(:,1:end-1)';
clear V;clear D;
to uniform:
[V, D] = eig(Kn);
clear Kn;
V = sortrows([V' diag(D)], size(X,1)+1);
V = flipud(V);
latent = V(:,end);
coeff = V(:,1:end-1)';
clear V;
clear D;

Iniciar sesión para comentar.

Respuestas (7)

David Varga
David Varga el 6 de Jun. de 2016

4 votos

I know it is an old question, and I just put this here as an addition.
You could check: MBeautifier
I have just created it for personal use, it is a lightweight M-Script based tool that can be usable to format Matlab M-Code directly in the Matlab editor

5 comentarios

Yi Cao
Yi Cao el 29 de Mzo. de 2018
Yes, that's exactly what I want, very useful!
Alexandre Kozlov
Alexandre Kozlov el 9 de Oct. de 2018
Great tool!
Just some remarks: * It doesn't seems to take parameters file into account, you have to cange rules directly in the code of MBeautyConfigurationRules.m. * Sometimes it doesn't recognize tokens, for instance "A(j-1)" is correctly beautified as "A(j - 1)", but "A{j-1}" is not. * Sometimes it adds empty lines at the beginning and at the end of the file, I didn't found any rule when it does. * I didn't found an option to indent the whole function's body (it is the default behaviour of Matlab not to indent, but I prefer to indent)
Nevethenless, it's a great tool which saves me a lot of time! Thanks again!
gwoo
gwoo el 28 de Nov. de 2018
That feature (to pad tokens inside { } exists in the xml settings near the bottom.
To indent a whole function's body you need to set that in the smart indenting settings of matlab itself.
see here:
Set to INDENT ALL FUNCTIONS
hasan fawaz
hasan fawaz el 30 de Jul. de 2019
I love you man :D Life Saver :D !
Ruben Lange
Ruben Lange el 28 de Abr. de 2020
Hi David,
I know I am very late to this, but I don't really know how to add the root directory to my matlab path as you describe on the github page...
I also don't understand how to do the shortcuts part.
Could you (or someone else) help me with this?
Thanks in advance!
Ruben

Iniciar sesión para comentar.

Troy_Daniel
Troy_Daniel el 21 de Nov. de 2019

1 voto

I know this question is quite old, and there is already a solution for Maltab GUI Editor. However, I prefer to edit M-files with vim, I'm frustrated to find that there was no a proper solution for commandline usage. So I imlement one using C++, which achieve quite simple formatting. The code is available on Github https://github.com/TroyDanielFZ/Matlab-M-Source-Formator .
This answer is posted in case that someone else need this implement for editors like vim.
Brian Harris
Brian Harris el 23 de Ag. de 2022
Editada: Brian Harris el 23 de Ag. de 2022

1 voto

vscode has a pretty good matlab formater built in (formats on save). Underpinning the vscode plugin is a python script which you can run on the command line (matlab_formatter.py <matlab_file_name>)
Jan
Jan el 22 de Oct. de 2011

0 votos

Did you try the "Crimson Editor" or XEmacs already?

1 comentario

Yuriy Chesnokov
Yuriy Chesnokov el 22 de Oct. de 2011
no, do they support matlab code formatting? as in my comments to your question above?

Iniciar sesión para comentar.

Narendra Kulkarni
Narendra Kulkarni el 29 de Sept. de 2014

0 votos

Hi, I am facing the same problem. There arent any good tools to beautify matlab code or are there?

2 comentarios

Image Analyst
Image Analyst el 30 de Sept. de 2014
Editada: Image Analyst el 30 de Sept. de 2014
I don't understand why control-I is not acceptable for you and Yuriy. What's wrong with the way it does it? It fixes the indenting, though it doesn't add spaces around operators such as = and +. Is that the problem?
Evgeny Mirkes
Evgeny Mirkes el 11 de En. de 2018
Editada: Evgeny Mirkes el 11 de En. de 2018
Because indentation is not enough for beauty code.

Iniciar sesión para comentar.

Julian Hapke
Julian Hapke el 11 de Dic. de 2023

0 votos

Here's a MATLAB snippet that depends on the undocumented tree2str and mtree, but produces a reasonable result:
tree2str(mtree(FILENAME, '-file', '-comments'))

Categorías

Más información sobre File Operations en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 22 de Oct. de 2011

Respondida:

el 11 de Dic. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by