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 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 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 wrote: >> >> > > In article 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 >> > > > 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 >> > > > . >> >> > > 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). >> >