unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Stephane A <a.stephane.fsw@gmail.com>
To: Alan Mackenzie <acm@muc.de>
Cc: 42581@debbugs.gnu.org
Subject: bug#42581: Wrong C++ indentation when using class MY_DLL_EXPORT_MACRO foo
Date: Fri, 14 Aug 2020 10:01:04 +0200	[thread overview]
Message-ID: <CA+Q2Ssi31uqUgFKYq6dhBiFE3G_qzLm1erKoC2kOLEo3WWCcDg@mail.gmail.com> (raw)
In-Reply-To: <CA+Q2SsjEE8x04qfpZgA5Lmzpcu3gXQBAOw7sigyBZgzLbx1F1Q@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4230 bytes --]

Hello,

The noise macro works for indentation, but it seems to cause the syntax
highlight to not be done correctly when opening a file. I must edit the
file to force refresh so that grammatical elements are detected.

Regards,

Stéphane


On Mon, Aug 3, 2020 at 11:30 AM Stephane A <a.stephane.fsw@gmail.com> wrote:

> Hello Alan,
>
> Thank you very much for your help. I succeeded in configuring my CC-mode
> successfully :)
>
> One more question: How would I do to set a list of macros ignored using
> c-noise-macro-names ?
>
> Sorry, for the bug report. This is my first time.
>
> Regarding the bug, I noticed that if there's a class derivation, the
> indentation world correctly, e.g.:
> class MY_EXPORT foo : public bar {
> public:
>     foo(); // Indentation OK here if ': public bar', NOK otherwise.
> };
>
> Regards,
>
> Stéphane
>
> On Fri, Jul 31, 2020 at 9:44 PM Alan Mackenzie <acm@muc.de> wrote:
>
>> Hello, Stéphane.
>>
>> Just one little thing: could you please keep the buglist address in the
>> Cc: when you reply, so that everybody can keep track of the conversation.
>> Thanks.
>>
>> On Wed, Jul 29, 2020 at 10:28:07 +0200, Stephane A wrote:
>> > On Tue, Jul 28, 2020 at 8:38 PM Alan Mackenzie <acm@muc.de> wrote:
>>
>> > > In article <mailman.208.1595954047.2739.bug-gnu-emacs@gnu.org> you
>> wrote:
>> > > > [-- text/plain, encoding quoted-printable, charset: UTF-8, 41 lines
>> --]
>>
>> > > > Hello,
>>
>> > > > Thank you for the advice :) I didn't know this one.
>>
>> > > > We have on *_EXPORT macro per module. So I would need to configure
>> noise
>> > > > macros by regexp.
>>
>> > > > I found *c-make-noise-macro-regexps *in the Emacs documentation
>> > > > <
>> > >
>> https://www.gnu.org/software/emacs/manual/html_node/ccmode/Noise-Macros.html
>>
>> > > > but don't know how to set it up in my emacs file
>> > > > <https://github.com/astephane/emacs/blob/master/emacs.el> since the
>> > > syntax
>> > > > is not documented.
>>
>> > > The syntax and semantics or regular expressions are documented
>> > > thoroughly in the Emacs Lisp manual (elisp.info).
>>
>> > > The mechanics of the CC Mode hooks are similarly described in the CC
>> > > Mode manual (ccmode.info).  c-noise-macro-names can be either a list
>> of
>> > > strings (one of which would be "MY_EXPORT_DLL_MACRO") or just a
>> regular
>> > > expression, which you seem to need here.
>>
>> > > There is an example .emacs file in an appendix to the CC Mode manual.
>>
>> > > > I though of adding a call to the c++-mode-hook
>> > > > <https://github.com/astephane/emacs/blob/master/emacs.el#L245>.
>>
>> > > The c++-mode-hook would be an excellent place to make this setting,
>> yes.
>>
>>
>> > Following the CC mode example [1], I added (add-to-list
>> 'c-noise-macro-names
>> > "[:space:].+_EXPORT[:space:]") in the lambda of the c++-mode-hook [2],
>> but
>> > there's no difference of indentation in the code (I check with
>> > linux/gnu/stroustrup styles). I don't know if I've done something wrong
>> or
>> > if this workaround does work.
>>
>> There are a couple of misunderstandings, here (for which I blame the
>> documentation (largely written by me)).
>>
>> Firstly, the regexp must match the noise macro exactly, not also any
>> spaces which may be around it, or anything like that.  So your regexp
>> should look something like:
>>
>>     "[A-Z_]+_MACRO" ; which matches "MY_EXPORT_DLL_MACRO"
>>     or
>>     "MODULE_[A-Z_]_+EXPORT" ; which matches "MODULES_NAME_EXPORT".
>>
>> > Note: our macros are of the form MODULE_NAME_EXPORT.
>>
>> Also, your `add-to-list' form is mistaken.  That would give you a one
>> element list, that element being the regexp.  What you need is the
>> variable set to the regexp itself.  For this, you want something like:
>>
>>     (setq c-noise-macro-names "MODULE_[A-Z_]+_EXPORT")
>>
>> > [1]
>> >
>> https://www.gnu.org/software/emacs/manual/html_node/ccmode/Sample-Init-File.html#Sample-Init-File
>> > [2] https://github.com/astephane/emacs/blob/master/emacs.el#L254
>>
>>
>> > Regards,
>>
>> > Stéphane
>>
>> --
>> Alan Mackenzie (Nuremberg, Germany).
>>
>

[-- Attachment #2: Type: text/html, Size: 6622 bytes --]

  reply	other threads:[~2020-08-14  8:01 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-28 11:34 bug#42581: Wrong C++ indentation when using class MY_DLL_EXPORT_MACRO foo Stephane A
2020-07-28 14:31 ` Eli Zaretskii
2020-07-28 16:06   ` Stephane A
     [not found] ` <mailman.208.1595954047.2739.bug-gnu-emacs@gnu.org>
2020-07-28 18:38   ` Alan Mackenzie
     [not found]     ` <CA+Q2SshAeQD_gN+dC3U8FEdf1xVB2GTpObK=vjC6fn-Ox=_w6A@mail.gmail.com>
2020-07-31 19:44       ` Alan Mackenzie
2020-08-03  9:30         ` Stephane A
2020-08-14  8:01           ` Stephane A [this message]
2021-12-05  1:03             ` Lars Ingebrigtsen
2022-01-21 13:38               ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+Q2Ssi31uqUgFKYq6dhBiFE3G_qzLm1erKoC2kOLEo3WWCcDg@mail.gmail.com \
    --to=a.stephane.fsw@gmail.com \
    --cc=42581@debbugs.gnu.org \
    --cc=acm@muc.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).