[gnu.g++.lib.bug] c++-mode.el

schmidt@zola.ics.uci.edu (Doug Schmidt) (03/26/89)

Hi,

  The latest version of c++-mode from ./etc has several annoying quirks.

1. Regular C-style comments don't correctly align themselves automagically:
   Try:
   
  /* I am a comment,
    This is not
      what should
        be happening! */

   I don't believe that the earlier version got this wrong.

2. Also, formatting a class declaration does weird things to public
   and private, e.g.:        

----------------------------------------
class foo
{
private:
  int i;        
public:
  foo ();
};
----------------------------------------

turns into

----------------------------------------
class foo
{
 private:
  int i;        
 public:
  foo ();
};
----------------------------------------

Which is not as nice (IMHO).  I have a feeling that the reformatter
thinks public and private are labels, and treats them accordingly.  If
anyone knows a good fix I'd appreciate it!

3. Finally, so I won't be accused of only criticizing without contributing
   (;-)), here's a neat ``high-voltage'' addition that toggles 
   c-auto-newline mode on and off.  I find this especially useful
   when I'm writing new code (it can be annoying when maintaining
   code).

*** c++-mode.el.~1~	Thu Mar 23 18:17:51 1989
--- c++-mode.el	Sat Mar 25 15:14:04 1989
***************
*** 44,49 ****
--- 44,50 ----
  (define-key c++-mode-map "\e" 'mark-c-function)
  (define-key c++-mode-map "\eq" 'indent-c++-exp)
  (define-key c++-mode-map "\177" 'backward-delete-char-untabify)
+ (define-key c++-mode-map "\C-^" 'c++-high-voltage)
  (define-key c++-mode-map "\t" 'c++-indent-command)
  (define-key c++-mode-map "\C-c\C-i" 'c++-insert-header)
  (define-key c++-mode-map "\C-c\C-\\" 'c++-macroize-region)
***************
*** 151,156 ****
--- 152,164 ----
        (define-key c++-mode-map ":" 'electric-c++-terminator)))
  
  
+ ;;; "High-voltage" option
+ (defun c++-high-voltage ( ) "Toggle high voltage (c-auto-newline)"
+   (interactive)
+   (if c-auto-newline
+     (progn (setq c-auto-newline nil) (message "High voltage OFF"))
+     (progn (setq c-auto-newline t) (message "High voltage ON"))))
+ 
  ;; This is used by indent-for-comment
  ;; to decide how much to indent a comment in C++ code
  ;; based on its context.
               
----------------------------------------

Doug               

--
schmidt@ics.uci.edu | On a clear day, under blue skies, one need not seek
office:             | And asking about Buddha 
(714) 856-4043      | Is like proclaiming innocence,
                    | With loot in your pocket.