Subject: bug#10820: 24.0.93; semantic-mode: M-n and M-p not working after `C-c , <SPC>'

From: Volker Sobek <[email-masked]>
Date: Wed, 15 Feb 2012 21:23:17 +0100

The Semantic Manual says in chapter 2.1.1 Semantic mode user commands:

  `C-c, <SPC>' Display a list of possible completions for the symbol
       at point (`semantic-complete-analyze-inline').  This also
       activates a special set of keybindings for choosing a
       completion: <RET> accepts the current completion, `M-n' and
       `M-p' cycle through possible completions, <TAB> completes as
       far as possible and then cycles, and `C-g' or any other key
       aborts the completion.  *Note Smart Completion::.

and later in chapter 2.4.1 Smart Completion:

   -- Command: semantic-complete-analyze-inline This command is bound
       to `C-c , <SPC>' when Semantic mode is enabled (*note Semantic
       mode user commands::).  It displays a list of possible
       completions for the symbol at point, and activates a special
       set of keybindings for choosing a completion.

       You can type <RET> to accept the current completion, `M-n' and
       `M-p' to cycle through the possible completions, <TAB> to
       complete as far as possible and then cycle through completions,
       and either `C-g' or any other key to abort the completion.

       This command is similar to the completion performed by Semantic
       Idle Completions mode.  The main difference is that it is
       called explicitly, whereas Semantic Idle Completions mode
       completes during idle time (*note Idle Completions Mode::).

However, after enabling semantic-mode, the key bindings M-n, M-p don't
work after `C-c , <SPC>'; they are undefined and do nothing.

These keys do work with semantic-complete-analyze-inline-idle though.
The difference between the functions
semantic-complete-inline-analyzer-idle and
semantic-complete-inline-analyzer is the default displayor class:

  (defcustom semantic-complete-inline-analyzer-displayor-class
    'semantic-displayor-traditional
    "*Class for displayor to use with inline completion."
    :group 'semantic
    :type semantic-complete-inline-custom-type
    )

  (defcustom semantic-complete-inline-analyzer-idle-displayor-class
    'semantic-displayor-ghost
    "*Class for displayor to use with inline completion at idle time."
    :group 'semantic
    :type semantic-complete-inline-custom-type
    )

So doing

  (setq semantic-complete-inline-analyzer-displayor-class
	semantic-displayor-ghost)

enables M-n and M-p after `C-c , <SPC>'.

I didn't read more of the code, so I don't know whether

1) M-n and M-p are supposed to work with
   semantic-displayor-traditional, but are broken.

2) The default for semantic-complete-inline-analyzer-displayor-classor
   is wrong.

3) The manual is wrong.

4) ?

In GNU Emacs 24.0.93.2 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.8)
 of 2012-02-15 on r61
Windowing system distributor `Fedora Project', version 11.0.11104000
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: de_DE.utf8
  value of $LC_NUMERIC: de_DE.utf8
  value of $LC_TIME: de_DE.utf8
  value of $LANG: en_US.utf8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t