unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Bastian Beischer <bastian.beischer@rwth-aachen.de>
To: Gabriele Labita <gabriele.labita@gmail.com>
Cc: Help-Gnu-Emacs <help-gnu-emacs@gnu.org>
Subject: Re: Semantic mode for c++
Date: Mon, 26 Jun 2017 15:42:13 +0200	[thread overview]
Message-ID: <CAK9AuB9t3uy7Jk_1AmuqOyFrb8JBfGOy4x1UMggxtkekCoPoSQ@mail.gmail.com> (raw)
In-Reply-To: <11d06dbd-0321-ca9a-3967-3dab2cf61b6d@gmail.com>

Hey,

I guess the problem is that the semantic lexer does not set the correct
preprocessor macros when lexing the STL include files. In particular, to
set the C++ standard version, one has to set the __cplusplus macro to a
particular value. The compiler does this automatically for you when you
compile with -std=XXX, but semantic does not know anything about this
compiler flag.

You can customize the macro definitions used in semantic in the variable
"semantic-lex-c-preprocessor-symbol-map".

However, I don't think semantic currently supports all the new C++11 and
above keywords which have entered the language when parsing code, so you
might get mixed results.

Cheers
Bastian

On Mon, Jun 26, 2017 at 2:34 PM, Gabriele Labita <gabriele.labita@gmail.com>
wrote:

> Hi,
> I'm trying to configure semantic module to have auto completion for c++ in
> emacs.
> I put this code on .emacs file:
>
> ```
>  (add-hook 'c-mode-common-hook
>        '(lambda () (load (concat custom-config-path
> "custom-config-c++.el")))
> )
>  ```
>
> And this is my custom-config-c++.el file:
> ```
> (add-to-list 'semantic-default-submodes 'global-semantic-idle-schedule
> r-mode)
> (add-to-list 'semantic-default-submodes 'global-semantic-idle-completi
> ons-mode)
> (add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-
> mode)
> (add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode)
> (add-to-list 'semantic-default-submodes 'global-semantic-show-parser-s
> tate-mode)
> (add-to-list 'semantic-default-submodes 'global-semantic-show-unmatche
> d-syntax-mode)
>
> (semantic-mode 1)
>
> (require 'semantic/ia)
> (require 'semantic/bovine/gcc)
>
> (semanticdb-enable-gnu-global-databases 'c++-mode)
>
> (global-ede-mode t)
>
> (global-flycheck-mode t)
> (setq flycheck-gcc-language-standard "c++14")
> ;; To add library use follow command:
> ;;   > flycheck-pkg-config
>
> ;; 70 Columns RULE
> (require 'whitespace)
> (setq whitespace-line-column 71)
> (setq whitespace-style '(face lines-tail))
>
> (global-whitespace-mode +1)
>  ```
>
> It works well but I've a annoying problem: when I use the command:
> 'semantic-ia-complete-symbol' on 'std::', the semantic db is created in the
> .emacs.d/semanticdb/ folder. The problem is that the created db refers to
> c++98 instead of c++14. For example: when auto complete smart pointers, I
> find the "auto_ptr" suggestion and not "unique_ptr" or "shared_ptr".
> How can I generate the right db?
>
> More Infos:
> - Debian 9 amd 64
> - gcc 6.3.0
> - Emacs 24.5.1
> - global 6.5.6
>
>


-- 
Bastian Beischer
RWTH Aachen University of Technology

@RWTH Aachen
Office: 28 C 203
Phone: +49-241-80-27205
E-mail: beischer@physik.rwth-aachen.de
Address: I. Physikalisches Institut B, Sommerfeldstr. 14, D-52074 Aachen

@CERN
Office: Bdg 32-4-B12
Phone: +41-22-76-75750
E-mail: bastian.beischer@cern.ch
Address: CERN, CH-1211 Geneve 23


  reply	other threads:[~2017-06-26 13:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-26 12:34 Semantic mode for c++ Gabriele Labita
2017-06-26 13:42 ` Bastian Beischer [this message]
2017-06-26 21:32   ` Gabriele Labita

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=CAK9AuB9t3uy7Jk_1AmuqOyFrb8JBfGOy4x1UMggxtkekCoPoSQ@mail.gmail.com \
    --to=bastian.beischer@rwth-aachen.de \
    --cc=gabriele.labita@gmail.com \
    --cc=help-gnu-emacs@gnu.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).