In order to maintain optimally readable code, and waste minimal amount of development time on manual routine text (re)formatting, LibreOffice requires clear text formatting (also, ‘code style’) guidelines. Ideally, these guidelines would not only be clear to contributors (assuming they are aware of them), but also be checkable and applicable automatically, i.e. be rules.

EditorConfig (http://editorconfig.org/) is standard configuration file format, that serves to specify basic text formatting rules. It was designed to partially fulfill the previously introduced requirement. It allows LibreOffice broad control over text formatting rules, and helps text editing software to then apply these rules before anything is committed. This all happens in a way transparent to and easy on contributors. IDE/editor support for EditorConfig is very complete at present, and works independent of platform conventions. EditorConfig fits in the larger picture as complement to language-specific text formatting rules, e.g. clang-format rules.

Currently, LibreOffice developers appear to use Vim modelines for this purpose, but quite choatically. For example, within a single source code file multiple modeline-style comments can be found, e.g. one Emacs-style (https://github.com/LibreOffice/core/blob/19a906f09688f06ee90cac2a50126aeba749a331/sw/source/filter/ascii/wrtasc.cxx#L1) and one vim-style (https://github.com/LibreOffice/core/blob/19a906f09688f06ee90cac2a50126aeba749a331/sw/source/filter/ascii/wrtasc.cxx#L200).

Modeline-style methods for text formatting rules differ from EditorConfig in a number of ways. The differences are mainly down to weaknesses of modelines, as already convincingly argued in e.g. https://github.com/vim/vim/issues/2286#issue-271201325. I will add a few points. Classical Unix editor-specific configuration is not contributor-friendly. Note also that Vim modelines can increase security risk to developers (https://www.reddit.com/r/vim/comments/60jbww/disable_modeline_for_security_reasons/). Finally, modelines do nothing to control formatting of non-source code files such as CSV or plain text files.

I propose to:
- Decide on detailed text formatting guidelines.
- Implement the relevant part of these rules in one or more EditorConfig file(s). - Phase out any other mechanisms for text formatting that is now covered by these EditorConfig files.

Please let me know what you think of this.
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to