Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew Burgess <andrew.burgess@embecosm.com>
To: gdb-patches@sourceware.org
Cc: Andrew Burgess <andrew.burgess@embecosm.com>
Subject: [PATCH] gdb/emacs/dir-locals: Update settings for c++-mode
Date: Fri, 07 Dec 2018 11:02:00 -0000	[thread overview]
Message-ID: <20181207110154.2362-1-andrew.burgess@embecosm.com> (raw)

I edit with emacs, and by default have `indent-tabs-mode` turned off.
I've noticed for a while that every time I edit a gdb file I have to
manual turn this setting back on, which is weird, because I'm sure
that this used to just magically enable itself within GDB source
files....

Turns out that either emacs changed behaviour, or this stopped working
when we switched to c++.

The .dir-locals.el file is what causes our *.c files to open in
c++-mode, at least for me with emacs 26.1, switching mode in
.dir-locals.el causes all of the settings from the original mode to be
reset.

So in our .dir-locals.el file we set `(indent-tabs-mode . t)` for
c-mode, but not for c++-mode.

This patch duplicates the settings list for c-mode into c++-mode.

Thanks,
Andrew



---

The current .dir-locals file for GDB causes files that would usually
open in c-mode (for example, files ending in .c) to open in c++-mode.
However, all of the other settings applied for c-mode appear to get
reset when the file is switched over to c++-mode.

For example, we currently say:

 (c-mode . ((c-file-style . "GNU")
	    (mode . c++)
	    (indent-tabs-mode . t)
	    (tab-width . 8)
	    (c-basic-offset . 2)
	    (eval . (c-set-offset 'innamespace 0))
	    ))
 (c++-mode . ((eval . (when (fboundp 'c-toggle-comment-style)
			(c-toggle-comment-style 1)))))

So, when we enter c++-mode `indent-tabs-mode` is reset to its global
value, as are all of the other settings listed for c-mode.

This commit copies all of the settings (except the `mode` setting)
from the c-mode list to the c++-mode list.

The emacs documentation doesn't mention that `mode` causes this
resetting behaviour, so, in case this is an emacs bug, I'm using emacs
version 26.1.  Having the settings duplicated shouldn't cause any
problems except for a slight maintenance overhead.

gdb/ChangeLog:

	* .dir-locals.el: Copy most of the settings from c-mode over to
	c++-mode.
---
 gdb/.dir-locals.el | 8 +++++++-
 gdb/ChangeLog      | 5 +++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/gdb/.dir-locals.el b/gdb/.dir-locals.el
index 7e2b0cc3134..d5ca5b31095 100644
--- a/gdb/.dir-locals.el
+++ b/gdb/.dir-locals.el
@@ -27,5 +27,11 @@
 	    (eval . (c-set-offset 'innamespace 0))
 	    ))
  (c++-mode . ((eval . (when (fboundp 'c-toggle-comment-style)
-			(c-toggle-comment-style 1)))))
+			(c-toggle-comment-style 1)))
+	      (indent-tabs-mode . t)
+	      (tab-width . 8)
+	      (c-file-style . "GNU")
+	      (c-basic-offset . 2)
+	      (eval . (c-set-offset 'innamespace 0))
+	      ))
 )


             reply	other threads:[~2018-12-07 11:02 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-07 11:02 Andrew Burgess [this message]
2018-12-07 17:38 ` Tom Tromey

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

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

  git send-email \
    --in-reply-to=20181207110154.2362-1-andrew.burgess@embecosm.com \
    --to=andrew.burgess@embecosm.com \
    --cc=gdb-patches@sourceware.org \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox