[poppler] Source code beautifiers
Jakub Kucharski
jakubkucharski97 at gmail.com
Wed Jun 29 12:29:05 UTC 2016
On Wed, 2016-06-29 at 21:30 +0930, Adrian Johnson wrote:
> On 28/06/16 02:39, Jakub Kucharski wrote:
> > Hello, everyone!
> >
> > Poppler has a very diverse codebase if it comes to coding style. In
> > some places it gets really weird, e.g. the qt frontends, where we
> > have
> > code like this ("▸---" marks a tab):
> >
> > bool Document::unlock(const QByteArray
> > &ownerPassword,
> >
> > ▸---▸---▸--- const QByteArray
> > &userPassword)
> >
> >
> > {
> >
> >
> > ▸---if (m_doc->locked)
> > {
> >
> >
> > ▸--- /* racier then it needs to be
> > */
> >
> > ▸--- DocumentData
> > *doc2;
> >
> >
> > ▸--- if (!m_doc-
> > >fileContents.isEmpty())
> >
> >
> > ▸
> > -
> > -- {
> >
> >
> > ▸---▸---doc2 = new DocumentData(m_doc-
> > >fileContents,
> >
> > ▸---▸---▸---▸---▸---new
> > GooString(ownerPassword.data()),
> >
> >
> > ▸---▸---▸---▸---▸---new
> > GooString(userPassword.data()));
> >
> >
> > ▸
> > -
> > -- }
> >
> >
> > ▸
> > -
> > -- else
> >
> >
> > ▸
> > -
> > -- {
> >
> >
> > ▸---▸---doc2 = new DocumentData(m_doc-
> > >m_filePath,
> >
> > ▸---▸---▸---▸---▸---new
> > GooString(ownerPassword.data()),
> >
> >
> > ▸---▸---▸---▸---▸---new
> > GooString(userPassword.data()));
> >
> >
> > ▸
> > -
> > -- }
> >
> >
> > ▸--- if (!doc2->doc->isOk())
> > {
> >
> >
> > ▸---▸---delete
> > doc2;
> >
> >
> > ▸--- } else
> > {
> >
> >
> > ▸---▸---delete
> > m_doc;
> >
> >
> > ▸---▸---m_doc =
> > doc2;
> >
> >
> > ▸---▸---m_doc->locked =
> > false;
> >
> >
> > ▸---▸---m_doc-
> > >fillMembers();
> >
> >
> > ▸
> > -
> > -- }
> >
> >
> > ▸---
> > }
> >
> >
> > ▸---return m_doc-
> > >locked;
> >
> >
> > }
> >
> > With code like this I just end up copy-pasting things hoping that I
> > manage to guess the right way to format the code. So I've thought
> > we
> > could make things easier by using a source code beautifier and
> > providing config files for it. We could either unify the coding
> > style
> > or we could have different config files for core, goo, qt etc. (I'd
> > be
> > in favor of unification.)
> >
> > Two source code beautifiers that I know of are Uncrustify[1] and
> > ClangFormat[2]. For the second one there is a web page[3] which
> > makes
> > its configuration a piece of cake and there is a python script
> > making
> > it easy to integrate it with vim or any other highly configurable
> > editor. However Uncrustify seems to be more configurable. Flatpak
> > devs
> > have a useful shell script making it easier to invoke
> > Uncrustify[4].
> >
> > What do you think?
>
> I would prefer we didn't do a mass reformat of the code as it makes
> it
> harder to find the author or commit responsible for a line of code.
> If
> we do regular code reformatting, git blame will always resolve to the
> last reformat.
>
> It would be better to include the config required to make editors
> follow
> the poppler style so the code is correctly formatted at the time it
> is
> written. For example with emacs it is possible to insert a comment
> like:
>
> /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
>
> to specify the indentation style for a file. Or even better, use
> .dir-locals.el to specify the style for a source tree.
These solutions are editor-specific. We could reformat just the new
commits[1].
J.
[1] http://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reform
atting
>
> I don't care if qt/glib/cpp want to do their own style. The rest of
> the
> code should be consistent with the poppler style.
>
> >
> > Jakub
> >
> > [1] http://uncrustify.sourceforge.net/
> > [2] http://clang.llvm.org/docs/ClangFormat.html
> > [3] http://clangformat.com/
> > [4] https://github.com/flatpak/flatpak/blob/master/uncrustify.sh
> > _______________________________________________
> > poppler mailing list
> > poppler at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/poppler
> >
>
More information about the poppler
mailing list