home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / gnu / src / amiga / emacs-19.28-src.lha / emacs-19.28 / site-lisp / ChangeLog < prev    next >
Encoding:
Text File  |  1994-09-10  |  135.2 KB  |  4,200 lines

  1. Sat Sep 10 13:27:11 1994  Barry A. Warsaw  (warsaw@anthem.nlm.nih.gov)
  2.  
  3.     * Public Release of 4.85.
  4.  
  5. Wed Sep  7 18:41:29 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  6.  
  7.     * cc-mode.el (c-mode-fsf-menu, c-mode-map, c++-mode-map,
  8.       objc-mode-map):
  9.     use a better feature test to figure out how to set the menu title
  10.     string.
  11.  
  12. Tue Sep  6 13:49:46 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  13.  
  14.     * cc-mode.el (c-search-uplist-for-classkey):
  15.     in `class' keyword verification section, only skip forward for ?>
  16.     template char if a matching ?< char was found previous to
  17.     search-start.  This eliminates false match of template base
  18.     classes.
  19.  
  20. Thu Sep  1 22:30:23 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  21.  
  22.     * cc-mode.el (c-submit-bug-report): updated var list
  23.  
  24.     * cc-mode.el (c-mode-fsf-menu, c-mode-map, c++-mode-map,
  25.       objc-mode-map):
  26.     do a better job of getting the menu title string appropriate for
  27.     the mode being edited in.  Bogus, but necessary.  XEmacs is better
  28.     in this respect.
  29.  
  30.     * cc-mode.el (c-search-uplist-for-classkey): Lele patch for objc-mode
  31.  
  32.     * cc-mode.el (c-search-uplist-for-classkey):
  33.     avoid "invalid search bound" error
  34.  
  35.     * cc-mode.el (c-beginning-of-statement-1):
  36.     skip special modifier chars in all cases, not just in "no balanced
  37.     expr found" case.
  38.  
  39.     * cc-mode.el (c-guess-basic-syntax):
  40.     CASE 9: generalize and collect common code for finding position
  41.     after conditional statements, and check for `while' statement of a
  42.     `do' loop.  In that case, skip over the trailing semi.
  43.  
  44. Wed Aug 31 22:20:47 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  45.  
  46.     * cc-mode.el (c-progress-init, c-progress-update, c-progress-fini):
  47.     use a marker for end (and be sure to free it!) so that as
  48.     indentation occurs, % can't go above 100.
  49.  
  50.     * cc-mode.el (c-mode-map):
  51.     check on feature (fboundp 'add-menu) for FSF 19 (which doesn't
  52.     have it).
  53.  
  54.     * cc-mode.el (c-progress-info, c-progress-init,
  55.       c-progress-update,
  56. c-progress-fini):
  57.     new vars/defuns for better long indentation progress
  58.     reporting
  59.  
  60.     (c-indent-exp, c-indent-region): use new progress reporting
  61.  
  62. Tue Aug 30 21:57:37 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  63.  
  64.     * cc-mode.el (c-guess-basic-syntax):
  65.     CASE 6F, go forward 1 char from b-o-s of containing-sexp bufpos to
  66.     find proper relpos of an arglist-cont.
  67.  
  68.     * cc-mode.el (c-offset-alist-default):
  69.     statement-case-open default offset is zero
  70.  
  71.     (c-skip-case-statement-forward): new function
  72.  
  73.     (c-guess-basic-syntax): CASE 15: use c-skip-case-statement-forward in
  74.     proper places to find the real relpos of statement's inside switch
  75.     case/default bodies.  CASE 15D: remove special handling when looking
  76.     at c-conditional-key.
  77.  
  78.     * cc-mode.el (c-offsets-alist, c-cleanup-list, c-mode-menu,
  79.       c-mode-map, c-symbol-key, c-indent-line, c-popup-menu):
  80.     make sure ObjC is properly documented.
  81.  
  82.     * cc-mode.el (c-least-enclosing-brace): new function
  83.  
  84.     (c-enclosing-brace, c-guess-basic-syntax): renamed
  85.     c-enclosing-brace to c-most-enclosing-brace
  86.  
  87.     (c-indent-defun): handle opening braces not in column 1
  88.  
  89.     * cc-mode.el (c-beginning-of-statement-1):
  90.     skip over statement mod characters that don't preceed an open
  91.     paren.
  92.  
  93. Fri Aug 26 17:42:24 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  94.  
  95.     * cc-mode.el (c-guess-basic-syntax):
  96.     be careful to check for c-access-key non-nil before calling
  97.     (looking-at c-access-key).  For C, this is nil.
  98.  
  99.     * cc-mode.el (c-beginning-of-statement-1):
  100.     swapped CASE 3 and 4, so that conditional statements are picked up
  101.     properly
  102.  
  103.     * cc-mode.el (c-guess-basic-syntax):
  104.     CASE 15D, calculate relpos from boi of beginning of statement
  105.     prior to indent-point, unless we're looking at a conditional key
  106.  
  107.     * cc-mode.el (c-mode-map, c++-mode-map, objc-mode-map):
  108.     change test of 'FSF in c-emacs-features to an fboundp
  109.     set-keymap-parent test
  110.  
  111. Thu Aug 25 13:31:31 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  112.  
  113.     * cc-mode.el (c-just-after-func-arglist-p,
  114.       c-guess-basic-syntax, c-lineup-objc-method-args-2):
  115.     more objc patches from Lele
  116.  
  117. Wed Aug 24 21:06:05 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  118.  
  119.     * cc-mode.el (c-indent-command):
  120.     with optional arg, shift-amt had wrong sign
  121.  
  122.     * cc-mode.el (c-lineup-arglist):
  123.     better handling of comments preceding arg lists
  124.  
  125.     * cc-mode.el (c-guess-basic-syntax):
  126.     swapped CASE 6A and 6B so that empty arglists with close paren on
  127.     separate line are properly recognized.
  128.  
  129.     * cc-mode.el (c-mode-menu, c-emacs-features, c-mode-map,
  130.       c-common-init):
  131.     remove dependency on string "Lucid" in emacs-version.  Use
  132.     features based means where such descrimination is necessary.
  133.  
  134. Tue Aug 23 18:43:28 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  135.  
  136.     * cc-mode.el (c-fill-paragraph):
  137.     merge with c-mode.el uses fill-region-as-paragraph
  138.  
  139.     * cc-mode.el (c-offsets-alist-default, c-offsets-alist,
  140.     c-hanging-braces-alist, c-electric-brace, c-guess-basic-syntax):
  141.     added syntactic symbol statement-case-open for
  142.     statement-case-intro's that contain an open brace.
  143.  
  144.     * cc-mode.el (c-lineup-math): watch for equal signs in literals
  145.  
  146.     * cc-mode.el (c-beginning-of-statement-1):
  147.     CASE5 and CASE 6, better pick up of label's with potential
  148.     embedded colons (scope operators).
  149.  
  150. Mon Aug 22 22:28:03 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  151.  
  152.     * cc-mode.el (c-hanging-comment-ender-p): new variable
  153.  
  154.     (c-fill-paragraph): looks at c-hanging-comment-ender-p to see if
  155.     */ should be left on its own line.  c-mode.el behavior is default
  156.     value t, but there have been *many* requests for nil's behavior.
  157.  
  158. Wed Aug 17 23:05:01 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  159.  
  160.     * cc-mode.el (c-recognize-knr-p, c-common-init):
  161.     fix the way this var is made buffer local
  162.  
  163. Tue Aug 16 20:05:49 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  164.  
  165.     * cc-mode.el (c-recognize-knr-p, c-mode, c++-mode, objc-mode):
  166.     make it so c-recognize-knr-p is settable from c-mode-common-hook.
  167.  
  168. Thu Aug 11 20:40:06 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  169.  
  170.     * cc-mode.el (c-recognize-knr-p): new variable
  171.  
  172.     (c-offsets-alist-default, c-offsets-alist, c-guess-basic-syntax):
  173.     changed syntactic symbol c++-funcdecl-cont to ansi-funcdecl-cont
  174.  
  175.     (c-mode, c++-mode, objc-mode): use new c-recognize-knr-p variable
  176.  
  177.     (c-guess-basic-syntax): use new c-recognize-knr-p variable; swap
  178.     CASE 5B.2 and 5B.3.
  179.  
  180. Wed Aug 10 17:54:53 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  181.  
  182.     * cc-mode.el (c-offsets-alist, c-read-offset, c-set-offset):
  183.     can accept variable symbols as offsets.
  184.  
  185.     (c-get-offset): can now accept ++ and -- symbols, which evaluate
  186.     to 2* positive and negative c-basic-offset.
  187.  
  188. Thu Aug  4 15:29:43 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  189.  
  190.     * cc-mode.el (c-guess-basic-syntax):
  191.     case 9C added small performance improvment to c-in-literal call
  192.  
  193. Wed Aug  3 17:37:30 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  194.  
  195.     * cc-mode.el (c-beginning-of-statement-1):
  196.     use c-in-literal-cache, and limit backscanning in CASE 5 to known,
  197.     non-literal position.
  198.  
  199.     * cc-mode.el (c-in-literal, c-guess-basic-syntax):
  200.     caching of last literal result
  201.  
  202. Tue Aug  2 20:18:10 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  203.  
  204.     * cc-mode.el (c-guess-basic-syntax):
  205.     CASE 15D, calculate 'statement relpos as the
  206.     beginning-of-statement relative to indent-point.
  207.  
  208.     * cc-mode.el (c-beginning-of-statement-1):
  209.     CASE 4, check for conditional keywords which could be followed by
  210.     a balanced paren expr.  I.e. while(foo)
  211.  
  212. Tue Jul 26 15:55:21 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  213.  
  214.     * cc-mode.el (c++-mode-syntax-table, objc-mode-syntax-table):
  215.     give CR same syntax as newline, for selective-display.
  216.  
  217. Fri Jul 22 18:42:38 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  218.  
  219.     * cc-mode.el (c-electric-star):
  220.     fixed indentation problem when a star is not preceded by a slash.
  221.  
  222.     * cc-mode.el (c-indent-defun):
  223.     removed condition-case inside unwind-protect.  All error
  224.     conditions are properly handled at other levels of the code.
  225.  
  226. Thu Jul 21 22:34:19 1994  Barry A. Warsaw, ITB  <warsaw@anthem>
  227.  
  228.     * cc-mode.el (c-class-key, c-search-uplist-for-classkey):
  229.     greatly simplified, this constant now contains a regexp that only
  230.     matches valid `class' keywords, in the C++ sense. It now ignores
  231.     any template, extern, static, etc. keywords.
  232.  
  233. Tue Jul 19 09:53:37 1994  Barry A. Warsaw  (warsaw@anthem.nlm.nih.gov)
  234.  
  235.     * Public Release of 4.35.
  236.  
  237. Sun Jul 17 18:29:51 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  238.  
  239.     * cc-mode.el (c-guess-basic-syntax):
  240.     Lele Gaifax's patch to fix an Objc problem...
  241.     
  242.     "this patch, applied to 4.32, will correct a little bug in ObjC
  243.     mode.  Currently objc-mode fails to recognize a continued arglist,
  244.     as it guesses every such construct is a continued method call."
  245.  
  246. Fri Jul 15 13:48:39 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  247.  
  248.     * cc-mode.el (c-search-uplist-for-classkey): don't get fooled by
  249.     the following C construct:
  250.     
  251.     struct shmid_internal
  252.     shmconv(
  253.         register int    s)
  254.     {
  255.         int foo = 1;
  256.     }
  257.  
  258. Tue Jul 12 14:36:10 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  259.  
  260.     * cc-mode.el (c-parse-state): in body of `something bad happened'
  261.     part, don't use beginning-of-defun to find "real" bod since based
  262.     on some coding styles, this could loop us all the way back to
  263.     bob. E.g.:
  264.     
  265.     int foo() {
  266.     int a = 7;
  267.     {
  268.         foobar();
  269.     }}
  270.     
  271.     int foo() {
  272.     int a = 7;
  273.     {
  274.         foobar();
  275.     }}
  276.     
  277.     
  278.     Instead use scan-lists and be more robust about crossing
  279.     unbalanced close braces.  Now even antisocial coding styles like
  280.     the above can be quickly parsed correctly.
  281.  
  282.     * cc-mode.el (c-parse-state): small but important fix in
  283.     `something bad happened' test. make sure that placeholder close
  284.     brace ends up before indent point, otherwise we didn't cross it.
  285.  
  286. Thu Jul  7 13:56:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  287.  
  288.     * cc-mode.el (c-parse-state): in `something bad' section,
  289.     placeholder will always be just after any close brace so we need
  290.     to 1- from it to check for ?}. Also, we probably don't need to
  291.     check for placeholder-1 being nil.
  292.  
  293. Thu Jun 30 21:03:55 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  294.  
  295.     * cc-mode.el (c-switch-label-key): a paren can follow the `case'
  296.     keyword without any intervening whitespace.
  297.  
  298.     * cc-mode.el (c-beginning-of-statement-1): when skipping over
  299.     unary ops, remember that whitespace could be intermixed before the
  300.     paren
  301.  
  302.     * cc-mode.el (c-electric-brace): added brace-list-intro and
  303.     brace-list-entry to list of hangables
  304.     
  305.     (c-hanging-braces-alist): added docstring for b-l-i and b-l-e
  306.     hangability
  307.  
  308.     * cc-mode.el (c-beginning-of-statement-1): CASE 6: be sure to
  309.     ignore switch labels too.
  310.  
  311.     * cc-mode.el (c-lineup-arglist-intro-after-paren): new lineup
  312.     function to conform to GNU style.
  313.     
  314.     (c-style-alist): for style GNU, arglist-intro set to
  315.     c-lineup-arglist-intro-after-paren and arglist-close set to
  316.     c-lineup-arglist to conform to BOCM GNU style.
  317.  
  318. Wed Jun 29 00:48:56 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  319.  
  320.     * cc-mode.el (c-guess-basic-syntax): installed this patch:
  321.     
  322.     In ObjC mode 4.6 the tests 6D and 6E in c-guess-basic-syntax need
  323.     to be swapped. Otherwise what is a continued method call line will
  324.     be recognized as a 'arglist-cont-nonempty. Swapping these test
  325.     will not interfere with the normal behaviour of cc-mode, since the
  326.     test for the method call is surrounded with a test on (eq
  327.     major-mode 'objc-mode).
  328.     
  329.     Emanuele (lele) Gaifax     | ...calling Emacs convenient, of course, is
  330.     lele@nautilus.sublink.org  | like calling oxygen useful  -- Rens Troost
  331.  
  332.     * cc-mode.el (c-mark-function): new implementation based on
  333.     c-parse-state.  I think this should work much better for people.
  334.  
  335. Tue Jun 28 23:57:42 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  336.  
  337.     * cc-mode.el (c-just-after-func-arglist-p): partial fix for this bug:
  338.     
  339.     class foo
  340.     {
  341.        foo()
  342.           :                    // member-init-intro
  343.        a (0),                // topmost-intro-cont???
  344.        b (0)                // member-init-cont
  345.        {}
  346.     };
  347.     
  348.     
  349.     note that if there is a comment after foo(), its still broken.
  350.     But that probably won't happen too often...
  351.  
  352.     * cc-mode.el (c-lineup-arglist): don't limit skippages forward
  353.     over syntactic ws to eol.
  354.  
  355. Mon Jun 27 18:25:42 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  356.  
  357.     * cc-mode.el (c-parse-state): when looking to see if `something
  358.     bad happened', and guaranteeing that the char-after placeholder is
  359.     = to ?}, make sure that char-after placeholder is less than
  360.     point-max (i.e. char-after placeholder returns non-nil).
  361.  
  362.     * cc-mode.el (c-electric-star): should not re-indent line if
  363.     introducing a comment not on a comment-only line
  364.  
  365. Thu Jun 23 17:54:49 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  366.  
  367.     * cc-mode.el (c-inside-bracelist-p): when finding an enum, check
  368.     to be sure its not a type descriptor on a return value of a func
  369.     (i.e. skip-chars-forward for not semi or open paren).
  370.  
  371. Wed Jun 22 19:23:43 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  372.  
  373.     * cc-mode.el (c-parse-state): when trying to find out if
  374.     "something bad happened" be sure to check for crossing a close
  375.     *brace* and not a close paren or square bracket.  Only crossing a
  376.     close brace indicates badness.
  377.  
  378. Mon Jun 20 00:32:46 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  379.  
  380.     * cc-mode.el (c-set-offset): initial contents of prompt is the
  381.     last syntactic symbol on the syntactic analysis list -- the most
  382.     likely symbol that the user wants to change.
  383.  
  384. Fri Jun 17 22:25:41 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  385.  
  386.     * cc-mode.el (c-lineup-arglist): fixed problem of skipping too
  387.     many close parens when finding the relpos of arglist-close.
  388.  
  389.     * cc-mode.el (c-guess-basic-syntax): CASE 6F fixed incorrect
  390.       relpos
  391.  
  392.     * cc-mode.el (c-guess-basic-syntax): CASE 8B and CASE 8C: when an
  393.     otherwise brace-list-entry or brace-list-intro is found to start
  394.     with an open brace, the line is given brace-list-open syntax
  395.     instead
  396.     
  397.     (c-inside-bracelist-p): fix small bug in recognizing open brace at
  398.     brace-list-intro line, and infinite loop problem.
  399.  
  400.     * cc-mode.el (c-inside-bracelist-p): more accurate handling of
  401.     nested aggregates. Now uses brace-state as provided by
  402.     c-parse-state.
  403.  
  404. Tue Jun 14 22:25:09 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  405.  
  406.     * cc-mode.el (c-forward-conditional): break infinite loop when
  407.     finding commented out conditionals
  408.  
  409. Mon Jun 13 17:40:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  410.  
  411.     * cc-mode.el (c-submit-bug-report): Use new interface for
  412.     reporter.el 2.x
  413.  
  414. Fri Jun 10 13:42:02 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  415.  
  416.     * cc-mode.el (c-submit-bug-report): remove defun-prompt-regexp
  417.     from the list of vars if it is not boundp (i.e. v18)
  418.  
  419. Thu Jun  9 14:15:00 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  420.  
  421.     * cc-mode.el (c-guess-basic-syntax): repaired all CASE numbers
  422.  
  423.     * cc-mode.el (c-offsets-alist-default): added syntactic symbols
  424.     objc-method-intro objc-method-args-cont objc-method-call-cont.
  425.     
  426.     (c-offsets-alist): added descriptions for above new syntactic symbols
  427.     
  428.     (objc-mode-hook) (objc-mode-abbrev-table) (objc-mode-map)
  429.     (objc-mode-syntax-table) (objc-mode): added for Objective-C support
  430.     
  431.     (c-objc-method-key): new regexp desribing an ObjC method intro.
  432.     
  433.     (c-electric-slash): objc-mode understands // comments
  434.     
  435.     (c-fill-paragraph): objc-mode understands // comments
  436.     
  437.     (c-beginning-of-statement-1): added CASE 7 for objc-mode
  438.     
  439.     (c-in-objc-method-def-p): checks to see if inside an Objective-C
  440.     method definition.
  441.     
  442.     (c-just-after-func-arglist-p): check for Objective-C method def
  443.     
  444.     (c-guess-basic-syntax): many modifications to look for Objective-C
  445.     syntactic symbols: CASE 3.5, CASE 4G, CASE 4I, CASE 5E.
  446.     
  447.     (c-lineup-objc-method-call) (c-lineup-objc-method-args): new custom
  448.     lineup functions for Objective-C methods.
  449.     
  450.     (c-submit-bug-report): look for ObjC mode
  451.  
  452. Mon Jun  6 19:47:19 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  453.  
  454.     * cc-mode.el (c-style-alist): another fix to Ellemtel style.
  455.     Since the style guide recommends braces around the body of all
  456.     case statements, statement-case-intro should be 0, letting
  457.     statement-block-intro of the following line pick up the proper
  458.     indentation
  459.  
  460.     * cc-mode.el (c-style-alist): Ellemtel style should have
  461.     c-hanging-braces-alist for substatement-open be before and after
  462.  
  463. Thu Jun  2 23:09:16 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  464.  
  465.     * cc-mode.el (c-strict-syntactics-p): changed to c-strict-syntax-p
  466.     
  467.     (c-guess-basic-syntactics): changed to c-guess-basic-syntax
  468.     
  469.     (c-add-syntactics): changed to c-add-syntax
  470.     
  471.     (various): use new function and variable names
  472.  
  473. Wed Jun  1 15:46:19 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  474.  
  475.     * cc-mode.el: bumping to version 4 in anticipation of objc-mode
  476.       support
  477.  
  478. Tue May 31 23:51:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  479.  
  480.     * cc-mode.el (c-strict-semantics-p): changed to c-strict-syntactics-p
  481.     
  482.     (c-echo-semantic-information-p): changed to
  483.     c-echo-syntactic-information-p
  484.     
  485.     (c-semantics): changed to c-syntactic-context
  486.     
  487.     (c-guess-basic-semantics): changed to c-guess-basic-syntactics
  488.     
  489.     (c-show-semantic-information): changed to c-show-syntactic-information
  490.     
  491.     (cc-mode.el): other internal changes to make terminology consistent
  492.  
  493.     * cc-mode.el (c-guess-basic-semantics):
  494.     CASE 14.E, if defun opening brace is not at
  495.     boi, its because its hung on right side so we need a different relpos
  496.  
  497.     * cc-mode.el (c-guess-basic-semantics):
  498.     CASE5, various.  Extend the notion of
  499.     arglists to bracket lists, i.e. [...]
  500.  
  501.     * cc-mode.el (c-search-uplist-for-classkey):
  502.     when skipping over commas after
  503.     classkey's watch out for inheritance lists...
  504.  
  505.     * cc-mode.el (c-beginning-of-statement-1):
  506.     ignore labels and access keys
  507.  
  508. Tue May 24 22:04:15 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  509.  
  510.     * Public Release 3.349
  511.  
  512.     * cc-mode.el (c-search-uplist-for-classkey):
  513.     break out of infinite loop when
  514.     finding `struct' keyword in arglist
  515.  
  516. Mon May 23 15:43:07 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  517.  
  518.     * cc-mode.el (c-electric-brace):
  519.     we need to recalculate semantics if, when
  520.     re-indenting the preceding line, point changes.  If this happens, the
  521.     relpos for semantics is invalid.
  522.  
  523. Thu May 19 22:27:55 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  524.  
  525.     * cc-mode.el (c-style-alist):
  526.     updated the various styles to set the correct values
  527.     for substatement-open
  528.     
  529.     (c-style-alist): added dynamic setting of default style.  The way this
  530.     works may or may not be a feature?
  531.  
  532. Wed May 18 22:07:15 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  533.  
  534.     * cc-mode.el (c-backward-to-start-of-if):
  535.     fix to correctly handle `else-if'
  536.     clauses, which should be skipped when looking for the matching if.
  537.  
  538.     * cc-mode.el (c-search-uplist-for-classkey):
  539.     don't get confused by a single struct
  540.     type arg in a function's arglist
  541.  
  542.     * cc-mode.el (c-beginning-of-statement-1):
  543.     on backward-sexp failure, skip over
  544.     funny chars and whitespace only when just before a paren
  545.     
  546.     (c-search-uplist-for-classkey): watch out for comma ending struct arg
  547.     declarations which doesn't leave us in a class definition.
  548.  
  549.     * cc-mode.el (c-mode-map):
  550.     fix the setting of mode-popup-menu for Lemacs 19.10.
  551.     Menu must have a title string.
  552.  
  553.     * cc-mode.el (c-style-alist):
  554.     changes to Ellemtel style: substatement sets its
  555.     offset to 3, substatement-open sets its offset to 0.  Given by:
  556.     <qhslali@aom.ericsson.se> Lars Lindberg.
  557.  
  558. Tue May 17 22:46:22 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  559.  
  560.     * cc-mode.el (c-beginning-of-statement-1):
  561.     when backward-sexp fails and doing
  562.     backward-up-list, and before skipping over noise characters, skip over
  563.     any preceding syntactic whitespace:
  564.     
  565.     --------------V
  566.         if ( ! backup_dev ||
  567.                  sep1 != ':' || )
  568.  
  569.     * cc-mode.el (c-beginning-of-statement-1):
  570.     fixed small infinite loop in CASE5 test
  571.     when barrier char is in literal.
  572.  
  573.     * cc-mode.el (c-guess-basic-semantics):
  574.     CASE 13: don't limit the search backwards
  575.     for the beginning of statement
  576.  
  577.     * cc-mode.el (c-beginning-of-statement-1):
  578.     completely rewritten to properly account
  579.     for cpp macros and statement barrier characters (e.g. { } ;) in
  580.     literals.
  581.  
  582. Mon May 16 20:21:12 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  583.  
  584.     * cc-mode.el (c-inside-bracelist-p):
  585.     must check that enum keyword truly introduces
  586.     a bracelist and not that it is a type identifier for a declaration.
  587.     
  588.     I.e. match:
  589.     
  590.     enum foo { /* ... */ }
  591.     
  592.     but not:
  593.     
  594.     enum foo bar;
  595.  
  596. Thu May 12 22:52:12 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  597.  
  598.     * cc-mode.el (c-guess-basic-semantics):
  599.     CASE 4A.2 watch out for enum keywords in
  600.     K&R argdecl lists.  These don't open enum definitions, but they are
  601.     declarations instead.  E.g.:
  602.     
  603.     ret_stat (rpt_stat, filename, pcode)
  604.         enum xrpt_status_codes rpt_stat;
  605.         char filename[];
  606.         enum xpippop_codes pcode;
  607.     {
  608.  
  609.     * cc-mode.el:
  610.     (c-C-conditional-key) (c-C++-conditional-key): new regexps which
  611.     describe conditionals in the two supported languages.  This is
  612.     necessary because `try' and `catch' blocks are defined as
  613.     substatements equivalent to `while', `for', etc., in C++ only
  614.     
  615.     (c-mode) (c++-mode): set c-conditional-key, which is now buffer-local,
  616.     to either c-C-conditional-key or c-C++-conditional-key.
  617.  
  618.     * cc-mode.el (c-parse-state):
  619.     when we discover that an open brace we thought
  620.     specified the bod, actually isn't the bod, we backup and search for
  621.     another potential bod.  This is necessary so that open braces in
  622.     column zero that aren't really defun opening braces don't trip us up.
  623.     Our test for invalid bod is if we cross over an unbalanced close
  624.     brace.
  625.  
  626.     * cc-mode.el (c-guess-basic-semantics):
  627.     CASE 4G, in c-mode, fix recognition of the
  628.     last line in the following construct:
  629.     
  630.     typedef int (*foobar)           /* if I break this into 2 lines ...*/
  631.         (int foo, char *bar);
  632.     extern foobar really;       /* this is incorrectly indented */
  633.  
  634. Tue May 10 16:42:13 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  635.  
  636.     * cc-mode.el (c-indent-region):
  637.     fixed a bug where comment-only lines were being
  638.     skipped.  Wrapped an unwind-protect around mark copying so we can't
  639.     leak marks.
  640.  
  641.     * cc-mode.el (c-emacs-feature): use variables emacs-major-version and
  642.     emacs-minor-version if they exist
  643.  
  644. Fri May  6 21:09:58 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  645.  
  646.     * cc-mode.el (c-style-alist):
  647.     small changes to the Ellemtel style: inline-open and
  648.     topmost-intro-cont are changed to 0 offset.
  649.  
  650.     * cc-mode.el (c-hanging-braces-alist):
  651.     added (substatement after) so that braces
  652.     will hanging on substatement blocks
  653.  
  654. Thu May  5 22:48:23 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  655.  
  656.     * cc-mode.el (c-lineup-math):
  657.     can now line up equals signs even if the equals isn't
  658.     at boi.  E.g., it can now handle:
  659.     
  660.     float a = 1.0,
  661.           b = 7,
  662.           c = 9;
  663.  
  664.     * cc-mode.el (c-comment-start-regexp):
  665.     new buffer-local variable which describes
  666.     how comments start.  This improves generality for C-like modes with
  667.     different comment intro styles.
  668.  
  669.     * cc-mode.el (c-indent-via-language-element):
  670.     renamed to c-indent-line for better
  671.     backwards compatibility, i.e. awk-mode
  672.  
  673. Tue Apr 26 16:17:29 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  674.  
  675.     * cc-mode.el (c-parse-state):
  676.     make sure we ignore any bogus beginning-of-defun
  677.     bufpos's when we're searching back 2 bods
  678.  
  679.     * cc-mode.el (c-search-uplist-for-classkey):
  680.     after finding what looks like a class
  681.     header, search for both a semi (denoting a fwd decl), and an equals
  682.     (denoting a struct init).
  683.  
  684. Thu Apr 21 21:12:26 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  685.  
  686.     * cc-mode.el:
  687.     (c-electric-brace) (c-electric-semi&comma) (c-electric-colon)
  688.     (c-indent-command) (c-indent-exp) (c-indent-region)
  689.     (c-indent-via-language-element): eliminated extraneous optional
  690.     arguments, i.e. lim and bod
  691.  
  692.     * cc-mode.el (c-adaptive-block-open): obsolete
  693.     
  694.     (c-offsets-alist-default) (c-electric-brace): added substatement-open
  695.     syntactic symbol
  696.     
  697.     (c-hanging-braces-alist): added ability to hang substatement-open
  698.     braces.
  699.     
  700.     (c-style-alist): changed defaults of block-open to substatement-open
  701.  
  702.     * cc-mode.el (c-safe):
  703.     use Dan LaLiberte's version impl. workaround for an FSF
  704.     19.22 bug
  705.  
  706. Tue Apr 19 15:15:41 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  707.  
  708.     * cc-mode.el (c-mode-map): put c-macro-expand on C-c C-e
  709.  
  710.     * cc-mode.el:
  711.     (c-mode-map) (c-common-init): put in code to conform to Lucid 19.10's
  712.     popup menu convention of using mode-popup-menu variable
  713.  
  714. Fri Apr 15 23:09:59 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  715.  
  716.     * cc-mode.el (c-indent-defun): handle buffer-read-only errors better
  717.  
  718.     * cc-mode.el (c-lineup-math): also lines up multi-line equal signs
  719.  
  720.     * cc-mode.el (c-guess-basic-semantics):
  721.     replaced calculation of literal which must
  722.     have gotten accidentally removed some time ago.
  723.  
  724.     * cc-mode.el (c-1bit-il):
  725.     removed since it appears to be identical to c-in-literal,
  726.     and thus obsolete.
  727.  
  728.     * cc-mode.el (c-search-uplist-for-classkey):
  729.     programmatically ignore the `class'
  730.     keyword inside template arg lists
  731.     
  732.     (c-enclosing-brace) (c-narrow-out-enclosing-class): new helper
  733.     functions
  734.     
  735.     (c-guess-basic-semantics): fixed recognition of 'defun-open CASE 4A.4,
  736.     CASE 13.A, 'block-close CASE 13.B, 'defun-block-intro CASE 14.E
  737.  
  738. Thu Apr 14 18:42:00 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  739.  
  740.     * cc-mode.el (c-parse-state):
  741.     record containing paren, but not balanced paren sexps
  742.  
  743.     * cc-mode.el (c-guess-basic-semantics):
  744.     fixed a regression problem in recognizing
  745.     the difference between an inline-close and a nested class-close
  746.  
  747.     * cc-mode.el: (c-parse-state) (c-guess-basic-semantics)
  748.     (c-search-uplist-for-classkey): massive rewrite of all parsing
  749.     components. c-parse-state now uncovers the brace nesting level of the
  750.     construct from (bod 2) to point and the other two defuns use this
  751.     information to make scooting around brace levels much quicker and more
  752.     accurate.
  753.  
  754. Thu Apr  7 14:34:28 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  755.  
  756.     * cc-mode.el (c-electric-brace):
  757.     can now specify `hanginess' on close braces
  758.  
  759. Thu Mar 31 15:10:09 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  760.  
  761.     * Public release: 3.304
  762.  
  763.     * cc-mode.el (c-search-uplist-for-classkey):
  764.     class relpos should be at the 'boi of
  765.     where c-class-key gives us a match.  This is because its too hard to
  766.     make c-class-key match the typedef keyword on:
  767.     
  768.     typedef struct Foo
  769.     {
  770.     
  771.     so its easier to make this fix instead.
  772.  
  773. Fri Mar 25 20:34:18 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  774.  
  775.     * cc-mode.el:
  776.     (c-forward-syntactic-ws) (c-backward-syntactic-ws): minor speed ups
  777.     achieved by calling forward-comment with a huge number so we don't
  778.     have to return to the lisp loop after just 1 comment.
  779.  
  780.     * cc-mode.el (c-search-uplist-for-classkey):
  781.     added another speedup where syntactic
  782.     whitespace is skipped before doing a re-search-forward.  This requires
  783.     however that the buffer be narrowed during the r-s-f because of the
  784.     definition of c-class-key which matches \\` or empty-string-at-bod.
  785.     It would be better to use \\`\\|\\= to match empty-string-at-point,
  786.     but that's not defined for v18, and doesn't seem to work anyway, at
  787.     least in Lemacs.
  788.     
  789.     (c-search-uplist-for-classkey): after finding a match for c-class-key,
  790.     skip non-semicolons up to brace point.  If a semi is found, we're
  791.     looking at a forward declaration, not a class definition.
  792.  
  793. Thu Mar 24 18:43:38 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  794.  
  795.     * cc-mode.el (c-guess-basic-semantics): do not limit calls to
  796.     c-search-uplist-for-classkey to just c++-mode since even in C we can
  797.     have nested structs and unions.
  798.     
  799.     (c-search-uplist-for-classkey): now returns a vector instead of a
  800.     cons cell
  801.     
  802.     (c-guess-basic-semantics): modifications for new c-s-u-f-c return
  803.     value
  804.  
  805.     * cc-mode.el:
  806.     (c-inside-bracelist-p) (c-guess-basic-semantics): when looking for an
  807.     enum brace-list, c-beginning-of-statement could leave us at point-min,
  808.     which could contain an intervening comment, so you need to call
  809.     c-forward-syntactic-ws.
  810.  
  811. Wed Mar 23 23:22:37 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  812.  
  813.     * cc-mode.el (c-search-uplist-for-classkey):
  814.     another fix for infinite loops that
  815.     can occur when indenting inside the second of multiple nested classes.
  816.     This should also speed things up by further limiting the region being
  817.     searched.
  818.  
  819. Tue Mar 22 23:12:58 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  820.  
  821.     * cc-mode.el (c-mark-function):
  822.     worked around call to backward-paragraph, which
  823.     didn't work and wasn't the right semantics anyway.  Movement should be
  824.     by beginning-/end-of-defun.
  825.  
  826.     * cc-mode.el (c-indent-exp):
  827.     restructure the unwind-protect call to ensure that the
  828.     `end' marker is always removed on any error condition.
  829.     
  830.     (c-indent-exp): find any open brace that occurs after point, ignoring
  831.     lexical whitespace, including newlines.
  832.  
  833.     * cc-mode.el (c-inside-bracelist-p):
  834.     in the first goto-char, goto containing-sexp,
  835.     not 1- c-s, otherwise, it will not properly recognize bracelists with
  836.     comments on the end of the line.  The following
  837.     c-beginning-of-statement will properly consume any preceding
  838.     whitespace.
  839.  
  840. Mon Mar 21 22:01:25 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  841.  
  842.     * cc-mode.el (c-search-uplist-for-classkey):
  843.     must handle nil return value from
  844.     scan-lists.
  845.  
  846.     * cc-mode.el (c-search-uplist-for-classkey):
  847.     fix problem of infinite loops when
  848.     there are balanced expressions between (bod 2) and the indent-point
  849.     that aren't picked up by bod because they don't match
  850.     defun-prompt-regexp.  We skip over this noise with scan-lists.
  851.  
  852.     * cc-mode-18.el:
  853.     don't hack c-emacs18-common-hook onto c-mode-common-hook anymore. tell
  854.     users to put it on their c-mode-common-hook themselves.
  855.  
  856.     * cc-mode.el (c-search-uplist-for-classkey): end-of-defun can fail
  857.  
  858. Fri Mar 18 21:38:31 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  859.  
  860.     * cc-mode.el (c-search-uplist-for-classkey):
  861.     new performance tuned version.  Here
  862.     are some numbers: hitting tab at the end of an 11k function, with an
  863.     8k function just before it was giving me 2.637sec for
  864.     c-indent-command, and 1.784sec for c-s-u-f-c alone.  Now I'm getting
  865.     0.972sec for c-i-c and 0.180sec for c-s-u-f-c.  An order of magnitude
  866.     improvement in c-s-u-f-c.  These are un-bc'd times. Other bottlenecks
  867.     must exist in c-i-c...
  868.  
  869.     * cc-mode.el:
  870.     added an eval-when-compile to pick up the reporter-* symbols when
  871.     byte-compiling.
  872.  
  873. Thu Mar 17 20:56:04 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  874.  
  875.     * cc-mode.el (c-electric-colon):
  876.     do scope-operator clean up immediately after
  877.     self-insert-command so that subsequent indentation and hanging
  878.     calculations will be performed correctly
  879.  
  880. Tue Mar 15 23:29:16 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  881.  
  882.     * cc-mode.el (c-search-uplist-for-classkey):
  883.     adjust for the fact that c-class-key
  884.     now match 1 character before the `c' in "class".  goto-char 1+ foundp
  885.     to get to the proper character starting the class definition.
  886.  
  887.     * cc-mode.el (c-read-offset): new helper function for c-set-offset
  888.     
  889.     (c-set-offset): sanity check OFFSET argument both interactively and
  890.     non-interactively.  This seems to trip up many novices.
  891.  
  892.     * cc-mode.el (c++-mode-map):
  893.     fixed binding for c-scope-operator. It is now on C-c :
  894.  
  895. Fri Mar 11 23:45:51 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  896.  
  897.     * cc-mode-18.el (c-emacs18-il): applied patch contributed by
  898.     SAKAI Kiyotaka(ksakai@mtl.t.u-tokyo.ac.jp) to fix infinite loop bug.
  899.  
  900.     * cc-mode.el (c-fill-paragraph): removed last 2 c-mode.el dependencies
  901.  
  902.     * cc-mode.el (c-guess-basic-semantics):
  903.     CASE 8C: after moving to placeholder, which
  904.     is bos, move over any conditional statments if looking at
  905.     c-conditional-key.  Otherwise the following code indents incorrectly:
  906.     
  907.     main()
  908.     {
  909.         while (cin >> float)
  910.             cout << float
  911.                  << float;   //  This should not be this far over but beneath <<
  912.     }
  913.  
  914.     * cc-mode.el (c-indent-exp):
  915.     put an unwind-protect around the sanity checks so that
  916.     point is restored on error
  917.  
  918.     * cc-mode.el (c-class-key): another fix to recognize keyword
  919.       `class' at beginning-of-buffer.
  920.     
  921.     (c-guess-basic-semantics): if class opening brace is not the last
  922.     non-whitespace on a line, the narrow-to-region narrowing out of
  923.     enclosing class will not have the proper begin point.  Make sure the
  924.     region does not contain the class opening brace.
  925.  
  926.     * cc-mode.el (c-indent-region):
  927.     fixed error signal when indenting region not
  928.     containing balanced sexp. e.g. at the top level:
  929.     
  930.     int i,
  931.         j,
  932.         k;
  933.  
  934.     * cc-mode.el (c-class-key):
  935.     another fix to recognize nested class but not the word
  936.     'class' in a template declaration
  937.  
  938. Thu Mar 10 23:32:37 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  939.  
  940.     * cc-mode.el (c-beginning-of-statement-1):
  941.     sped up about 8x by removing an
  942.     unnecessary (I think) call to c-backward-syntactic-ws and a duplicate
  943.     call to c-in-literal.  By using elp, I think these were the real time
  944.     hogs in c-b-o-s-1 which was the biggest hog in
  945.     c-guess-basic-semantics.
  946.  
  947. Wed Mar  9 22:15:26 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  948.  
  949.     * cc-mode.el (c-lineup-arglist):
  950.     added a (beginning-of-line) call before the
  951.     (backward-up-list 1) call in the special case for arglist-intro and
  952.     arglist-cont-nonempty.  Without this, indentation would be different
  953.     when point was at the beginning and end of line.  E.g.:
  954.     
  955.     main()
  956.     {
  957.         if ((BuddyRec* buf = (BuddyRec*)(bufs[message_bufs++]
  958.                          = ::new unsigned char[MessageBufSize]))
  959.             == 0) {
  960.         }
  961.     }
  962.     
  963.     
  964.     On the "== 0) {" line.
  965.  
  966.     * cc-mode.el (c-indent-exp):
  967.     try to be smarter about finding the beginning of the
  968.     balanced expression to indent.  Gives results closer to old
  969.     indent-c-exp behavior.
  970.  
  971.     * cc-mode.el (c-submit-bug-report):
  972.     moved the require of reporter to after the
  973.     y-or-n-p question. Shortened the package name so it will fit on the
  974.     Subject line better.
  975.  
  976. Mon Mar  7 17:39:45 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  977.  
  978.     * cc-mode.el (c-skip-conditional):
  979.     new function. factorized duplicate code
  980.     
  981.     (c-guess-basic-semantics): fixed statement-cont relpos calculation in
  982.     a continued statement following an else clause. CASE 8A and 8D changed
  983.     to use c-skip-conditional.
  984.  
  985. Mon Feb 28 18:23:36 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  986.  
  987.     * cc-mode.el (c-conditional-key):
  988.     not sufficient to wrap conditional keywords in
  989.     \\<...\\> since this will false hit a keyword followed by an
  990.     underscore, which technically isn't a keyword.  An example is
  991.     "do_table" which incorrectly gets marked as a `do' keyword.
  992.  
  993. Fri Feb 25 23:01:45 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  994.  
  995.     * cc-mode.el (c-guess-basic-semantics):
  996.     swapped CASE 7A and 7B so that we properly
  997.     indentify a brace-list-close of an empty brace list.
  998.  
  999.     * cc-mode.el (c-style-alist):
  1000.     added the "Ellemtel" style which implements the
  1001.     coding style defined in "Programming in C++, Rules and
  1002.     Recommendations, Erik Nyquist and Mats Henricson, Ellemtel, ftp from
  1003.     euagate.eua.ericsson.se".
  1004.  
  1005.     * cc-mode.el: (c-point) (c-indent-defun): only check the value of
  1006.     defun-prompt-regexp if it is boundp (so v18 doesn't break)
  1007.  
  1008. Thu Feb 24 23:34:08 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1009.  
  1010.     * cc-mode.el (c-electric-brace):
  1011.     fixed bug in temporary newline insertion when
  1012.     auto-newline is off.  If a temp newline was not inserted, don't try to
  1013.     delete it later on.
  1014.  
  1015.     * cc-mode.el (c-set-offset):
  1016.     changed the minibuffer prompt.  "Langelem" =>
  1017.     "Syntactic symbol", and put in a brief message so that people won't
  1018.     quote the symbol (as some novices have been doing).
  1019.  
  1020.     * cc-mode.el (c-guess-basic-semantics):
  1021.     CASE 4B.1, check for member init colon
  1022.     preceding point even after doing a forward-char -1.  Need to skip over
  1023.     constructor parameter list that span multiple lines, with the member
  1024.     init colon hanging on the last of those line.
  1025.     
  1026.     CASE 4D.1. added a backward-sexp call to handle member-init-cont's
  1027.     which are paren-lists broken across multiple lines.
  1028.  
  1029.     * cc-mode.el (c-inhibit-startup-warnings-p):
  1030.     new variable, used in c-emacs-features
  1031.     
  1032.     (c-emacs-features): rewrote feature extraction logic to be based on
  1033.     version numbers. This more closely reflects the current state of
  1034.     affairs of the main Emacs flavors.  There is sanity checking and
  1035.     warning messages built-in too, to help inform the user if there are
  1036.     known problems.
  1037.  
  1038. Mon Feb 21 18:13:53 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1039.  
  1040.     * cc-mode.el (c-guess-basic-semantics):
  1041.     swap case 4A.2 and 4A.3 so that brace-lists
  1042.     are checked before inline-open's, otherwise enums inside of classes
  1043.     are not recognized properly.
  1044.  
  1045.     * cc-mode.el (c-backslashify-current-line):
  1046.     use kill-region instead of kill-line so
  1047.     we don't have to use the kill-lines-magic hack.
  1048.  
  1049.     * cc-mode.el (c-beginning-of-statement-1):
  1050.     do not register last-begin when looking
  1051.     at a case/default label, otherwise statement-cont lines after a case
  1052.     label will not be associated with the correct beginning-of-statement
  1053.  
  1054. Fri Feb 18 16:13:27 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1055.  
  1056.     * cc-mode.el (c-lineup-arglist):
  1057.     must handle arglist-intro lines just like
  1058.     arglist-cont-nonempty lines in the calculation of containing-sexp in
  1059.     the let* statement.
  1060.     
  1061.     (c-lineup-arglist): do not hard-code offset to 2 if at the end, we are
  1062.     still looking at the eol.  I don't know why that was there...
  1063.  
  1064.     * cc-mode.el (c-guess-basic-semantics):
  1065.     CASE 4I, topmost-intro-cont's relpos must
  1066.     be the boi of the beginning-of-statement, otherwise multiple t-i-c
  1067.     lines get marching indentation.
  1068.  
  1069. Thu Feb 17 23:53:16 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1070.  
  1071.     * cc-mode.el (c-set-style):
  1072.     changed the sense of the optional argument.  Now, style
  1073.     changes modify the global variables by default, except when a non-nil
  1074.     second argument is given.  Only then are buffer-local versions of the
  1075.     variables made.
  1076.  
  1077.     * cc-mode.el (c-lineup-arglist):
  1078.     fixed calculation of containing-sexp for the
  1079.     following code:
  1080.     
  1081.     main()
  1082.     {
  1083.         if( someFunction(someArg,
  1084.                          anotherArg) &&
  1085.             someOtherFunction(someArg,
  1086.                               anotherArg))
  1087.             doThis();
  1088.     }
  1089.  
  1090.     * cc-mode.el (c-class-key):
  1091.     fixed class recognizing regexp so that it doesn't
  1092.     falsely match the word `class' in a template function declaration,
  1093.     e.g.:
  1094.     
  1095.     template<class T>
  1096.     int A<T>::foo(
  1097.  
  1098.     * cc-mode.el (c-mode-map):
  1099.     moved c-indent-defun to C-c C-q.  This should be its
  1100.     final resting place
  1101.     
  1102.     (c-lineup-math): new optional custom indent function, not used by
  1103.     default.
  1104.  
  1105.     * cc-mode.el (c-mode-map):
  1106.     moved c-indent-defun from C-M-x to C-c C-i.  RMS says
  1107.     C-M-x is reserved.
  1108.  
  1109. Wed Feb 16 23:06:15 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1110.  
  1111.     * cc-mode.el (c++-mode-syntax-table):
  1112.     change : back to default (. == punctuation)
  1113.     syntax class since c-label-key is busted when its (_ == symbol)
  1114.  
  1115.     * cc-mode.el (c-lineup-runin-statements):
  1116.     new lineup function for people who hang
  1117.     the first statement after the open brace.
  1118.     
  1119.     (c-offsets-alist-default): added comment about alternative indentation
  1120.     style for `statement'
  1121.  
  1122. Mon Feb 14 15:53:30 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1123.  
  1124.     * cc-mode.el (c-point):
  1125.     when defun-prompt-regexp is non-nil, b-o-d doesn't leave us
  1126.     at the brace, so we need to skip it as noise.
  1127.  
  1128.     * cc-mode.el (c-indent-defun): if defun-prompt-regexp is non-nil,
  1129.     beginning-of-defun won't leave us at the open brace, so we must skip
  1130.     over defun-prompt-regexp... its noise.
  1131.  
  1132. Fri Feb 11 20:49:19 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1133.  
  1134.     * cc-mode.el (c-guess-basic-semantics):
  1135.     CASE 14.C, when looking for a ?: construct,
  1136.     and checking for not looking at a :: scope operator, make sure we do
  1137.     this comparison at indent-point, instead of the first non-blank line
  1138.     in the block
  1139.  
  1140.     * cc-mode.el (c-guess-basic-semantics):
  1141.     CASE 8C: if first stream-op is on a
  1142.     separate line (i.e. not on the `cout' line), it should be indented
  1143.     like a statement-cont, not a stream-op.  Relpos in this case is boi of
  1144.     the first preceding non-syntactic-ws line
  1145.  
  1146.     * cc-mode.el: (c-backward-to-start-of-if) (c-backward-to-start-of-do)
  1147.     (c-guess-basic-semantics): It is not enough to search test for
  1148.     looking-at "keyword\\b" since this will not catch "keyword_thing",
  1149.     which is a valid symbol and not a keyword.  There is no equivalent of
  1150.     \\b that matches at the end of a word-or-symbol string.  For now, I
  1151.     changed the looking-at's to "keyword\\b[^_]" which seems to work.
  1152.     There are probably instances of "keyword\\>" that are broken too, but
  1153.     we'll hit them as they occur, since I'm not sure they are broken.
  1154.  
  1155. Thu Feb 10 23:30:11 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1156.  
  1157.     * cc-mode.el (c-populate-syntax-table):
  1158.     only put c-mode/c++-mode common syntax
  1159.     entries into syntax table.
  1160.     
  1161.     (c++-mode-syntax-table): colon (:) gets symbol class
  1162.  
  1163.     * cc-mode.el:
  1164.     (c-mode-hook) (c++-mode-hook) (c-mode-common-hook): added defvars for
  1165.     completeness.
  1166.  
  1167. Wed Feb  9 17:48:21 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1168.  
  1169.     * Public release: 3.229
  1170.  
  1171.     * cc-mode.el (c-electric-braces):
  1172.     when calculating the initial semantics of the
  1173.     open brace, we only need to insert a temporary newline if there is
  1174.     non-whitespace preceding the brace, on the same line.
  1175.  
  1176.     * cc-mode.el (c-guess-basic-semantics):
  1177.     CASE 4I, don't add `inclass' semantics to
  1178.     the list since the relpos already has any inclass offset added in.
  1179.     Otherwise we get inclass offsets added twice.
  1180.  
  1181.     * cc-mode.el (c-guess-basic-semantics):
  1182.     fixed small problem introduced in version
  1183.     3.235. when skipping lexical whitespace, we must skip [ \t\n].
  1184.     newline wasn't getting skipped.
  1185.  
  1186. Tue Feb  8 22:05:48 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1187.  
  1188.     * cc-mode.el:
  1189.     (c-offsets-alist) (c-offsets-alist-default): added `friend' syntactic
  1190.     symbol for recognition of C++ friend declarations.  Default offset is
  1191.     0.
  1192.     
  1193.     (c-guess-basic-semantics): recognize C++ friend declarations, and add
  1194.     `friend' syntactic symbols as a modifier.
  1195.  
  1196.     * cc-mode.el (c-guess-basic-semantics):
  1197.     when narrowing out enclosing class, and
  1198.     calculating start of region to narrow to, do not skip all syntactic
  1199.     ws, just lexical whitespace (change c-forward-syntactic-ws call to
  1200.     skip-chars-forward). Otherwise, you could skip into the middle of a C
  1201.     comment block and not figure out that what you're looking at is a `c'
  1202.     syntactic symbol.
  1203.  
  1204.     * cc-mode.el:
  1205.     (c-offsets-alist) (c-offsets-alist-default) (c-guess-basic-semantics):
  1206.     added defun-block-intro syntactic symbol which controls indentation
  1207.     for the first line in a top-level defun, analogous to
  1208.     statement-block-intro.  (CASE 14.E)
  1209.  
  1210.     * cc-mode.el (c-indent-defun):
  1211.     catch any errors that occur in c-indent-exp and make
  1212.     sure point is restored and the temporary mark is destroyed.
  1213.  
  1214.     * cc-mode.el: (c-untame-characters) (c-backscan-limit) (c-tame-insert)
  1215.     (c-tame-comments) (c-emacs18-fsws) (c-emacs18-bsws) (c-emacs18-il):
  1216.     moved these defuns and vars to cc-mode-18.el file.
  1217.     
  1218.     (c-mode-map): do not install Emacs 18-only bindings
  1219.     
  1220.     (c-populate-syntax-table): do not install Emacs 18-only syntax table
  1221.     entries
  1222.     
  1223.     (c-insert-and-tame): renamed to c-insert-special-chars and make this
  1224.     call only self-insert-command.  Don't worry about Emacs 18
  1225.     compatibility.
  1226.     
  1227.     (c-mark-function) (c-common-init): Don't worry about Emacs 18
  1228.     compatibility.
  1229.     
  1230.     (c-emacs19-accurate-fsws): renamed to c-forward-syntactic-ws. Don't
  1231.     worry about Emacs 18 compatibility.
  1232.     
  1233.     (c-emacs19-accurate-bsws): renamed to c-backward-syntactic-ws. Don't
  1234.     worry about Emacs 18 compatibility.
  1235.     
  1236.     (c-8bit-il): renamed to c-in-literal. Don't worry about Emacs 18
  1237.     compatibility.
  1238.     
  1239.     (c-submit-bug-report): remove reporting of c-backscan-limit and
  1240.     c-untame-characters since these are for Emacs 18 only.
  1241.  
  1242. Wed Feb  2 00:00:40 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1243.  
  1244.     * cc-mode.el (c-lineup-arglist):
  1245.     add kludge for arglist-cont-nonempty to get
  1246.     correct indentation.
  1247.     
  1248.     (c-guess-basic-semantics): CASE 5D: arglist-cont-nonempty's relpos
  1249.     needs to be boi of containing-sexp paren.  this is good for + offset,
  1250.     but bad for c-lineup-arglist, so add the kludge described above.
  1251.  
  1252. Tue Feb  1 22:14:35 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1253.  
  1254.     * cc-mode.el (c-inside-bracelist-p):
  1255.     enum keyword could be preceded by a typedef
  1256.     keyword
  1257.  
  1258.     * cc-mode.el (c-comment-region):
  1259.     removed as obsolete, use comment-region instead.
  1260.     Put the new comment-region function in, but commented out.
  1261.  
  1262.     * cc-mode.el (c-default-macroize-column):
  1263.     changed to c-backslash-column. Default
  1264.     value changed to 48 from 78.  This is merged from c-mode.el
  1265.     
  1266.     (c-macroize-region): changed to c-backslash-region for c-mode.el merge.
  1267.  
  1268. Mon Jan 31 22:57:05 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1269.  
  1270.     * cc-mode.el (c-guess-basic-semantics):
  1271.     CASE 8B.3: instead of try-block-open, which
  1272.     is now gone, put statement-cont, block-open on semantics list.
  1273.     Eventually I may call a recognition hook, and/or exceptions probably
  1274.     fall through to here.
  1275.  
  1276.     * cc-mode.el (c-guess-basic-semantics):
  1277.     CASE 5E. go to beginning of statement
  1278.     before looking getting relpos, so that we properly pick up nested
  1279.     argument lists.
  1280.  
  1281.     * cc-mode.el (c-common-init):
  1282.     better setting up of Lucid menubar (use mode-name as
  1283.     menu bar title)
  1284.     
  1285.     (c-popup-menu): use mode-name in menu title
  1286.  
  1287.     * cc-mode.el (c-keep-region-active):
  1288.     shouldn't check for interactive-p in tests
  1289.     
  1290.     (c-submit-bug-report): don't keep region active.
  1291.  
  1292.     * cc-mode.el (c-keep-region-active): no-op for FSF 19
  1293.     
  1294.     (c-set-style) (c-beginning-of-statement) (c-end-of-statement)
  1295.     (c-up-conditional) (c-backward-conditional) (c-forward-conditional)
  1296.     (c-popup-menu): added a call to c-keep-region-active
  1297.     
  1298.     (c-tame-comments) (c-indent-command) (c-indent-exp) (c-indent-defun)
  1299.     (c-indent-region) (c-macroize-region) (c-comment-region): removed call
  1300.     to c-keep-region-active
  1301.  
  1302. Sun Jan 30 20:22:09 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1303.  
  1304.     * cc-mode.el (c-mode-map):
  1305.     remapped c-toggle-hungry-state to C-c C-d so it would
  1306.     not interfer with standard C-c C-h key prefix help mapping
  1307.  
  1308. Fri Jan 28 22:16:29 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1309.  
  1310.     * cc-mode.el (c-switch-label-key):
  1311.     fixed what can occur between the `case' keyword
  1312.     and the colon.  Its any amount of whitespace, followed by a single,
  1313.     non-whitespace character, followed by any number of other characters.
  1314.  
  1315. Thu Jan 27 21:15:57 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1316.  
  1317.     * cc-mode.el (c-fill-paragraph):
  1318.     much better for C++ style comments. 1. does not
  1319.     munge up font-lock regions by inserting/deleting the intended
  1320.     fill-prefix. 2. does not assume that leading whitespace before // is
  1321.     spaces, *but* fill-prefix must be consistent for every line in the
  1322.     region.
  1323.  
  1324.     * cc-mode.el (c-mode-menu): moved this higher up in file
  1325.  
  1326.     * cc-mode.el (c-end-of-statement): simple paren mismatch in call to
  1327.     c-beginning-of-statement
  1328.  
  1329.     * cc-mode.el (c-guess-basic-semantics):
  1330.     CASE 2, skip over any preceding blank lines
  1331.     that can occur before the comment. This fixes comment indentation for
  1332.     the second and following paragraphs in a multi-paragraph C block
  1333.     comment region with no leading stars.
  1334.     
  1335.     (c-lineup-C-comment): don't assume relpos is at the beginning of the
  1336.     line (even though it usually is).
  1337.  
  1338.     * cc-mode.el (c-switch-label-key):
  1339.     simplify description of what can follow a 'case' tag
  1340.  
  1341.     * cc-mode.el: Use copy-alist instead of c-copy-sequence
  1342.  
  1343.     * cc-mode.el (c-common-init):
  1344.     fix the way c-mode-menu is added to the Lucid menubar
  1345.     so existing menubars aren't clobbered
  1346.  
  1347.     * cc-mode.el (c-copy-sequence):
  1348.     workaround for FSF 19.22 bug in copy-sequence
  1349.  
  1350. Wed Jan 26 22:38:20 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1351.  
  1352.     * cc-mode.el (c-lineup-comment): renamed from c-indent-for-comment
  1353.     
  1354.     (c-lineup-comment): call c-comment-indent when a comment-only line's
  1355.     indentation is at or to the right of comment-column.
  1356.     
  1357.     (c-guess-basic-semantics): when a comment-only line's indentation is
  1358.     at or to the right of comment-column, only 'comment-intro is on the
  1359.     semantics list since the comment does not indent relative to a
  1360.     non-comment line would get indented.
  1361.  
  1362.     * cc-mode.el (c-lineup-arglist):
  1363.     now correctly handles arglist-close langelems
  1364.     (i.e. closing parens in an arglist)
  1365.  
  1366.     * cc-mode.el (c-offsets-alist-default):
  1367.     new constant containing unchanging default
  1368.     settings for langelems
  1369.     
  1370.     (c-offsets-alist): value is set as a distinct copy of
  1371.     c-offsets-alist-default.
  1372.     
  1373.     (c-set-style): if 'c-offsets-alist is found in style, first reset the
  1374.     value of this variable to c-offses-alist-default, then change only
  1375.     those langelems that differ.
  1376.  
  1377.     * cc-mode.el (c-style-alist):
  1378.     changed defconst to defvar. removed comments from
  1379.     c-mode merge
  1380.  
  1381.     * cc-mode.el (c-indent-region): minor format change
  1382.  
  1383.     * cc-mode.el (c-indent-region):
  1384.     merged in RMS's latest c-indent-region. Added a
  1385.     skip of blank lines before the current line is indented. Recalculate
  1386.     beginning-of-defun lim inside of top-level while loop so that
  1387.     back-parsing is further restricted properly, speeding indentation
  1388.     calculation.
  1389.  
  1390. Tue Jan 25 18:01:01 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1391.  
  1392.     * cc-mode.el (c-fill-paragraph): small fix to RMS's paren level typo
  1393.  
  1394.     * cc-mode.el (c-fill-paragraph):
  1395.     fixed (hopefully) obvious parenthesis level typo
  1396.  
  1397.     * cc-mode.el (c-fill-paragraph): added RMS's new C++ aware version
  1398.     
  1399.     (c-mode-map): put back the binding of M-q to c-fill-paragraph
  1400.  
  1401. Mon Jan 24 22:52:53 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1402.  
  1403.     * cc-mode.el (c-update-modeline): typo: use c-hungry-delete-key
  1404.  
  1405.     * cc-mode.el (c-auto-hungry-string): minor-mode-alist variable
  1406.     
  1407.     (c-common-init): auto-hungry designation string happens on
  1408.     minor-mode-alist now
  1409.     
  1410.     (c-update-modeline): sets the c-auto-hungry-string
  1411.  
  1412.     * cc-mode.el (c-electric-semi&comma):
  1413.     only re-indent line when c-auto-newline is non-nil
  1414.  
  1415.     * cc-mode.el (c-mode-menu):
  1416.     new Lucid menu variable for popup and menubar
  1417.     
  1418.     (c-popup-menu): command for popping up a menu in Lemacs
  1419.     
  1420.     (c-mode-map): FSF 19's menu initialization stuff is moved to here. Add
  1421.     binding for Lemacs to put c-popup-menu on button 3.
  1422.     
  1423.     (c-common-init): put c-mode-menu on buffer-local menubar for Lucid
  1424.  
  1425. Fri Jan 21 22:36:03 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1426.  
  1427.     * cc-mode.el:
  1428.     (c-up-block) (c-down-block): removed.  backward-up-list and down-list
  1429.     do the job already
  1430.  
  1431.     * cc-mode.el: (cc-mode.el) comment improvements
  1432.     
  1433.     (c-mode-map): a few merges from lemacs, but commented out for now.
  1434.     
  1435.     (c-insert-brackets) (c-insert-braces): taken from lemacs, but
  1436.     commented out for now
  1437.     
  1438.     (cc-mode.el): menus added from FSF emacs.  Still need menus for
  1439.     lemacs.
  1440.  
  1441. Fri Jan 14 18:59:57 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1442.  
  1443.     * cc-mode.el (cc-mode.el): fixed typo on make-obsolete-variable
  1444.  
  1445.     * cc-mode.el (cc-mode.el): added all make-variable-obsolete calls
  1446.  
  1447. Thu Jan 13 23:25:57 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1448.  
  1449.     * cc-mode.el (c-guess-basic-semantics):
  1450.     CASE 8A substatement. relpos is boi of
  1451.     placeholder
  1452.  
  1453.     * cc-mode.el (c-beginning-of-statement-1):
  1454.     skip back over syntactic ws before
  1455.     checking bobp in while condition
  1456.  
  1457. Wed Jan 12 14:24:11 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1458.  
  1459.     * cc-mode.el (cc-mode.el): only v19 has the make-obsolete calls
  1460.  
  1461.     * cc-mode.el (c-guess-basic-semantics):
  1462.     CASE 8B.3 now returns a try-block-open, but
  1463.     exceptions aren't yet fully supported.
  1464.  
  1465.     * cc-mode.el (c-beginning-of-statement):
  1466.     when in a comment, or looking at the
  1467.     beginning of a comment, only call forward-sentence if not called
  1468.     interactively.  Thus programmatically, this function always goes back
  1469.     to the real beginning-of-statement.
  1470.  
  1471.     * cc-mode.el (cc-mode.el): changes to comments at top of file
  1472.  
  1473.     * cc-mode.el:
  1474.     (c-common-init) (c-style-name) (c-set-style): removed c-style-name,
  1475.     and no longer put style name on minor mode list
  1476.  
  1477.     * cc-mode.el:
  1478.     (c-set-style) (c-style-alist): vastly verbosified docstrings
  1479.  
  1480. Tue Jan 11 23:50:45 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1481.  
  1482.     * cc-mode.el (c-offsets-alist): vastly verbosified docstring.
  1483.     
  1484.     (cc-mode.el): LANGELEM in docstrings are changed to "syntactic element
  1485.     symbols" for clarity (?!)
  1486.  
  1487.     * cc-mode.el: (c-electric-colon) (c-offsets-alist) (c-macroize-region)
  1488.     (c-block-comments-indent-p) (c-untame-characters)
  1489.     (c-toggle-auto-state) (c-toggle-hungry-state) (c-macroize-region):
  1490.     minor docstring mods
  1491.  
  1492.     * cc-mode.el (c-electric-colon): minor docstring mod
  1493.     
  1494.     (c-submit-bug-report): removed c-auto-hungry-initial-state from
  1495.     reported var list
  1496.  
  1497.     * cc-mode.el (c-offsets-alist):
  1498.     improve the docstrings for brace-list-* langelems
  1499.  
  1500.     * cc-mode.el (c-auto-hungry-initial-state):
  1501.     obsolete variable, use c-auto-newline
  1502.     and c-hungry-delete-key variables instead
  1503.     
  1504.     (c-mode) (c++-mode): run-hooks is now the last thing
  1505.     
  1506.     (c-set-auto-hungry-state) (c-make-region-active): removed
  1507.     
  1508.     (c-keep-region-active): is now a defun
  1509.     
  1510.     (c-update-modeline) (c-calculate-state): added
  1511.     
  1512.     (c-toggle-auto-state) (c-toggle-hungry-state)
  1513.     (c-toggle-auto-hungry-state): simplified vastly. also, docstrings now
  1514.     explain what the features do.
  1515.  
  1516.     * cc-mode.el (cc-mode.el):
  1517.     added an fset of c++-beginning-of-defun for lemacs 19.9
  1518.     lossage
  1519.  
  1520.     * cc-mode.el (c-cleanup-list):
  1521.     improved docstring, when do clean ups take place?
  1522.  
  1523.     * cc-mode.el (c-cleanup-list): minor docstring typo fix
  1524.  
  1525.     * cc-mode.el (cc-mode.el): changed FSFmacs to FSF Emacs
  1526.  
  1527.     * cc-mode.el: added my name to 1993 and 1994 copyrights
  1528.  
  1529. Mon Jan 10 22:10:11 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1530.  
  1531.     * cc-mode.el (c-set-offset):
  1532.     conversion of offset to a number in the interactive
  1533.     list glom section was missing negative numbers due to the leading
  1534.     minus sign
  1535.  
  1536.     * cc-mode.el (c-beginning-of-statement-1):
  1537.     on error, skip backwards over +!~ in
  1538.     addition to other chars skipped
  1539.  
  1540. Sat Jan  8 03:20:49 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1541.  
  1542.     * cc-mode.el (c-electric-pound):
  1543.     fixed after-functionality positioning when point
  1544.     is at bolp before # is installed
  1545.  
  1546.     * cc-mode.el (c-guess-basic-semantics):
  1547.     CASE 13, inline-close relpos should be boi
  1548.     of the beginning-of-statement relpos
  1549.  
  1550.     * cc-mode.el (c-beginning-of-statement-1):
  1551.      only do the skip-chars-backwards in the
  1552.     failure of the condition-case statement.  also, add the `-' character
  1553.     to the list of skippage
  1554.  
  1555. Fri Jan  7 23:27:20 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1556.  
  1557.     * cc-mode.el (c-beginning-of-statement-1):
  1558.     do not let backward scanning stop inside
  1559.     a literal.  use c-in-literal to stop this, which really catches only
  1560.     preprocs
  1561.  
  1562.     * cc-mode.el (c-guess-basic-semantics):
  1563.     CASE 13, block-close relpos should be boi
  1564.     of relpos to catch "} else {" constructs
  1565.  
  1566.     * cc-mode.el: (c-forward-conditional) (c-indent-region)
  1567.     (c-beginning-of-inheritance-list) (c-backward-to-start-of-do)
  1568.     (c-backward-to-start-of-if): removed unused let-bound variables as per
  1569.     output of byte compiler
  1570.  
  1571.     * cc-mode.el: better messages about the necessary makunbounds
  1572.  
  1573. Thu Jan  6 18:52:51 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1574.  
  1575.     * cc-mode.el (c-beginning-of-statement-1): recognize "else if" clauses
  1576.     
  1577.     (c-guess-basic-semantics): CASE 8A recognizes "else if" clauses
  1578.  
  1579. Mon Jan  3 23:01:58 1994  Barry A. Warsaw, ITB  (warsaw@anthem)
  1580.  
  1581.     * cc-mode.el: upped the copyright notice date
  1582.  
  1583.     * cc-mode.el (c-beginning-of-statement-1):
  1584.     before calculating last-begin, skip over
  1585.     any bogus characters like *&:. for the following situations:
  1586.     
  1587.         if(::foo(),
  1588.         if(.0123,
  1589.         if(&blatz,
  1590.         if(*bar,
  1591.  
  1592.     * cc-mode.el (c-guess-basic-semantics):
  1593.     CASE 8A.  do and else clauses aren't
  1594.     followed by a paren list, so we should only skip forward over 1 sexp
  1595.     in those cases.
  1596.  
  1597. Wed Dec 29 18:06:12 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1598.  
  1599.     * cc-mode.el (c-lineup-multi-inher):
  1600.     skip syntactic ws if there is only a comment
  1601.     on the end of the line containing the opening colon
  1602.  
  1603.     * cc-mode.el (c-guess-basic-semantics): CASE 5C, don't check for
  1604.     c-conditional-statement, since only "for" can have multiple
  1605.     substatements
  1606.  
  1607.     * cc-mode.el (c-guess-basic-semantics):
  1608.     CASE 8: added colon to list of characters
  1609.     that don't continue a statement, all other cases will be caught later
  1610.     on (I hope).
  1611.  
  1612.     * cc-mode.el (c-guess-basic-semantics):
  1613.     rewrote and re-arranged CASE 5 subcases to
  1614.     correctly identifiy for-list substatements, etc.  looks like
  1615.     paren-lists now work pretty well.
  1616.  
  1617. Tue Dec 28 16:36:06 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1618.  
  1619.     * cc-mode.el (c-guess-basic-semantics):
  1620.     fixed CASE 5C to use new semantics for
  1621.     c-beginning-of-statement.
  1622.  
  1623.     * cc-mode.el (c-beginning-of-statement-1):
  1624.     make sure searching stops correctly at
  1625.     conditional statements (if/while,...etc) so that substatements are
  1626.     properly recognized
  1627.  
  1628.     * cc-mode.el (c-beginning-of-statement):
  1629.     make sure we're left at or after lim
  1630.  
  1631.     * cc-mode.el: (c-electric-brace) (c-electric-slash) (c-electric-star)
  1632.     (c-electric-semi&comma) (c-electric-colon): let-bind
  1633.     c-echo-semantic-information-p to nil to shut up information printing
  1634.     in inappropriate places
  1635.  
  1636.     * cc-mode.el (c-guess-basic-semantics):
  1637.     fixes to CASE 8 for new semantics of
  1638.     c-beginning-of-statement.  Added a test of placeholder !=
  1639.     containing-sexp in top-level test.  CASE 8D, progn => save-excursion
  1640.     so correct statement start can be found
  1641.  
  1642.     * cc-mode.el:
  1643.     (c-beginning-of-statement) (c-end-of-statement): minor clean up.
  1644.     removed my old c-beginning-of-statement -- we'll go with FSF's and fix
  1645.     it as need bee
  1646.  
  1647. Mon Dec 27 23:25:17 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1648.  
  1649.     * cc-mode.el:
  1650.     (c-beginning-of-statement) (c-end-of-statement): add another optional
  1651.     argument, lim
  1652.     
  1653.     (c-guess-basic-semantics): corrected to use new arg list for the above
  1654.  
  1655.     * cc-mode.el:
  1656.     (c-beginning-of-statement) (c-end-of-statement): check for argument ==
  1657.     nil (optional arg not supplied)
  1658.  
  1659.     * cc-mode.el:
  1660.     (c-beginning-of-statement) (c-end-of-statement): make arg optional
  1661.  
  1662.     * cc-mode.el (c-beginning-of-statement, et al):
  1663.     try using BOCM's version to see if
  1664.     it works any better
  1665.  
  1666.     * cc-mode.el (c-set-style): put a space in front of c-style name
  1667.     
  1668.     (c-common-init): only hack on c-style-name once!
  1669.  
  1670.     * cc-mode.el: provide cc-mode, not c-mode
  1671.  
  1672.     * cc-mode.el (c-style-name): new variable, buffer local
  1673.     
  1674.     (c-common-init): hack on c-style-name to the minor-mode alist
  1675.     
  1676.     (c-set-style): set c-style-name variable for minor-mode
  1677.  
  1678.     * cc-mode.el (c-conditional-key): added "switch"
  1679.     
  1680.     (c-guess-basic-semantics): renumbered CASE 8 subcases, no substantive
  1681.     changes.
  1682.     
  1683.     (c-guess-basic-semantics): added dummy CASE 8B.3 to generate an error.
  1684.     I don't know what constructs fall through this case.
  1685.  
  1686.     * cc-mode.el (c-symbol-key):
  1687.     put this back in and fixed all the other -key's to use it
  1688.  
  1689.     * cc-mode.el (c-set-auto-hungry-state):
  1690.     small typo in check for force-mode-line-update
  1691.  
  1692.     * cc-mode.el: use force-mode-line-update where appropriate
  1693.  
  1694.     * cc-mode.el: added autoload directives
  1695.  
  1696. Wed Dec 22 20:52:32 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1697.  
  1698.     * cc-mode.el (c-inside-bracelist-p):
  1699.     fixed a bug when no spaces were between the =
  1700.     char and open brace in an aggregate list
  1701.  
  1702.     * cc-mode.el (c-switch-label-key): fixed to recognize negative numbers
  1703.  
  1704.     * cc-mode.el:
  1705.     (c-forward-into-nomenclature) (c-backward-into-nomenclature): new
  1706.     commands, but as yet unbound
  1707.  
  1708.     * cc-mode.el (c-guess-basic-semantics):
  1709.     CASE 7C: look for block-open modifier
  1710.  
  1711. Tue Dec 21 22:55:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1712.  
  1713.     * cc-mode.el (c-guess-basic-semantics):
  1714.     CASE 7 improved but nested brace-lists are
  1715.     still not perfect.  Do I need to add another langelem??? blech.
  1716.  
  1717.     * cc-mode.el (c-inside-bracelist-p):
  1718.     new function to calculate whether we're inside
  1719.     a brace list or not
  1720.     
  1721.     (c-guess-basic-semantics): use c-inside-bracelist-p where appropriate
  1722.  
  1723.     * cc-mode.el (c-guess-basic-semantics):
  1724.     CASE 7B's (brace-list-close) relpos is not
  1725.     boi of bo-stmt, instead its boi of containing-sexp
  1726.  
  1727.     * cc-mode.el (c-offsets-alist):
  1728.     added brace-list-close, brace-list-intro,
  1729.     brace-list-entry
  1730.     
  1731.     (c-guess-basic-semantics): added logic to recognize brace-list-open
  1732.     new langelems
  1733.  
  1734.     * cc-mode.el (c-hanging-braces-alist):
  1735.     docstring addition: brace-list-open
  1736.     
  1737.     (c-offsets-alist): added brace-list-open
  1738.     
  1739.     (c-electric-brace): added logic to hang brace-list-open's
  1740.     
  1741.     (c-guess-basic-semantics): added logic to recognize brace-list-open's
  1742.  
  1743.     * cc-mode.el (c-mode-map): removed binding to undefined c-match-paren
  1744.  
  1745.     * cc-mode.el (c-semantics): new variable
  1746.     
  1747.     (c-indent-via-language-element): use globally advertised c-semantics
  1748.     variable now.
  1749.     
  1750.     (c-offsets-alist): better docstring, describes c-semantics
  1751.  
  1752.     * cc-mode.el (c-adaptive-block-open):
  1753.     new function, but block-open doesn't use it
  1754.     by default yet
  1755.     
  1756.     (c-guess-basic-semantics): moved M2 (block-open) test into body of
  1757.     defun instead of at the end -- to many special case tests
  1758.  
  1759. Mon Dec 20 17:55:38 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1760.  
  1761.     * cc-mode.el (c-indent-command):
  1762.     guarantee that c-tab-always-indent == nil has the
  1763.     same semantics as in BOCM
  1764.  
  1765.     * cc-mode.el (cc-mode.el): pulled in bocm's beginning-of-statement,
  1766.     end-of-statement and related defuns, but I still need to make a pass
  1767.     through them.
  1768.     
  1769.     (c-up-conditional) (c-backward-conditional) (c-forward-conditional):
  1770.     yanked in verbatim from c-mode.el
  1771.     
  1772.     (c-backslash-region): fset from c-macroize-region.  also, we're
  1773.     leaving c-backslash-column commented out. use
  1774.     c-default-macroize-column instead.
  1775.  
  1776.     * cc-mode.el (c-fill-paragraph): removed, use filladapt instead
  1777.     
  1778.     (c-comment-indent): adopted from c-mode.el, but fixed to handle C++
  1779.     comments
  1780.  
  1781.     * cc-mode.el (c-mode.el):
  1782.     moved some defuns and defmacros around. no substantive changes
  1783.  
  1784.     * cc-mode.el (c-symbol-key): obsolete, use \\s_ syntax class instead
  1785.     
  1786.     (c-protection-key): new defconst
  1787.     
  1788.     (c-case-statement-key): renamed to c-switch-label-key
  1789.  
  1790.     * cc-mode.el (c-lineup-streamop):
  1791.     search for stream operator, be careful of
  1792.     singular less than, greater than symbol.
  1793.  
  1794. Fri Dec 17 21:42:27 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1795.  
  1796.     * cc-mode.el:
  1797.     fixed semantics for c-macroize-region and c-comment-region
  1798.  
  1799.     * cc-mode.el (c-guess-basic-semantics):
  1800.     don't put block-open on semantics list if
  1801.     other brace open symbols are already there
  1802.  
  1803. Thu Dec 16 20:49:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1804.  
  1805.     * cc-mode.el (c-emacs-features): minor docstring change
  1806.  
  1807.     * cc-mode.el (c-set-offset):
  1808.     new optional add-p arg. when non-nil, require-match on
  1809.     completion is inhibited and new langelem symbols can be added to the
  1810.     c-offsets-alist.
  1811.     
  1812.     (c-guess-basic-semantics): CASE 7C has been extended to properly
  1813.     recognize conditional's substatements.  CASE 7D now handles continued
  1814.     statements.  CASE 7A now recognizes only func local class opening
  1815.     braces, which means 7C + M2 will catch substatement block-opens.
  1816.     
  1817.     (c-offsets-alist): added substatement langelem
  1818.  
  1819.     * cc-mode.el (c-strict-semantics-p):
  1820.     default value to nil for debugging purposes
  1821.     
  1822.     (c-guess-basic-semantics): block-open langelem is now a relpos-less
  1823.     langelem because it is really a modifier on the basic langelem of the
  1824.     line.  Specifically: Case M2 added; CASE 7A.2 now places just a
  1825.     statement-cont langelem on semantics; CASE 13.B is completely removed.
  1826.     
  1827.     (c-offsets-alist): block-open default offset is now 0.
  1828.  
  1829. Mon Dec 13 15:29:26 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1830.  
  1831.     * cc-mode.el (c-guess-basic-semantics):
  1832.     now it does the the test for c++-mode to
  1833.     save a potential funcall in c-mode.
  1834.     
  1835.     (c-search-uplist-for-class): fixed bug where c-in-literal test was
  1836.     testing end-point of parse-partial-sexp, not the classkey search begin
  1837.     point.
  1838.  
  1839. Thu Dec  9 19:02:25 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1840.  
  1841.     * cc-mode.el (c++-mode-map): fixed FSF call to set-keymap-parent
  1842.  
  1843.     * cc-mode.el (c++-mode-map):
  1844.     JWZ contributed a better way to share keymaps for v18
  1845.     using nconc
  1846.     
  1847.     (c-populate-map): obsolete, move all define-keys into c-mode-map if
  1848.     statement
  1849.  
  1850.     * cc-mode.el (c-emacs-features):
  1851.     for Emacs 19's, add a flavor member to distinguish
  1852.     between FSF19 and Lucid19.
  1853.     
  1854.     (c++-mode-map): for Emacs 19's, inherit c++-mode-map from c-mode-map.
  1855.     Handle FSF/Lucid properly and handle GNU18 the hard way.
  1856.  
  1857. Wed Dec  8 22:43:02 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1858.  
  1859.     * cc-mode.el (c-down-block):
  1860.     changed call of c-beginning-of-block to c-up-block
  1861.  
  1862.     * cc-mode.el:
  1863.     (c-populate-map) (c-populate-syntax-table): new funcs to consolatate
  1864.     setting these structures
  1865.     
  1866.     (c-mode-map) (c++-mode-map): get as close as we can with BOCM's
  1867.     mappings, but there are still some inconsistencies I need to clean up
  1868.  
  1869. Tue Dec  7 23:52:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1870.  
  1871.     * cc-mode.el (c-set-style): added functionality
  1872.     
  1873.     (c-macro-expand): added autoload
  1874.     
  1875.     (documentation and docstrings): updated many places
  1876.     
  1877.     (c-set-offset): better interactive spec
  1878.     
  1879.     (c-fill-paragraph): stolen from c-mode, but not looked at yet
  1880.     
  1881.     (cc-mode.el): added fset compatibility with c-mode
  1882.     
  1883.     NOTE: THERE ARE STILL SOME FUNCTIONS I HAVEN'T MOVED HERE YET.
  1884.  
  1885. Mon Dec  6 15:46:30 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1886.  
  1887.     * cc-mode.el (c-guess-basic-semantics):
  1888.     CASE 5D is only a statement-cont if the
  1889.     beginning-of-statement is not bound by continued-sexp
  1890.  
  1891.     * cc-mode.el: fixed a coupble of cc-emacs-features to c-emacs-features
  1892.  
  1893. Fri Dec  3 23:05:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1894.  
  1895.     * cc-mode.el (cc-mode.el):
  1896.     changed all symbols from cc-<thing> to c-<thing>, except
  1897.     where both c-<thing> and c++-<thing> are needed:
  1898.     c++-mode-abbrev-table, c++-mode-map, c++-mode-syntax-table,
  1899.     
  1900.     (c-mode-common-hook): new common hook name
  1901.     
  1902.     (c-mode-map): don't add c-scope-operator.
  1903.  
  1904. Thu Dec  2 00:59:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1905.  
  1906.     * cc-mode.el (cc-guess-basic-semantics):
  1907.     CASE 7B, its possible that the line that
  1908.     placeholder points to does not contain the first streamop.  This can
  1909.     be the case if the streamop line follows an `if' clause.
  1910.  
  1911. Wed Dec  1 23:35:44 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1912.  
  1913.     * cc-mode.el (cc-macroize-region):
  1914.     simplified so begin/end semantics are identical
  1915.     to cc-comment-region.
  1916.     
  1917.     (cc-backslashify-current-line): do not (forward-char -1) if eol ==
  1918.     bol.  Also, must let-bind kill-lines-magic to nil so that blank line,
  1919.     with only a \ on it will not consume the newline character
  1920.  
  1921. Mon Nov 29 22:50:30 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1922.  
  1923.     * cc-mode.el (cc-indent-region):
  1924.     only generate an error on non-open paren/brace
  1925.     when shutup-p is nil
  1926.  
  1927.     * cc-mode.el:
  1928.     (cc-uncomment-region) (cc-comment-region): combined into 1 function,
  1929.     bound to C-c C-c and behavior analogous to cc-macroize-region.
  1930.     
  1931.     (cc-up-block) (cc-down-block): new commands, bound to C-c C-u and C-c
  1932.     C-d respectively.
  1933.  
  1934.     * cc-mode.el (cc-indent-exp):
  1935.     don't indent line with cc-indent-via-language-element
  1936.     if line is blank
  1937.  
  1938.     * cc-mode.el (cc-electric-brace):
  1939.     use (boundp 'blink-paren-function) as emacs
  1940.     version test, not cc-emacs-features.  The latter breaks on Emacs18's
  1941.     with the syntax patch
  1942.  
  1943.     * cc-mode.el (cc-guess-basic-semantics):
  1944.     fixed the comment-intro regexp to ignore
  1945.     newlines. (spaces and tabs only)
  1946.  
  1947. Fri Nov 26 19:01:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1948.  
  1949.     * cc-mode.el (cc-search-uplist-for-classkey):
  1950.     fixed two small bugs. first, the cdr
  1951.     of foundp should be cc-point boi to catch any template prefix on the
  1952.     class key (remember we're searching backwards now -- maybe we should
  1953.     search forward, eh?).  Also, we have to set donep to (not foundp) so
  1954.     that the search ends when we haven't found any classkey
  1955.  
  1956.     * cc-mode.el (cc-guess-basic-semantics):
  1957.     CASE 13.D make sure we're not looking at a
  1958.     globally scoped function call
  1959.  
  1960.     * cc-mode.el (cc-guess-basic-semantics):
  1961.     arglist-close should relpos boi of
  1962.     containing-sexp
  1963.     
  1964.     (cc-change-semantic-symbol-offset): fixed setqcdr typo
  1965.     
  1966.     (cc-offsets-alist): arglist-close default is now +
  1967.  
  1968.     * cc-mode.el (cc-beginning-of-statement):
  1969.     fix problem when crossing a paren level
  1970.     (i.e. the cc-safe forward-sexp call fails).  just move back a space
  1971.     and keep going.
  1972.     
  1973.     (cc-guess-basic-semantics): expand CASE 5C test and CASE 5E relpos
  1974.     calculation
  1975.  
  1976. Wed Nov 24 22:54:31 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  1977.  
  1978.     * cc-mode.el (cc-safe):
  1979.     added this macro back in -- it seems to be useful
  1980.     
  1981.     (cc-beginning-of-statement): really improved this a lot. we only go
  1982.     back a sexp if we aren't already at the beginning of indentation.
  1983.     This is now a more generally useful function since it seems to do the
  1984.     right thing under all circumstances.
  1985.     
  1986.     (cc-guess-basic-semantics): lots of changes to use the new cc-b-o-s
  1987.     function.  All known indentations after hanging braces are now fixed.
  1988.     This includes case 4D.5, CASE 7, CASE 12, and CASE 13.F.  Are there
  1989.     others?
  1990.  
  1991.     * cc-mode.el (cc-offsets-alist): added knr-argdecl offset
  1992.     
  1993.     (cc-change-semantic-symbol-offset): allow addition of new langelem
  1994.     symbols with universal arg
  1995.     
  1996.     (cc-guess-basic-semantics): added recognition of subsequent
  1997.     knr-argdecl langelems in cc-c-mode only
  1998.  
  1999.     * cc-mode.el (cc-electric-brace):
  2000.     in brace-else-brace cleanup, I forgot to insert
  2001.     the new "} else {" string after deleting the old string!
  2002.  
  2003.     * cc-mode.el:
  2004.     (cc-back-block) (cc-safe-uplist) (cc-safe-downlist): obsolete
  2005.     
  2006.     (cc-search-uplist-for-classkey): completely rewritten for speed. it
  2007.     now uses re-search-backwards limited to two bod's back.  Orders of
  2008.     magnitude faster when operating towards the end of a large file.  In
  2009.     fact exec time is not buffer size dependent anymore (but like
  2010.     everything else, it is bod dependent of course).
  2011.     
  2012.     (cc-guess-basic-semantics): fixed cases 4, 7, and 12 to work with the
  2013.     new cc-search-uplist-for-classkey
  2014.  
  2015. Tue Nov 23 22:41:41 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2016.  
  2017.     * cc-mode.el (cc-guess-basic-semantics):
  2018.     fixed case 4F. if a class-close is found,
  2019.     it should indent relative to the class declaration, not the opening
  2020.     brace (i.e. the cdr of inclass-p, not the car)
  2021.  
  2022.     * cc-mode.el (cc-guess-basic-semantics):
  2023.     fix CASE 12's determination of the type of
  2024.     langelem that a brace closes.
  2025.  
  2026.     * cc-mode.el (cc-c++-mode-syntax-table):
  2027.     switched A/B comment styles as per Paul
  2028.     Smith's FSFmacs patch
  2029.     
  2030.     (cc-1bit-il): switched A/B comment styles as per Paul Smith's FSFmacs
  2031.     patch
  2032.  
  2033.     * cc-mode.el (cc-search-uplist-for-classkey):
  2034.     only search when in a C++ buffer.  C
  2035.     buffers have no enclosing class!
  2036.  
  2037.     * cc-mode.el (cc-electric-pound):
  2038.     oops, forgot to prefix-numeric-value arg on the
  2039.     self-insert-command
  2040.  
  2041.     * cc-mode.el (cc-mark-function):
  2042.     must funcall the second call to push-mark since
  2043.     v18 only accepts 2 arguments, not the 3 of v19.
  2044.     
  2045.     (cc-electric-brace): fix the blink-paren-function/-hook mismatch for
  2046.     v18 vs. v19.
  2047.     
  2048.     (cc-point): added the (,@ nil) form as a workaround for v18's
  2049.     backquote bug.  Doesn't seem to hurt us for v19 so I left it in for
  2050.     everyone.
  2051.  
  2052. Mon Nov 22 23:29:19 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2053.  
  2054.     * cc-mode.el (cc-guess-basic-semantics):
  2055.     CASE 12, always return boi of the line
  2056.     that containing-sexp is on, not just for block-close langelem
  2057.  
  2058.     * cc-mode.el (cc-search-uplist-for-classkey):
  2059.     make backward searching slightly more
  2060.     efficient by stopping when char under search-start is a close brace
  2061.  
  2062.     * cc-mode.el (cc-label-key):
  2063.     new constant, change all concat'd label regexps to use
  2064.     this new constant
  2065.     
  2066.     (cc-guess-basic-semantics): fix case 13.D to not accidentally code a
  2067.     statement that follows a label as a ?: construct
  2068.  
  2069.     * cc-mode.el (cc-indent-command):
  2070.     fixed behavior when cc-tab-always-indent was nil.
  2071.     should now be like old behavior (CASE 1)
  2072.  
  2073.     * cc-mode.el (cc-emacs-features): improve documentation
  2074.  
  2075.     * cc-mode.el (cc-point):
  2076.     retain quoted symbol semantics on argument but don't use
  2077.     dangerous `eval' to get an eq ready symbol
  2078.  
  2079.     * cc-mode.el (cc-indent-exp):
  2080.     better error messages so people don't get as confused
  2081.  
  2082.     * cc-mode.el (cc-beginning-of-statement):
  2083.     much more robust movement across balanced
  2084.     expressions now correctly finds the beginning of statements for very
  2085.     complex forloops and more.  We now no longer assume that expressions
  2086.     begin and end on a single line.
  2087.     
  2088.     (cc-guess-basic-semantics): CASE 5C is expanded to correctly locate
  2089.     multi-line mathematical paren groupings.  Also, CASE 5E now returns
  2090.     boi at the beginning-of-statement for any arglist-cont.
  2091.  
  2092.     * cc-mode.el:
  2093.     (cc-electric-brace) (cc-electric-slash) (cc-electric-star)
  2094.     (cc-electric-semi&comma) (cc-electric-colon)
  2095.     (cc-change-semantic-symbol-offset): changed docstrings to more
  2096.     accurately describe defuns' behavior
  2097.  
  2098.     * cc-mode.el (cc-indent-exp):
  2099.     calculate bod before doing the forward-sexp since
  2100.     unindented open parens in col0 lower down will mess this calculation
  2101.     up.
  2102.  
  2103. Sat Nov 20 21:53:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2104.  
  2105.     * cc-mode.el (cc-submit-bug-report): typo on cc-hanging-colons-alist
  2106.  
  2107.     * cc-mode.el:
  2108.     (cc-keep-region-active) (cc-make-region-active): split this into a
  2109.     macro (the former) and a defun (the latter).  This way we can check
  2110.     for interactivity as expected, but still cut down on the number of bc
  2111.     warnings.
  2112.  
  2113.     * cc-mode.el:
  2114.     (cc-setup-comment-indent-variable) (cc-keep-region-active): make these
  2115.     defuns so that the .elc file won't be editor version specific. The
  2116.     trade off is that the byte compiler will complain
  2117.  
  2118.     * cc-mode.el (cc-lineup-C-comments):
  2119.     limit re-search-forward to eol, not eol-1...
  2120.     why did we do this?
  2121.  
  2122.     * cc-mode.el:
  2123.     (cc-electric-brace) (cc-electric-semi&comma) (cc-electric-colon):
  2124.     re-indent the line even if cc-auto-newline is nil, just don't add any
  2125.     newlines
  2126.  
  2127.     * cc-mode.el (cc-offsets-alist):
  2128.     multi-line strings should be shoved against the
  2129.     left side margin
  2130.  
  2131.     * cc-mode.el (cc-setup-comment-indent-variable):
  2132.     new macro to cut down on byte
  2133.     compiler warnings
  2134.  
  2135.     * cc-mode.el (cc-case-statement-key):
  2136.     should now recognize character constants as
  2137.     arguments to case statement
  2138.  
  2139.     * cc-mode.el (cc-keep-region-active):
  2140.     support for FSFmacs and don't lay down calls
  2141.     to variables that don't exist
  2142.     
  2143.     (cc-submit-bug-report): variable typos
  2144.  
  2145.     * cc-mode.el:
  2146.     fixed order of macro expansions.  defmacro's must appear before their
  2147.     first use -- this is probably why cc-point was busted in compiled code
  2148.  
  2149. Fri Nov 19 18:44:54 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2150.  
  2151.     * cc-mode.el (cc-guess-basic-semantics):
  2152.     added some minimal recognition of template
  2153.     continuation lines.  Probably not so great.
  2154.     
  2155.     (cc-guess-basic-semantics): fixed top-level decl continutation lines
  2156.     
  2157.     (cc-guess-basic-semantics): fixed ?: constructs
  2158.  
  2159.     * cc-mode.el:
  2160.     (cc-c++-mode) (cc-c-mode): setq'ing of comment-start/-end must happen
  2161.     *after* cc-common-init for those values to retain their proper settings
  2162.     
  2163.     (cc-indent-exp): add optional SHUTUP-P argument to suppress
  2164.     operational messages.
  2165.     
  2166.     (c++-indent-exp): removed this commented out function. I think the
  2167.     byte-compiled, simplified cc-indent-exp is fast enough!
  2168.     
  2169.     (cc-indent-region): stolen from c-mode and fixed.
  2170.     
  2171.     (cc-beginning-of-inheritance): backscanning must stop when we're
  2172.     looking at a cc-class-key
  2173.     
  2174.     (cc-guess-basic-semantics): inher-intro and inher-cont should not have
  2175.     inclass langelem added since their relpos offsets already contain any
  2176.     inclass offset
  2177.  
  2178. Thu Nov 18 23:06:37 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2179.  
  2180.     * cc-mode.el (cc-change-semantic-symbol-offset): new command
  2181.  
  2182.     * cc-mode.el (cc-guess-basic-semantics):
  2183.     added recognition of 'block-open braces
  2184.     following a full statement (yup they are legal)
  2185.  
  2186.     * cc-mode.el (cc-lineup-C-comments): added to support old
  2187.     cc-C-block-comments-indent-p behavior
  2188.  
  2189.     * cc-mode.el:
  2190.     removed the multi-line preprocessor stuff.  its just too much of a
  2191.     hack right now
  2192.  
  2193.     * cc-mode.el: some limited support for multi-line macros and such
  2194.  
  2195. Wed Nov 17 23:29:41 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2196.  
  2197.     * cc-mode.el:
  2198.     fixed all byte-compiler warnings. did a pass through the comments and
  2199.     docstrings. macro-ized a few more defuns
  2200.  
  2201.     * cc-mode.el (cc-indent-exp):
  2202.     a slow, but moderately useful interrim solution.
  2203.  
  2204.     * cc-mode.el (cc-point):
  2205.     another small fix to the macro to get byte compilation to work
  2206.  
  2207.     * cc-mode.el (cc-point):
  2208.     small fix to macro expansion. must eval position so that
  2209.     'sym idiom still works
  2210.  
  2211.     * cc-mode.el:
  2212.     added cc-keep-region-active to all appropriate interactive defuns
  2213.  
  2214.     * cc-mode.el (cc-point):
  2215.     made this a macro so things should be much quicker when
  2216.     byte compiled
  2217.  
  2218.     * cc-mode.el (cc-electric-brace):
  2219.     insert any after-brace newlines after all
  2220.     cleanups have taken place
  2221.  
  2222.     * cc-mode.el (cc-electric-colon):
  2223.     semantic information can only be accurately
  2224.     retrieved on the line with colon for label, case-label, and
  2225.     access-key.  member-init-intro and inher-intro must be gathered from
  2226.     the following line.
  2227.  
  2228.     * cc-mode.el: (cc-electric-start) (cc-electric-slash): use
  2229.     cc-indent-via-language-element instead of cc-indent-line
  2230.  
  2231. Tue Nov 16 23:04:59 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2232.  
  2233.     * cc-mode.el (c++-electric-colon): deleted
  2234.  
  2235.     * cc-mode.el (cc-electric-brace):
  2236.     inhibit blinking any close paren until we've done
  2237.     all our magic, then just call blink-paren-function manually
  2238.  
  2239.     * cc-mode.el (cc-guess-basic-semantics): CASE 4 was missing a call to
  2240.     cc-backward-syntactic-ws which broke arglist indentations
  2241.  
  2242.     * cc-mode.el (cc-beginning-of-statement):
  2243.     catch multi-line function calls by going
  2244.     backward over balanced () sexps
  2245.  
  2246.     * cc-mode.el: had to add all the lineup functions from c++-syntax.el
  2247.  
  2248.     * cc-mode.el: continued if/while/do/else/for statements now work again
  2249.  
  2250.     * cc-mode.el: 1. a good shot at cc-electric-colon
  2251.     2. added cc-scope-operator bound onto C-c C-;
  2252.  
  2253.     * cc-mode.el:
  2254.     everything is rewritten and tested except c++-electric-colon and
  2255.     c++-indent-exp
  2256.  
  2257. Thu Nov 11 21:24:06 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2258.  
  2259.     * cc-mode.el: got rid of glaring byte-compiler reported problems.
  2260.  
  2261.     * cc-mode.el:
  2262.     The bulk of the rename work has been done.  The entire mode has been
  2263.     renamed CC-Mode.  The file has been renamed cc-mode.el, and all
  2264.     symbols have changed from c++-<thing> to cc-<thing>.  In addition, all
  2265.     known remaining c-mode dependencies have been eliminated.
  2266.     
  2267.     There is still much work to be done.
  2268.  
  2269. Tue Nov  9 22:26:06 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2270.  
  2271.     * cc-mode.el: rough attempt at syntactic analysis. more to come
  2272.  
  2273. Mon Nov  1 03:25:12 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2274.  
  2275.     * cc-mode.el (c++-search-uplist-for-classkey):
  2276.     restore point if no enclosing class
  2277.     is found
  2278.  
  2279. Sun Oct 31 19:14:59 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2280.  
  2281.     * cc-mode.el:
  2282.     (c++-narrow-out-enclosing-class) (c++-search-uplist-for-classkey): new
  2283.     defuns
  2284.     
  2285.     (c++-point): added 'boe and 'eoe positions
  2286.  
  2287. Fri Oct 29 22:42:35 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2288.  
  2289.     * cc-mode.el:
  2290.     totally screwed up indentation.  we're going to have to back out the
  2291.     last few mods.  URG!
  2292.  
  2293.     * cc-mode.el (c++-indent-exp):
  2294.     special case of looking at ?{, should not add
  2295.     c-indent-level since this is only for C statements wrt containing
  2296.     block and not block opening paren
  2297.  
  2298.     * cc-mode.el (c++-calculate-indent):
  2299.     undid split from previous revision. now case
  2300.     3A always returns 0.  Any additional top-level brace offset gets
  2301.     applied in c++-indent-line and c++-indent-exp (although the later does
  2302.     not yet work).
  2303.  
  2304.     * cc-mode.el (c++-calculate-indent):
  2305.     needed to split case 3A into 2 parts since
  2306.     bobp does not get the same indent as a top-level opening paren
  2307.  
  2308. Wed Oct 27 14:28:16 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2309.  
  2310.     * cc-mode.el (c++-common-init):
  2311.     don't set the auto-hungry state here since the
  2312.     mode hook has not been run yet.
  2313.     
  2314.     (c++-mode) (c++-c-mode): set the auto-hungry state for the buffer
  2315.     after the mode hook has been run
  2316.  
  2317. Wed Oct 20 18:46:53 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2318.  
  2319.     * cc-mode.el (c++-mode-map):
  2320.     do NOT define C-m and C-j, so as to retain the
  2321.     standard default settings for these keybindings
  2322.  
  2323. Mon Oct 11 16:32:02 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2324.  
  2325.     * cc-mode.el (c++-calculate-indent):
  2326.     in CASE 3C, when checking for hanging member
  2327.     init colon, but not scope operator, we didin't check for double colons
  2328.     when looking at the preceding-char.  Now look at char before point and
  2329.     char 2 before point.  If both are colons, we're looking at a scope
  2330.     operator.
  2331.  
  2332. Fri Oct  1 13:21:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2333.  
  2334.     * cc-mode.el (c++-common-init):
  2335.     changed the test for comment-indent-function to
  2336.     checking for boundp of the variable instead of c++-emacs-features
  2337.     since Emacs 18 with syntax patches is (8bit v19) but does not have the
  2338.     variable bound.
  2339.  
  2340. Wed Sep 29 21:08:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2341.  
  2342.     * cc-mode.el (c++-backward-to-start-of-if):
  2343.     better error message for else with no if
  2344.  
  2345.     * cc-mode.el (c++-calculate-indent):
  2346.     test case 3H, when taking the current-column,
  2347.     must subtract out the inclass-shift so it doesn't get added twice.
  2348.     inclass-shift is implicit in current-column.
  2349.  
  2350. Tue Sep 28 23:11:04 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2351.  
  2352.     * cc-mode.el (c++-mode-syntax-table): don't be as harsh on FSF
  2353.  
  2354.     * cc-mode.el: (c++-cleanup-list) (c++-hanging-member-init-colon)
  2355.     (c++-auto-hungry-initial-state) (c++-auto-hungry-toggle) (c++-mode):
  2356.     use the terminology "valid" instead of "legal" to define acceptable
  2357.     values as per RMS's conventions.
  2358.  
  2359.     * cc-mode.el (c++-c-mode): improve the docstring re: running the hook
  2360.  
  2361.     * cc-mode.el (c++-indent-exp):
  2362.     use c++-cont-indent to calculate continued statement
  2363.     indentation amount.  remove large part of hackery here so lets watch
  2364.     and see if anything got broken, but I think c++-c-i should do the
  2365.     trick for all constructs
  2366.  
  2367.     * cc-mode.el (c++-indent-defun):
  2368.     better, quicker implementation of this defun
  2369.  
  2370.     * cc-mode.el (c++-electric-pound):
  2371.     better implementation of previous patch
  2372.  
  2373.     * cc-mode.el (c++-electric-pound):
  2374.     only align pound to left column if there isn't
  2375.     one already there.  This lets people enter ## as cpp concat command
  2376.  
  2377.     * cc-mode.el (c++-electric-semi):
  2378.     renamed c++-electric-semi&comma to implement },
  2379.     and }; cleanups
  2380.     
  2381.     (c++-cleanup-list): added list-close-comma to allow cleanups of },
  2382.     constructs.
  2383.  
  2384.     * cc-mode.el: cleaned up some comments
  2385.  
  2386.     * cc-mode.el (c++-common-init):
  2387.     new function to provide one entry point for all
  2388.     common initializations of the mode.
  2389.     
  2390.     (c++-mode) (c++-c-mode): use c++-common-init to do the common stuff,
  2391.     then do mode specific stuff.
  2392.  
  2393.     * cc-mode.el (c++-calculate-indent):
  2394.     complete fix for proper indentation of base
  2395.     classes in a multiple inheritance declaration.
  2396.     
  2397.     (c++-baseclass-key): new constant defining regexp for base class defs
  2398.  
  2399.     * cc-mode.el: partial fix for multi-inher lines
  2400.  
  2401. Mon Sep 27 19:15:51 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2402.  
  2403.     * cc-mode.el (c++-backward-to-start-of-if):
  2404.     give a more informative message if an
  2405.     unbalanced if/else was found
  2406.  
  2407.     * cc-mode.el (c++-compound-offset):
  2408.     fixed a bug when looking at "typedef enum",
  2409.     this wasn't registering as an enum start.
  2410.     
  2411.     (c++-indent-exp): fixed indentation of comma separated compound
  2412.     statements by using the function c++-compound-offset to calculate
  2413.     offset instead of just using the variable c-continued-statement-offset
  2414.  
  2415.     * cc-mode.el (c++-mode):
  2416.     compatibility with old style comment-indent-hook and new
  2417.     style comment-indent-function
  2418.  
  2419.     * cc-mode.el:
  2420.     (c++-indent-line) (c++-calculate-indent): improved calculate in
  2421.     let-body for open-paren and top-open-paren values, using car-safe and
  2422.     cdr-safe
  2423.     
  2424.     (c++-indent-line): fix typo bug when looking at open brace.
  2425.     
  2426.     (c++-indent-line): apply TOPLEVEL c-brace-offset when brace is at top
  2427.     level wrt class, or real top level.
  2428.  
  2429.     * cc-mode.el (c-brace-offset): moved here from c-mode.el
  2430.     
  2431.     (c++-mode): for vars c-brace-offset and c++-block-close-brace-offset,
  2432.     both can now take list values.  describe these in the mode's
  2433.     docstring.
  2434.     
  2435.     (c++-indent-exp) (c++-indent-line) (c++-calculate-indent): when
  2436.     looking at an open brace, apply c-brace-offset depending on
  2437.     top-level-ness of the opening brace.
  2438.  
  2439. Fri Sep 24 22:05:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2440.  
  2441.     * cc-mode.el (c++-indent-exp):
  2442.     when inside a class definition, if we are looking at
  2443.     an open brace, we apply c-continued-brace-offset instead of just zero.
  2444.     this allows users to indent the opening brace of an inline function
  2445.     body.
  2446.  
  2447.     * cc-mode.el (c++-calculate-indent):
  2448.     when inside a class definition, if we are
  2449.     looking at an open brace, we apply c-continued-brace-offset instead of
  2450.     just zero.  this allows users to indent the opening brace of an inline
  2451.     function body.
  2452.  
  2453.     * cc-mode.el (c++-calculate-indent):
  2454.     removed the commented out text which used to
  2455.     test for null state.  we never hit null state from c++-parse-state
  2456.     anymore.
  2457.  
  2458.     * cc-mode.el (c++-emacs19-accurate-bsws):
  2459.     new function which skips syntactic
  2460.     whitespace w/o treating cpp macros as comments syntactically.
  2461.     
  2462.     (c++-emacs18-bsws): renamed from c++-backwards-syntactic-ws
  2463.     
  2464.     (c++-lemacs-pre19-8-bsws): renamed from c++-backwards-syntactic-ws-1
  2465.     
  2466.     (c++-emacs18-il): renamed from c++-in-literal
  2467.     
  2468.     (c++-8bit-il): renamed from c++-in-literal-8-bit
  2469.     
  2470.     (c++-1bit-il): renamed from c++-in-literal-1-bit
  2471.     
  2472.     Changed the way compatibility is fset into the function symbols
  2473.     c++-backward-syntactic-ws and c++-in-literal.
  2474.  
  2475. Tue Aug 10 16:44:26 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2476.  
  2477.     * cc-mode.el: minor cosmetic comment typo
  2478.  
  2479. Thu Jul 29 00:18:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2480.  
  2481.     * cc-mode.el: consensus was to nuke c++-insert-header
  2482.  
  2483. Mon Jul 12 20:37:27 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2484.  
  2485.     * cc-mode.el (c++-mode.el): updated the comments at the top of the file
  2486.  
  2487.     * cc-mode.el (c++-calculate-indent):
  2488.     removed test for null state during initial
  2489.     parse from beginning-of-defun to indent-point.  this is obsolete now.
  2490.  
  2491. Fri Jul  2 22:42:03 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2492.  
  2493.     * cc-mode.el (c++-mode-map): removed bindings to obsolete functions
  2494.     c++-beginning-of-defun and c++-end-of-defun.
  2495.     
  2496.     (c++-electric-terminator) (c++-in-literal) (c++-in-literal-8-bit)
  2497.     (c++-in-literal-1-bit) (c++-point) (c++-indent-defun): changed all
  2498.     references of obsolete functions c++-beginning-of-defun and
  2499.     c++-end-of-defun to beginning-of-defun and end-of-defun respectively.
  2500.  
  2501.     * cc-mode.el:
  2502.     (c++-match-header-strongly) (c++-defun-header-strong-struct-equivs)
  2503.     (c++-defun-header-strong) (c++-defun-header-weak)
  2504.     (c++-beginning-of-defun) (c++-end-of-defun): removed as obsolete.
  2505.     there are better and cheaper ways of accomplishing the same
  2506.     functionality.
  2507.  
  2508.     * cc-mode.el (c++-electric-brace):
  2509.     I missed a few calls to c++-indent-line.  Added
  2510.     bod argument to remaining few.
  2511.  
  2512.     * cc-mode.el (c++-calculate-indent):
  2513.     removed logic dealing with (null state) and
  2514.     placed an error call there in anticipation of removal of header strong
  2515.     matching stuff.  I want to be sure there's no way to get to this code
  2516.     
  2517.     (c++-electric-brace): added bod argument to calls to c++-indent-line
  2518.     so the correct bod is found, not the newly created one with the just
  2519.     inserted open brace.
  2520.  
  2521.     * cc-mode.el:
  2522.     (c++-indent-command) (c++-tab-always-indent) (c++-hanging-braces)
  2523.     (c++-mode): changed the not-nil-or-t language to read "other than nil
  2524.     or t"
  2525.  
  2526. Thu Jul  1 17:40:53 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2527.  
  2528.     * cc-mode.el (c++-backward-to-start-of-if):
  2529.     changed c++-backward-sexp call to
  2530.     backward-sexp now that parse-sexp-ignore-comments is handled correctly.
  2531.  
  2532. Wed Jun 30 17:03:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2533.  
  2534.     * cc-mode.el:
  2535.     (c++-forward-sexp) (c++-backward-sexp): removed because these are obsoleted by the correct implementation for setting parse-sexp-ignore-comments. (c++-mode): improved idiom for setting up local vars
  2536.  
  2537. Mon Jun 28 15:47:13 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2538.  
  2539.     * cc-mode.el:
  2540.     (c++-cleanup-list) (c++-mode) (c++-fast-backward-syntactic-ws-1)
  2541.     (c++-calculate-indent) (c++-in-literal) (c++-in-literal-8-bit)
  2542.     (c++-in-literal-1-bit) (c++-at-top-level-p)
  2543.     (c++-backward-to-start-of-do) (c++-backward-to-start-of-if)
  2544.     (c++-uncomment-region): install RMS's suggested doc string fixes based
  2545.     on last public release.
  2546.  
  2547. Wed Jun 23 13:58:52 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2548.  
  2549.     * cc-mode.el:
  2550.     hacking on syntax entry must be mode specific in -ws functions.  ie in
  2551.     c++-c-mode, hack c++-c-mode-syntax-table and for c++-mode hack only
  2552.     c++-mode-syntax-table.
  2553.  
  2554. Mon Jun 21 21:40:15 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2555.  
  2556.     * cc-mode.el:
  2557.     should not skip-chars-backward in ws-2, let forward-comment handle that
  2558.  
  2559. Fri Jun 18 21:31:24 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2560.  
  2561.     * cc-mode.el:
  2562.     another refinement to addition offset given to open brace lines in
  2563.     c++-indent-exp.  Check for not at top level wrt class before adding
  2564.     c-indent-level.
  2565.  
  2566.     * cc-mode.el: another fix to c++-indent-exp for member init lists
  2567.  
  2568.     * cc-mode.el:
  2569.     fixed c++-indent-exp when comments follow a continued statement
  2570.  
  2571.     * cc-mode.el: a fix to c++-indent-exp where c-brace-offset is < 0
  2572.  
  2573.     * cc-mode.el:
  2574.     fixed some comment spelling errors which were fixed (but *not*
  2575.     reported!) by FSF
  2576.  
  2577.     * cc-mode.el:
  2578.     fixed a problem where default_answer("boof: glorp"); was being
  2579.     incorrectly matched to a default: statement
  2580.  
  2581. Thu Jun 17 21:52:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2582.  
  2583.     * cc-mode.el:
  2584.     update language to accurately reflect state of Lemacsen and FSFmacsen
  2585.  
  2586. Wed Jun 16 22:27:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2587.  
  2588.     * cc-mode.el:
  2589.     fixed indentation when base class declaration is on a separate line
  2590.     then the derived class intro header.
  2591.  
  2592.     * cc-mode.el:
  2593.     1. cleaned up the way closing block braces are adjusted in
  2594.        c++-indent-line.
  2595.     
  2596.     2. also extended c++-block-close-brace-offset to allow list value so
  2597.        the following style can be easily supported:
  2598.     
  2599.     foo(a)
  2600.     {
  2601.         if(a)
  2602.             {
  2603.             asasdfsdf;
  2604.             }
  2605.     }
  2606.     
  2607.       Previously, there was no way to adjust the closing brace into column
  2608.       zero.
  2609.  
  2610. Tue Jun 15 22:04:43 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2611.  
  2612.     * cc-mode.el:
  2613.     use c-continued-statement-offset instead of c-indent-level to indent
  2614.     comma separated arg decl lists
  2615.  
  2616.     * cc-mode.el: bind C-m to newline-and-indent
  2617.  
  2618.     * cc-mode.el:
  2619.     much simplification on c++-fast-backward-syntactic-ws-2 to work with
  2620.     new forward-comment semantics
  2621.  
  2622.     * cc-mode.el:
  2623.     don't skip up past compound statement if we're in a member init list
  2624.  
  2625.     * cc-mode.el: fixed a bug in the translation of CASE 3 to cond stmt
  2626.  
  2627.     * cc-mode.el:
  2628.     1. cleaned up the spaghetti if's in CASE3 of c++-calculate-indent, by
  2629.        converting all if's to a single cond statement -- I *hope* I got it
  2630.        right!
  2631.     
  2632.     2. Added indentation, via c-indent-level of multi-line,
  2633.        comma-separated, compound statements/declarations, with correction
  2634.        for enum and static array inits.
  2635.     y
  2636.  
  2637. Mon Jun 14 21:54:38 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2638.  
  2639.     * cc-mode.el:
  2640.     merged in submitted patch to fix a possible bug which rears its ugly
  2641.     head in FSFmacs19.  I haven't verified it so the fix only happens in FSFmacs
  2642.  
  2643. Thu Jun  3 22:42:44 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2644.  
  2645.     * cc-mode.el: try to conform to GNU cosmetic style
  2646.  
  2647. Tue Jun  1 14:58:00 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2648.  
  2649.     * cc-mode.el:
  2650.     better to make a copy of the syntax table so we don't screw up text
  2651.     mode's syntax table!
  2652.  
  2653. Fri May 28 22:20:57 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2654.  
  2655.     * cc-mode.el:
  2656.     fixed the bug in c++-electric-brace where entering an open brace while
  2657.     point is at bol and c++-auto-newline is nil did not indent the brace.
  2658.  
  2659. Tue May 25 18:37:21 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2660.  
  2661.     * cc-mode.el: some cosmetic differences to c++-emacs-features
  2662.  
  2663. Mon May 24 23:23:05 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2664.  
  2665.     * cc-mode.el: take out bogus defun c++-emacs-features
  2666.  
  2667.     * cc-mode.el:
  2668.     be really really smart about figuring out c++-emacs-features
  2669.  
  2670.     * cc-mode.el:
  2671.     we must use a different c++-in-literal for GNU19's 1-bit solution
  2672.  
  2673. Wed May 19 14:19:20 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2674.  
  2675.     * cc-mode.el: better c++-emacs-features deciphering
  2676.  
  2677. Tue May 18 15:13:39 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2678.  
  2679.     * cc-mode.el: no c++-mode-maintainer
  2680.  
  2681. Fri May 14 22:05:02 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2682.  
  2683.     * cc-mode.el:
  2684.     can't yet make c++-indent-exp work in weird situation (see bug reports)
  2685.  
  2686.     * cc-mode.el:
  2687.     make sure we check for default: in the same place we check for case:
  2688.     labels in CASE 4 of c++-calculate-indent
  2689.  
  2690. Tue May 11 21:41:13 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2691.  
  2692.     * cc-mode.el: a little better documentation
  2693.  
  2694.     * cc-mode.el:
  2695.     fixed the compat cond when setting c++-backward-syntactic-ws
  2696.  
  2697.     * cc-mode.el: fixed the string-match call in c++-emacs-features
  2698.  
  2699. Mon May 10 18:20:42 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2700.  
  2701.     * cc-mode.el: check for forward-comment first
  2702.  
  2703.     * cc-mode.el: fixed syntax errors in previous mod
  2704.  
  2705.     * cc-mode.el: attempt to port between all known flavors of emacsen
  2706.  
  2707. Thu Apr 22 21:16:15 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2708.  
  2709.     * cc-mode.el:
  2710.     ask user if they want to submit a bug report before actually doing it
  2711.  
  2712.     * cc-mode.el:
  2713.     quick fix for when the ? part of a ?: construct is a negative number
  2714.  
  2715. Wed Apr 21 19:53:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2716.  
  2717.     * cc-mode.el: use new interface to reporter.el
  2718.  
  2719. Mon Apr 19 20:41:48 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2720.  
  2721.     * cc-mode.el: uuencode when sending to ftpmail
  2722.  
  2723.     * cc-mode.el: c++-mailer is obsolete now
  2724.  
  2725.     * cc-mode.el:
  2726.     modify c++-submit-bug-report to use reporter package, and require it.
  2727.  
  2728.     * cc-mode.el: updated some documentation about getting c++-mode
  2729.  
  2730. Fri Apr 16 15:36:39 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2731.  
  2732.     * cc-mode.el:
  2733.     in c++-indent-exp, during the logic which evaluates special
  2734.     adjustments in the line's indentation, the sequential ifs should be a
  2735.     cond statement since the conditions should be mutually exclusive
  2736.  
  2737.     * cc-mode.el: updated mail-server (getting the mode) comments
  2738.  
  2739. Fri Apr  2 15:35:10 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2740.  
  2741.     * cc-mode.el:
  2742.     c++-backward-to-start-of-if wasn't taking into account "if" clauses in
  2743.     intervening comments.  Needed to add a c++-backward-syntactic-ws
  2744.  
  2745. Thu Apr  1 23:08:37 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2746.  
  2747.     * cc-mode.el:
  2748.     cleaned up (I hope) all docstrings related to auto-hungry features
  2749.  
  2750.     * cc-mode.el:
  2751.     modified c++-class-key to recognize typedef in addition to extern
  2752.  
  2753.     * cc-mode.el:
  2754.     fixed c++-electric-star handling of stars inside C block comments but
  2755.     not part of comment line head (i.e. stars embedded inside C block
  2756.     comment lines not at 'boi, don't re-indent line)
  2757.  
  2758. Thu Mar 18 18:49:42 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2759.  
  2760.     * cc-mode.el:
  2761.     fix infinite loop in c++-fast... in the following situation
  2762.     \n
  2763.     #define x \
  2764.     -----------^
  2765.     hit return here
  2766.  
  2767.     * cc-mode.el:
  2768.     wrap temporary binding of # to comment syntax in c++-fast-... in an
  2769.     unwind-protect to ensure that it gets reset on any exit
  2770.  
  2771. Thu Mar 11 15:36:26 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2772.  
  2773.     * cc-mode.el:
  2774.     fixed indentation of block comments after first /* line in c++-indent-exp
  2775.  
  2776. Wed Mar 10 18:50:29 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2777.  
  2778.     * cc-mode.el: c++-in-literal-quick wasn't checking for inside a string
  2779.  
  2780. Fri Mar  5 20:00:17 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2781.  
  2782.     * cc-mode.el: fixed regexps for case labels... I hope
  2783.  
  2784. Thu Mar  4 23:00:30 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2785.  
  2786.     * cc-mode.el: updated copyright date
  2787.  
  2788.     * cc-mode.el: c++-c-mode uses c-mode-abbrev-table
  2789.  
  2790.     * cc-mode.el:
  2791.     in c++-fast-backward-syntactic-ws, check for lim<point *after* lim has
  2792.     be let bound
  2793.  
  2794. Wed Mar  3 20:25:17 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2795.  
  2796.     * cc-mode.el: forgot to add basic inclass-shift
  2797.  
  2798. Tue Mar  2 20:11:48 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2799.  
  2800.     * cc-mode.el: handle underscores in c++-inher-key
  2801.  
  2802.     * cc-mode.el:
  2803.     inclass-shift is now calculated by multiplying inclass-depth with the
  2804.     sum of c-indent-level and c-brace-imaginary-offset.  Usually at least
  2805.     one of these c vars is zero.  Also, precompute inclass-unshift
  2806.  
  2807.     * cc-mode.el: 1. fixed bogus end-of-buffer error when lim>=(point)
  2808.     2. extended c++-class-key to include optional "extern" keyword
  2809.  
  2810.     * cc-mode.el: 1. extended c++-class-key to handle template definitions
  2811.     2. made MI-regexp in c++-calculate-indent into the global constant
  2812.        c++-inher-key so it doesn't need to be concat'd every entry into
  2813.        the loop.
  2814.  
  2815.     * cc-mode.el: fixed small infinite loop introduced in previous patch
  2816.  
  2817.     * cc-mode.el:
  2818.     fixed c++-indent-exp when a multi-line C block comment caused
  2819.     calculation of state to be wrong.  Now, when calculating line-end, we
  2820.     first check to see of eol is in a C comment, and if so, we scan
  2821.     forward until we find the end of the block comment.
  2822.     
  2823.     this algorithm might break if there is code on the same line, but
  2824.     after the closing */ of a comment. this is to bizarre to support
  2825.  
  2826.     * cc-mode.el:
  2827.     no longer rely on # being of syntax class comment for really patched
  2828.     emacses, except for convenience when in
  2829.     c++-fast-backward-syntactic-ws.  Also, in this method, go into a loop
  2830.     checking for cpp directives since its possible that a directive has a
  2831.     comment on the end of the line:
  2832.     
  2833.     #include <foo.h>      /* opening a block comment here
  2834.                            * which isn't closed until here
  2835.                            */
  2836.     
  2837.     Finally, fix c++-in-literal-quick to handle new syntax class of #
  2838.  
  2839. Mon Mar  1 23:32:40 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2840.  
  2841.     * cc-mode.el:
  2842.     no longer rely on # being of syntax class for really patched emacses
  2843.  
  2844.     * cc-mode.el:
  2845.     c++-macroize-region will now take any prefix arg instead of just a
  2846.     negative arg.
  2847.  
  2848. Tue Feb 16 20:30:37 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2849.  
  2850.     * cc-mode.el: don't use _ as word constituent, instead fix regexps
  2851.  
  2852.     * cc-mode.el:
  2853.     give _ word constituent syntax class so indentation of case_ and like
  2854.     symbols will work properly.  forward-word will gobble underscores in
  2855.     symbols so that's the trade off for taking the easy way out.
  2856.  
  2857. Fri Feb 12 16:40:35 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2858.  
  2859.     * cc-mode.el:
  2860.     c++-backward-to-start-of-if was necessitated because backward-sexp
  2861.     call was bombing out in new syntax, on single quote in preceding C++
  2862.     comment line.  use c++-backward-sexp to properly handle this and
  2863.     change all references of c-backward... to c++-backward.
  2864.  
  2865. Thu Feb 11 18:33:50 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2866.  
  2867.     * cc-mode.el:
  2868.     should only bind parse-sexp-ignore-comments to t if c++-is-really-fixed-p
  2869.  
  2870. Sat Feb  6 00:04:45 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2871.  
  2872.     * cc-mode.el:
  2873.     in c++-comment-indent, if previous line contains a comment only line
  2874.     that is to the left of comment-column, indent the line to
  2875.     comment-column
  2876.  
  2877. Fri Feb  5 23:41:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2878.  
  2879.     * cc-mode.el: fixed K&R C arg decl with keyword struct in line
  2880.  
  2881.     * cc-mode.el:
  2882.     fixed c++-indent-command to follow documentation. previous the
  2883.     following situation was broken: c++-tab-always-indent == nil and:
  2884.     
  2885.     ...
  2886.     {
  2887.     foo;
  2888.     ^------- point was here
  2889.  
  2890.     * cc-mode.el:
  2891.     use Ken Laprade's patch for format vs symbol-name print of
  2892.     c++-special-indent-hook
  2893.  
  2894.     * cc-mode.el:
  2895.     check for (not (c++-in-parens-p)) when deciding whether we're looking
  2896.     at a continuation line or not to avoid bad indentation of continued
  2897.     lines such as:
  2898.     
  2899.         if( !tnode->expanded_p() &&
  2900.             docobj->hasChild_p() &&
  2901.             docobj->tocLevel() < xmaxTocDepth )
  2902.  
  2903.     * cc-mode.el: fixed anchor of comment only lines in c++-indent-exp
  2904.  
  2905.     * cc-mode.el:
  2906.     anchor comment only lines to (current-column) if the comment is at, or
  2907.     to the right of, comment-column.
  2908.  
  2909.     * cc-mode.el:
  2910.     c++-continued-member-init-offset works for line with just single colon
  2911.     line, where member inits follow on subsequent lines:
  2912.     
  2913.     ff::ff ()
  2914.        :
  2915.        xxx (0),
  2916.        yyy (0)
  2917.     {
  2918.  
  2919.     * cc-mode.el:
  2920.     don't add c-continued-statement-offset if looking at a class's opening
  2921.     brace
  2922.  
  2923.     * cc-mode.el: fixed c++-indent-exp wrt stream ops
  2924.  
  2925.     * cc-mode.el: fixed another small problem with nested class indentation
  2926.  
  2927.     * cc-mode.el:
  2928.     another fix for nested class indentation when looking at the line
  2929.     after an access specifier.  we needed to substract one level of
  2930.     indentation
  2931.  
  2932. Tue Feb  2 21:27:52 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2933.  
  2934.     * cc-mode.el: modifications to better indent nested classes
  2935.  
  2936. Fri Jan 29 22:31:07 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2937.  
  2938.     * cc-mode.el:
  2939.     in c++-forward/backward-sexp, only let bind parse-sexp-ignore-comments
  2940.     to t if emacs is fixed (not really fixed)
  2941.  
  2942. Wed Jan 27 22:48:56 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2943.  
  2944.     * cc-mode.el:
  2945.     some previous fix (don't know when) broke MI continuation line
  2946.     indentation.  This fixes that problem by making sure we're not looking
  2947.     at MI-regexp
  2948.  
  2949.     * cc-mode.el: commented out bogus part
  2950.  
  2951.     * cc-mode.el: commented out bogus top level continuation indentations
  2952.  
  2953. Mon Jan 25 23:34:52 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2954.  
  2955.     * cc-mode.el:
  2956.     fixed minor bug with c++-submit-bug-report which manifests
  2957.     only on unpatched emacses
  2958.  
  2959.     * cc-mode.el: fixed small bug in c++-submit-bug-report manifesting
  2960.     in unpatched emacses
  2961.  
  2962. Thu Jan 21 23:38:34 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2963.  
  2964.     * cc-mode.el:
  2965.     c++-indent-exp must let-bind parse-sexp-ignore-comments to t for the
  2966.     whole duration
  2967.  
  2968.     * cc-mode.el:
  2969.     hack for c++-indent-sexp continued statement offsets... are there
  2970.     repercussions???
  2971.  
  2972.     * cc-mode.el: fixed c++-cont-indent free variable
  2973.  
  2974.     * cc-mode.el: partial fix of continuation lines at top level
  2975.  
  2976. Wed Jan 20 23:39:40 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2977.  
  2978.     * cc-mode.el: 1. remove infinite loop from c++-in-literal
  2979.     2. get rid of messages
  2980.     
  2981.     note that c++-in-literal-quick is broken wrt to old emacs patches
  2982.  
  2983. Wed Jan 13 22:57:51 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  2984.  
  2985.     * cc-mode.el:
  2986.     c++-end-of-defun needed to let-bind parse-sexp-ignore-comments to t
  2987.  
  2988.     * cc-mode.el: better c++-in-literal-quick
  2989.  
  2990.     * cc-mode.el: 1. cosmetic cleanups of code
  2991.     2. a pass through c++-mode docstring and all variables
  2992.  
  2993.     * cc-mode.el: another hack on the comments at the top of the file
  2994.  
  2995.     * cc-mode.el: a documentation pass
  2996.  
  2997.     * cc-mode.el: changed name of c++-backward-over-syntactic-ws to just
  2998.     c++-backward-syntactic-ws to more closely resemble new lemacs builtin
  2999.     function name.
  3000.  
  3001.     * cc-mode.el: fixed c++-syntax-mode-table to work with patched lemacs
  3002.  
  3003. Sat Jan  9 05:08:25 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  3004.  
  3005.     * cc-mode.el: put # back as a comment-style
  3006.  
  3007.     * cc-mode.el: comment about new bc and backward-syntactic-ws
  3008.  
  3009.     * cc-mode.el: better syntax specifications for new patched lemacs
  3010.  
  3011. Thu Jan  7 22:22:53 1993  Barry A. Warsaw, ITB  (warsaw@anthem)
  3012.  
  3013.     * cc-mode.el:
  3014.     added c++-backward-sexp and c++-forward-sexp which are bound to M-C-f
  3015.     and M-C-b and work better than their non-c++-mode counterparts since
  3016.     they let-bind parse-sexp-ignore-comments to t.
  3017.  
  3018. Thu Dec 31 22:17:36 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3019.  
  3020.     * cc-mode.el:
  3021.     use the really, really, up-to-date syntax patch for Lemacs 19
  3022.  
  3023. Tue Dec 29 01:22:19 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3024.  
  3025.     * cc-mode.el: removed extraneous commented out code
  3026.  
  3027.     * cc-mode.el: need to ensure that c-mode is loaded in
  3028.  
  3029.     * cc-mode.el:
  3030.     fixed a problem inside member init lists, where the first member (on
  3031.     the colon line) has its args continued
  3032.  
  3033.     * cc-mode.el:
  3034.     fix bug when indenting a line at level zero which begins at the
  3035.     beginning of buffer
  3036.  
  3037. Wed Dec 23 23:20:05 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3038.  
  3039.     * cc-mode.el:
  3040.     fix for c++-indent-exp so that it properly indents c block comments
  3041.  
  3042. Fri Dec 18 16:15:12 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3043.  
  3044.     * cc-mode.el: greater improvements on c++-b-o-w-s performance
  3045.  
  3046. Thu Dec 17 23:29:18 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3047.  
  3048.     * cc-mode.el:
  3049.     another run at optimizing c++-backward-over-syntactic-ws based on
  3050.     information gleaned from calc.el experience
  3051.  
  3052.     * cc-mode.el:
  3053.     c++-backward-over-syntactic uses beginning-of-defun instead of
  3054.     point-min as minimum distance to scan back
  3055.  
  3056. Wed Dec 16 21:52:41 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3057.  
  3058.     * cc-mode.el:
  3059.     check for brace insertion at not-quite-end-of-line (ie eol, ignoring
  3060.     any trailing ws)
  3061.  
  3062.     * cc-mode.el: allow c++-backscan-limit to be nil
  3063.  
  3064. Fri Dec 11 16:26:05 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3065.  
  3066.     * cc-mode.el:
  3067.     in electric terminator, don't just check for eolp to determine if
  3068.     terminator should electrify. also look for hanging whitespace which
  3069.     may look like eolp, even though it isn't:
  3070.     
  3071.             fooo();......\n
  3072.                   ^------^
  3073.     undiscovered ws---|
  3074.  
  3075. Thu Dec 10 22:59:25 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3076.  
  3077.     * cc-mode.el:
  3078.     simple fix in calculate indent so forward-char 1 at end of buffer
  3079.     won't throw an error
  3080.  
  3081. Wed Dec  9 17:55:17 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3082.  
  3083.     * cc-mode.el:
  3084.     error in default value for c++-untame-characters. needed to negate the
  3085.     check for c++-emacs-is-fixed-p
  3086.  
  3087.     * cc-mode.el:
  3088.     fixed problems in electric-(star|slash) when inserting as first
  3089.     character in a buffer.
  3090.  
  3091.     * cc-mode.el:
  3092.     don't treat double-colon as member init when member defun is split
  3093.     across two lines at the scope operator. eg:
  3094.     
  3095.     HereIsAReallyLongClassName
  3096.     ::HereIsAReallyLongClassName( const WithALongConstructorArgument& )
  3097.         : andItsFirstMemberInit( 7 )
  3098.     {}
  3099.  
  3100.     * cc-mode.el: added some thanks to the documentation
  3101.  
  3102. Tue Dec  8 23:57:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3103.  
  3104.     * cc-mode.el:
  3105.     better c++-submit-bug-report that works with all known mailers
  3106.  
  3107. Mon Dec  7 16:26:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3108.  
  3109.     * cc-mode.el:
  3110.     fixed calculation of multiple member-inits where double colons can
  3111.     appear inside initing parens
  3112.  
  3113.     * cc-mode.el: improved documentation for c++-special-indent-hook
  3114.  
  3115. Sat Dec  5 02:52:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3116.  
  3117.     * cc-mode.el: handled member init lists with first embedded colon
  3118.     
  3119.     foo() : foo, foo,
  3120.         foo, foo,
  3121.         ^--- this should probably be indented to
  3122.           ^--- here (under colon)
  3123.     
  3124.     but that's really hard and of minimal use.
  3125.  
  3126.     * cc-mode.el:
  3127.     finally figured out that "questionable member init" indentation
  3128.     section. It occurs when you have the following style:
  3129.     
  3130.     foo(...) :
  3131.         foo(9), blat(10),
  3132.         clob(3)
  3133.     
  3134.     Note the colon hanging on the previous line. Steve Vinoski is correct,
  3135.     we should not subtract a level of indentation from the shift since
  3136.     inclass-shift takes care of it.
  3137.  
  3138.     * cc-mode.el:
  3139.     seems like a fix for some close parens not getting outdented when
  3140.     c++-paren-as-block-close-p is t.  DOES ANYTHING ELSE BREAK????
  3141.  
  3142. Fri Dec  4 22:11:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3143.  
  3144.     * cc-mode.el:
  3145.     fixed continued expression in a simple if statement where there is a
  3146.     comment between the if and the simple statement.
  3147.  
  3148. Thu Dec  3 23:38:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3149.  
  3150.     * cc-mode.el: cleaned up some documentation
  3151.  
  3152.     * cc-mode.el: fixed c++-indent-exp for stream operators
  3153.  
  3154. Tue Dec  1 18:01:45 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3155.  
  3156.     * cc-mode.el:
  3157.     c++-backward-over-syntactic-ws should always be given a backlimit in
  3158.     c++-calculate-indent.
  3159.  
  3160.     * cc-mode.el:
  3161.     in previous fix for c++-c-i, it is possible that containing-sexp is
  3162.     nil, so use (goto-char (or containing-sexp bod))
  3163.  
  3164.     * cc-mode.el:
  3165.     enhancements to c++-calculate-indent so that it doesn't assume that
  3166.     class opening brace starts in column zero.
  3167.  
  3168.     * cc-mode.el:
  3169.     c++-submit-bug-report now reports whether emacs is patched
  3170.  
  3171. Mon Nov 30 23:39:13 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3172.  
  3173.     * cc-mode.el: fixed K&R C arg decl indentations
  3174.  
  3175.     * cc-mode.el: cosmetic changes
  3176.  
  3177.     * cc-mode.el: removed old c++-bosw which was too slow anyway
  3178.  
  3179. Fri Nov 27 20:18:12 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3180.  
  3181.     * cc-mode.el:
  3182.     fixed comment indentation for new c++-comment-only-line-offset
  3183.     semantics, and also simplified electric-star and electric-slash. They
  3184.     no longer call c++-electric-terminator.
  3185.  
  3186. Fri Nov 13 22:42:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3187.  
  3188.     * cc-mode.el: some documentation improvements
  3189.  
  3190.     * cc-mode.el:
  3191.     fixed erroneous newline insertion on member init colons when
  3192.     c++-auto-newline is off.
  3193.  
  3194.     * cc-mode.el: fixed buggy regexp which would fail on this situation:
  3195.     
  3196.     int foo(                                     // foo
  3197.         int arg1,                                 // arg1
  3198.                                                  int arg2
  3199.     
  3200.     last line gets indented wrong because of the spaces b/w the foo( and
  3201.     the comment
  3202.  
  3203.     * cc-mode.el: 1. alphabetized varlist in c++-dump-state
  3204.     2. improved portability of c++-submit-bug-report for mailers other
  3205.        than vm.
  3206.  
  3207.     * cc-mode.el:
  3208.     use comment-start-skip instead of hard-coded comment regexp
  3209.  
  3210.     * cc-mode.el:
  3211.     1. added c++-emacs-is-fixed-p to check for a patched emacs
  3212.     2. automatically set c++-untame-characters to nil if patched
  3213.  
  3214.     * cc-mode.el:
  3215.     fixed comment-line indent calculation. now c++-calculate-indent does
  3216.     no comment-line calculations, its all handled in c++-indent-line and
  3217.     c++-indent-sexp
  3218.  
  3219.     * cc-mode.el: slight documentation fixup
  3220.  
  3221.     * cc-mode.el:
  3222.     vastly improved c++-comment-only-line-offset to provide ability to
  3223.     determine column-zero offsets
  3224.  
  3225.     * cc-mode.el: attempt to speed up c++-backward-over-syntactic-ws
  3226.  
  3227. Thu Nov 12 16:45:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3228.  
  3229.     * cc-mode.el:
  3230.     1. some experimental performance enhancements (not working really great)
  3231.     2. in c++-at-top-level-p, check for null containing-sexp before in-parens
  3232.  
  3233. Tue Nov  3 20:46:19 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3234.  
  3235.     * cc-mode.el:
  3236.     removed the variable c++-class-member-indent and replaced all
  3237.     occurances with c-indent-level.  it caused very bad things when
  3238.     c-indent-level != c++-class-member-indent
  3239.  
  3240.     * cc-mode.el: c++-match-paren must set parse-sexp-ignore-comments to t
  3241.  
  3242. Fri Oct  2 22:31:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3243.  
  3244.     * cc-mode.el:
  3245.     perhaps optimization on skipping backwards over c++ literal comment
  3246.  
  3247. Tue Sep 29 00:19:22 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3248.  
  3249.     * cc-mode.el: replaced code accidently removed during last bug fix
  3250.  
  3251. Mon Sep 28 22:44:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3252.  
  3253.     * cc-mode.el: fixed default[ \t]*: indentation bug
  3254.  
  3255.     * cc-mode.el:
  3256.     continuation indentation problem should now work correctly.
  3257.     c++-in-function-p search from containing-sexp or point
  3258.  
  3259.     * cc-mode.el:
  3260.     added c++-in-function-p defun to be used when checking if we're in a
  3261.     function.  Continuations inside a function
  3262.  
  3263.     * cc-mode.el: fixed the LCD Archive Entry syntax
  3264.  
  3265.     * cc-mode.el: removed c++-fill-C-comment, function is unused anywhere
  3266.  
  3267. Tue Sep  1 21:02:17 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3268.  
  3269.     * cc-mode.el: 1. compatibility code for loading into a patched emacs
  3270.     2. also a *slightly* improved c++-backward-over-syntactic-ws.  This
  3271.        function needs a drastic overhaul -- I bet its the main performance
  3272.        pig now that emacs is patched.
  3273.  
  3274. Fri Aug 28 22:07:39 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3275.  
  3276.     * cc-mode.el: final cleansing before posting
  3277.  
  3278. Thu Aug 27 16:41:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3279.  
  3280.     * cc-mode.el: added GNU copyright info
  3281.  
  3282.     * cc-mode.el: standard header and many comment changes
  3283.  
  3284. Wed Aug 26 23:40:46 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3285.  
  3286.     * cc-mode.el: cleaned up documentation
  3287.  
  3288.     * cc-mode.el: yet again, better documentation about untame characters
  3289.  
  3290.     * cc-mode.el: better documentation on c++-untame-characters
  3291.  
  3292.     * cc-mode.el:
  3293.     added some documentation to the front of the file to describe untame
  3294.     characters
  3295.  
  3296.     * cc-mode.el:
  3297.     default value for c++-untame-characters is now just single tick, the
  3298.     most troublesome character
  3299.  
  3300. Thu Aug 20 19:29:00 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3301.  
  3302.     * cc-mode.el:
  3303.     only check for inside template spec if looking at c++-class-key
  3304.  
  3305.     * cc-mode.el:
  3306.     attempted to address keyword "class" appearing inside a template
  3307.     specification:
  3308.     
  3309.     template<class Foo>
  3310.     Foo& Bar<Foo>::doit( void ){};
  3311.     
  3312.     template<class Foo, class Blat>
  3313.     Foo& Bar<Foo>::doit( void ){};
  3314.  
  3315. Tue Aug 11 14:06:02 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3316.  
  3317.     * cc-mode.el: updated docstring for c++-at-top-level-p
  3318.  
  3319. Mon Aug 10 22:19:52 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3320.  
  3321.     * cc-mode.el: c++-c-mode's mode-name is "C"
  3322.  
  3323.     * cc-mode.el: style 1-3 is default for c++-C-block-comments-indent-p
  3324.  
  3325. Thu Aug  6 19:47:36 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3326.  
  3327.     * cc-mode.el: fixed auto-indenting of C block comment style 3
  3328.  
  3329. Wed Aug  5 21:25:39 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3330.  
  3331.     * cc-mode.el: another patch to docstring
  3332.  
  3333.     * cc-mode.el: another docstring change
  3334.  
  3335.     * cc-mode.el: qualify doc string change of previous revision
  3336.  
  3337.     * cc-mode.el:
  3338.     improved (hopefully) the docstring for var c++-untame-characters
  3339.  
  3340.     * cc-mode.el: more optimizations by passing bod to c++-at-top-level-p
  3341.  
  3342.     * cc-mode.el: parameterized c++-class-key and c++-access-key
  3343.     the first is class\|struct\|union
  3344.     the second is public\|protected\|private
  3345.  
  3346.     * cc-mode.el:
  3347.     fixed (c++-at-top-level-p t) so it won't get fooled by struct declarations.
  3348.  
  3349.     * cc-mode.el:
  3350.     fixed c++-at-top-level-p so it won't get fooled by struct declarations
  3351.  
  3352. Tue Aug  4 20:59:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3353.  
  3354.     * cc-mode.el: fixed docstring for c++-tab-always-indent
  3355.  
  3356. Wed Jul 29 14:50:46 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3357.  
  3358.     * cc-mode.el:
  3359.     this branch combines C and C++ modes for inclusion into emacs 19
  3360.  
  3361. Tue Jul 28 19:28:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3362.  
  3363.     * cc-mode.el: fixed documentation for c++-C-block-comments-indent-p
  3364.  
  3365. Mon Jul 27 15:13:36 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3366.  
  3367.     * cc-mode.el:
  3368.     fixed indentation of member init list after a multiline member init call
  3369.  
  3370. Thu Jul 23 19:59:45 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3371.  
  3372.     * cc-mode.el:
  3373.     fixed c++-electric-pound when inserting # at beginning of buffer
  3374.  
  3375.     * cc-mode.el: simple fix for *some* sequence continuation lines
  3376.  
  3377. Wed Jul 22 13:28:54 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3378.  
  3379.     * cc-mode.el:
  3380.     fixed (c++-at-top-level-p t) so it wouldn't return non-nil if keyword
  3381.     class appears in arglist
  3382.  
  3383.     * cc-mode.el:
  3384.     added to c++-calculate-indent a check if we're at the bobp
  3385.  
  3386. Tue Jul 21 21:59:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3387.  
  3388.     * cc-mode.el:
  3389.     new function c++-calculate-c-indent-within-comment used instead of
  3390.     calculate-c-indent-within-comment (from c-mode).  Supports 4 styles of
  3391.     C block comments.
  3392.     
  3393.     Also, new variable c++-C-block-comments-indent-p to control which
  3394.     style(s) to use.
  3395.  
  3396.     * cc-mode.el:
  3397.     fixed c++-indent-exp to handle public/private/protected with friends
  3398.  
  3399.     * cc-mode.el: fixed indentation for the following style:
  3400.     
  3401.     class foo {
  3402.         friend class bar;
  3403.         public:
  3404.             foo();
  3405.         private:
  3406.     };
  3407.  
  3408. Mon Jul 20 20:22:58 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3409.  
  3410.     * cc-mode.el:
  3411.     1. added c++-paren-as-block-close-p to control whether a closing paren is
  3412.        treated as a closing brace.
  3413.     
  3414.     2. also added c++-block-close-brace-offset to bug list of variables
  3415.  
  3416.     * cc-mode.el: added a c++-c-mode-syntax-table
  3417.     NOTE: patch in previous version DOES work
  3418.  
  3419.     * cc-mode.el: rewrite of c++-at-top-level-p for c mode (doesn't work)
  3420.  
  3421. Fri Jul 17 20:14:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3422.  
  3423.     * cc-mode.el:
  3424.     change syntax table entry to support lemacs 19 syntax table extension
  3425.     WARNING: this may change
  3426.  
  3427. Thu Jul 16 19:35:21 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3428.  
  3429.     * cc-mode.el: fixed comment-only lines in c++-indent-exp
  3430.  
  3431.     * cc-mode.el:
  3432.     patch to c++-indent-exp to make it work consistently with manual
  3433.     tabbing
  3434.  
  3435.     * cc-mode.el:
  3436.     better c++-(un)comment-region functions as supplied by enami
  3437.  
  3438. Wed Jul 15 18:07:13 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3439.  
  3440.     * cc-mode.el:
  3441.     C mode entry point, including a properly working c++-(un)comment-region
  3442.  
  3443.     * cc-mode.el:
  3444.     use c++-backward-over-syntactic-ws in another appropriate location in
  3445.     c++-calculate-indent
  3446.  
  3447. Tue Jul 14 21:33:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3448.  
  3449.     * cc-mode.el: implemented Brian Kennedy's patches for { if style
  3450.     seems to be clean now
  3451.  
  3452.     * cc-mode.el: regexp to correctly pickup '\\' character constant
  3453.  
  3454.     * cc-mode.el:
  3455.     new regexp to match even number of backslashes followed by a quote for
  3456.     c++-in-literal matching of string terminators
  3457.  
  3458. Mon Jul 13 18:25:21 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3459.  
  3460.     * cc-mode.el:
  3461.     better fix to c++-at-top-level-p for limiting backsearching of
  3462.     class/struct
  3463.  
  3464.     * cc-mode.el: another patch to c++-at-top-level-p, but now slower
  3465.  
  3466.     * cc-mode.el:
  3467.     Igor Metz's patch to fix c++-uncomment-region for Emacs 19
  3468.     derivatives since zap-to-char now works differently
  3469.  
  3470. Fri Jul 10 22:02:26 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3471.  
  3472.     * cc-mode.el:
  3473.     in c++-fill-C-comment, its cleaner to use let-bind fill-prefix itself
  3474.     instead of saving its value and later restoring it.
  3475.  
  3476.     * cc-mode.el:
  3477.     c++-at-top-level-p never returns non-nil if inside the parens of an
  3478.     arg decl list for a function.  Also cleaned up c++-at-top-level-p's
  3479.     docstring for new functionality
  3480.  
  3481.     * cc-mode.el: 1. added usage notes to top of file
  3482.     2. another fix for indentation of member init lists in nested classes
  3483.  
  3484.     * cc-mode.el: fixed member init continuation lines
  3485.  
  3486.     * cc-mode.el:
  3487.     fixed emtpy-defun-braces cleanup when at top level wrt enclosing class
  3488.  
  3489.     * cc-mode.el: fixed nested class member init list indentation
  3490.  
  3491. Thu Jul  9 21:54:08 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3492.  
  3493.     * cc-mode.el:
  3494.     added c++-class-member-indent to varlist in bug submission
  3495.  
  3496.     * cc-mode.el: nested classes!
  3497.     added a variable c++-class-member-indent to handle indentation of
  3498.     class members relative to their enclosing class
  3499.  
  3500.     * cc-mode.el:
  3501.     new c++-at-top-level-p function for nested class definitions (does not
  3502.     work though)
  3503.  
  3504.     * cc-mode.el:
  3505.     optimized by changing all references to c++-in-comment-p and
  3506.     c++-in-open-string-p to use memq and c++-in-literal.  This should
  3507.     overall reduce the number of calls to c++-in-literal, a time consuming
  3508.     defun.
  3509.  
  3510.     * cc-mode.el:
  3511.     c++-electric-star will now re-indent the line when typed as the first
  3512.     character on a line of a C block style comment continuation
  3513.  
  3514.     * cc-mode.el:
  3515.     fix to c++-at-top-level-p to ignore struct/class declarations inside a
  3516.     defun which are not definitions:
  3517.     
  3518.     void foo()
  3519.     {
  3520.         struct blah;
  3521.     
  3522.         // we are not now (c++-at-top-level-p t)
  3523.     
  3524.     The function is still not perfect so we really need to rethink this
  3525.     algorithm.
  3526.  
  3527.     * cc-mode.el:
  3528.     collapse all c++-point-* commands into a single c++-point command with
  3529.     an argument
  3530.  
  3531. Wed Jul  8 19:40:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3532.  
  3533.     * cc-mode.el: fixed parse-start setq in c++-calculate-indent
  3534.  
  3535. Tue Jul  7 22:03:41 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3536.  
  3537.     * cc-mode.el: pasing => parsing
  3538.  
  3539.     * cc-mode.el: grammer -> grammar in comment
  3540.  
  3541.     * cc-mode.el:
  3542.     implemented c++-backward-over-syntactic-ws with help of Tor Lillqvist
  3543.     <tml@tik.vtt.fi>  and replaced all occurances of
  3544.     c++-backward-over-cpp-directives and c++-skip-backward-to-noncomment.
  3545.  
  3546. Mon Jul  6 21:25:17 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3547.  
  3548.     * cc-mode.el:
  3549.     colon and semi-colon are no longer electric inside of literals
  3550.  
  3551.     * cc-mode.el: it is possible that c++-beginning-of-defun with
  3552.     c++-match-header-strong equal to nil will incorrectly find the
  3553.     beginning of defun.  if this happens, c++-parse-state will return a
  3554.     null state so we can check for this and then let* bind
  3555.     c++-match-header-strongly to t.  Then we re-calculate the beginning of
  3556.     the c++ defun.
  3557.     
  3558.     Seems to work around the (char-after ...) bug
  3559.  
  3560.     * cc-mode.el: swap back to another use of c++-parse-state
  3561.  
  3562.     * cc-mode.el:
  3563.     1. don't inherit syntax table from c-mode.  Initialize completely from
  3564.        in this file
  3565.     2. wrote c++-parse-state to centralize parsing of syntactic context
  3566.  
  3567. Tue Jun 30 21:39:23 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3568.  
  3569.     * cc-mode.el:
  3570.     fixed a bug in brace-else-brace cleanup where insertion of new
  3571.     (non-else) brace could possibly go way back to clean up old else brace
  3572.     constructs.
  3573.  
  3574.     * cc-mode.el:
  3575.     use new c++-cleanup-list to replace c++-cleanup-brace-else-brace-p and
  3576.     c++-cleanup-empty-defun-braces-p, and to implement new cleanup on
  3577.     close semi.
  3578.  
  3579.     * cc-mode.el:
  3580.     fixed c++-electric-pound behavior for # directives in a level of
  3581.     nesting for alignleft behavior
  3582.  
  3583.     * cc-mode.el:
  3584.     c++-cleanup-empty-defun-braces-p only for defun braces (not for empty
  3585.     if braces for example)
  3586.  
  3587.     * cc-mode.el:
  3588.     only do the extra c++-indent-line in c++-electric-brace if hanging
  3589.     braces is turned off
  3590.  
  3591. Wed Jun 24 20:07:00 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3592.  
  3593.     * cc-mode.el:
  3594.     added a c++-indent-line in the c++-electric-brace to fix non-hanging
  3595.     brace error message.
  3596.  
  3597.     * cc-mode.el:
  3598.     added function c++-skip-backwards-over-cpp-directives for improved
  3599.     indentation around # lines.
  3600.  
  3601. Tue Jun 23 19:35:27 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3602.  
  3603.     * cc-mode.el:
  3604.     fixed stream op positioning when first >> or << is on the next
  3605.     continued line of the statement.
  3606.  
  3607.     * cc-mode.el:
  3608.     hacking the mode line should only occur in c++-mode defun, when the
  3609.     mode line is a list, otherwise, if people use the obsolete string-only
  3610.     form, their mode line will be made invalid.
  3611.  
  3612.     * cc-mode.el:
  3613.     fixed indentation of lines not at top level, which follow preprocessor
  3614.     directive lines.
  3615.  
  3616. Fri Jun 19 21:46:58 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3617.  
  3618.     * cc-mode.el:
  3619.     fixed bug when access specifier line has a comment at the end of it
  3620.  
  3621.     * cc-mode.el: simplified all point-marks to use (point-marker)
  3622.  
  3623. Thu Jun 18 15:10:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3624.  
  3625.     * cc-mode.el: fixed c++-electric-pound by using insert-before-markers
  3626.  
  3627.     * cc-mode.el: 1. added c++-electric-pound command and bound it to #
  3628.     2. also added c++-electric-pound-behavior to control how # behaves.
  3629.        Currently only supported behavior is alignleft, but eventually I
  3630.        will support nested behavior as well.
  3631.     3. changed the way c++-electric-delete and c++-insert-command work on
  3632.        # lines.  delete is never hungry in the whitespace b/w # and
  3633.        directive, and tab only inserts in this area as well.
  3634.  
  3635.     * cc-mode.el:
  3636.     added c++-delete-function variable and made c++-electric-delete use
  3637.     this variable
  3638.  
  3639. Wed Jun 17 22:29:12 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3640.  
  3641.     * cc-mode.el:
  3642.     added c++-special-indent-hook and bug reporting of this variable
  3643.  
  3644.     * cc-mode.el: support for lining up >> and <<
  3645.  
  3646.     * cc-mode.el:
  3647.     added c++-matching-paren as contrib'd by Gnanasekaran Swaminathan
  3648.  
  3649. Mon Jun 15 21:07:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3650.  
  3651.     * cc-mode.el: fixed c++-indent-command when looking at a blank line and
  3652.     c++-tab-always-indent is nil
  3653.  
  3654.     * cc-mode.el:
  3655.     another fix to c++-indent-command for c++-tab-always-indent == nil
  3656.  
  3657.     * cc-mode.el:
  3658.     made c++-indent-command behavior when c++-tab-always-indent is nil
  3659.     consistent with documentation
  3660.  
  3661. Thu Jun 11 22:44:47 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3662.  
  3663.     * cc-mode.el:
  3664.     added a test to see if c++-auto-newline actually inserts the newline
  3665.     doing the auto-fill
  3666.  
  3667. Wed Jun 10 19:10:31 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3668.  
  3669.     * cc-mode.el:
  3670.     fixed indentation of first member function after an access specifier
  3671.     inside a class definition
  3672.  
  3673. Tue Jun  9 22:45:24 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3674.  
  3675.     * cc-mode.el:
  3676.     c++-submit-bug-report uses pop-to-buffer instead of switch-buffer
  3677.  
  3678.     * cc-mode.el: refined regexp patch in previous fix
  3679.  
  3680.     * cc-mode.el:
  3681.     fixed c++-calculate-indent int the situation where we're looking at
  3682.     the line after a class declaration, but we're not inheriting.  see the
  3683.     lines after:
  3684.     ;; else first check to see if its a
  3685.     ;; multiple inheritance continuation line
  3686.     
  3687.     the regexp should match optional inheritance syntax.
  3688.  
  3689.     * cc-mode.el:
  3690.     small fix to c++-at-top-level for checking if at top wrt a containing
  3691.     class definition. (previous fix didn't work)
  3692.  
  3693.     * cc-mode.el:
  3694.     1. fixed small bug in c++-at-top-level-p for nested in class checking
  3695.     2. fixed bug in indentation of continued arg lists in class nested
  3696.        function declarations
  3697.  
  3698. Mon Jun  8 21:50:48 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3699.  
  3700.     * cc-mode.el: removed extra define-key of DEL in c++-mode-map init
  3701.  
  3702.     * cc-mode.el: fixed friend offset in c++-indent-exp
  3703.  
  3704.     * cc-mode.el:
  3705.     indent by c++-friend-offset for all friends, not just class friends
  3706.  
  3707.     * cc-mode.el: fixed scan-lists failure in c++-at-top-level-p
  3708.  
  3709.     * cc-mode.el: fixed bogus colon entry "premature sexp end" bug
  3710.  
  3711.     * cc-mode.el: much preliminary work for inline code proper formatting
  3712.  
  3713.     * cc-mode.el: fixed double colon cleanup inside defun level
  3714.  
  3715.     * cc-mode.el: added variable c++-cleanup-empty-defun-braces-p
  3716.  
  3717.     * cc-mode.el: default value for c++-comment-only-line-offset is now 0
  3718.  
  3719.     * cc-mode.el: fixed c++-electric-delete's consuming of [] characters
  3720.  
  3721.     * cc-mode.el: c++-cleanup-brace-else-brace-p is now nil by default
  3722.  
  3723.     * cc-mode.el:
  3724.     fixed c++-hanging-member-init-colon for all known situations
  3725.  
  3726. Fri Jun  5 21:13:54 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3727.  
  3728.     * cc-mode.el: reorganized the major sections of code
  3729.  
  3730. Tue Jun  2 15:18:25 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3731.  
  3732.     * cc-mode.el: more optimizations using c++-beginning-of-defun
  3733.  
  3734. Mon Jun  1 22:24:52 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3735.  
  3736.     * cc-mode.el: interrim speedups
  3737.  
  3738.     * cc-mode.el:
  3739.     another patch to c++-in-literal for checking for null strings. I think
  3740.     I've got it this time...
  3741.  
  3742.     * cc-mode.el:
  3743.     fixed the regexp for matching the closing double quote of a string
  3744.  
  3745. Thu May 28 22:24:09 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3746.  
  3747.     * cc-mode.el: added a (provide ...) to the end of the file
  3748.  
  3749.     * cc-mode.el: changed c++-brace-}-else-{-p to c++-brace-else-brace-p
  3750.  
  3751.     * cc-mode.el: fixed hanging base classes for multiple inheritance
  3752.  
  3753.     * cc-mode.el:
  3754.     completely rewrote c++-backward-to-noncomment to use c++-in-literal
  3755.     function.
  3756.  
  3757.     * cc-mode.el:
  3758.     replace all beginning-of-defun calls with c++-beginning-of-defun which
  3759.     more correctly find the true beginning of a c++ definition
  3760.  
  3761.     * cc-mode.el:
  3762.     fixed c++-in-literal for the case where "" appears as a string
  3763.  
  3764.     * cc-mode.el:
  3765.     fixed bug in c++-calculate-indent when class line is first line in
  3766.     file. also there may be no space between the class name and colon.
  3767.  
  3768.     * cc-mode.el:
  3769.     fixed c++-backward-to-noncomment bug when looking at # lines
  3770.  
  3771.     * cc-mode.el:
  3772.     fixed indentation of top-level construct immediately preceeded by a
  3773.     c-block comment
  3774.  
  3775. Wed May 27 23:30:43 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3776.  
  3777.     * cc-mode.el:
  3778.     complete replacement for c++-in-open-string-p and c++-in-comment-p
  3779.  
  3780. Tue May 26 22:25:39 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3781.  
  3782.     * cc-mode.el: added Warner Losh's addition of c++-relative-offset-p
  3783.  
  3784.     * cc-mode.el:
  3785.     patched c++-backward-to-start-of-do to ignore do/while constructs in
  3786.     comments
  3787.  
  3788.     * cc-mode.el: yet another patch to c++-in-comment-p
  3789.  
  3790. Fri May 22 18:09:04 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3791.  
  3792.     * cc-mode.el:
  3793.     added c++-access-specifier-offset for extra indentation for public,
  3794.     protected, and private keyword lines
  3795.  
  3796. Thu May 21 19:18:31 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3797.  
  3798.     * cc-mode.el: cosmetic changes
  3799.  
  3800. Wed May 20 22:53:43 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3801.  
  3802.     * cc-mode.el: fixed typo with c++-always-arglist-indent-p
  3803.  
  3804.     * cc-mode.el:
  3805.     mode-line-format is now not completely overridden, but instead, the
  3806.     c++-isms are tacked onto the format after the mode-name symbol (if it
  3807.     exists).
  3808.  
  3809.     * cc-mode.el: installed Terry Glanfield's patch to c++-indent-exp
  3810.  
  3811.     * cc-mode.el: documented c++-always-arglist-indent, changed the name to
  3812.     c++-always-arglist-indent-p and added to bug report list.
  3813.  
  3814.     * cc-mode.el:
  3815.     installed Milo Chan's patch for addition of c++-always-arglist-indent
  3816.  
  3817.     * cc-mode.el:
  3818.     small patch to fix whitespace only line before top-level construct
  3819.  
  3820.     * cc-mode.el:
  3821.     rewrote c++-tame-comments to look at a list of characters to tame.
  3822.     Also removed c++-tame-comments-p and replaced it with
  3823.     c++-tame-characters
  3824.  
  3825.     * cc-mode.el: equivalenced class and struct keyword syntacticly
  3826.  
  3827. Tue May 19 19:34:16 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3828.  
  3829.     * cc-mode.el: fixed multiple inheritance continuation indentation
  3830.  
  3831.     * cc-mode.el: fixed indentation for member init lists when colon hangs
  3832.  
  3833.     * cc-mode.el:
  3834.     1. c++-electric-colon is made smarter so that it only adds newlines
  3835.        after a colong when absolutely necessary
  3836.     
  3837.     2. extended semantics of c++-hanging-member-init-colon
  3838.  
  3839.     * cc-mode.el: fixed small bug in constness fix of 2.55
  3840.  
  3841. Mon May 18 21:55:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3842.  
  3843.     * cc-mode.el: fixed top level enum constructs
  3844.  
  3845.     * cc-mode.el: fixed indentation when inputing after a const function
  3846.  
  3847.     * cc-mode.el: handle default: lines exactly line case: lines
  3848.  
  3849. Thu May 14 21:37:53 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3850.  
  3851.     * cc-mode.el: updated info at top of file re, bug reports
  3852.  
  3853.     * cc-mode.el:
  3854.     fixed continued statements inside a simple for/if style loop
  3855.  
  3856.     * cc-mode.el: fixed member-init bug introduced in v2.47
  3857.  
  3858. Wed May 13 20:45:33 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3859.  
  3860.     * cc-mode.el: yet another patch to c++-in-comment-p
  3861.  
  3862.     * cc-mode.el:
  3863.     added interactive command c++-version and bound it to C-c C-v
  3864.  
  3865. Tue May 12 21:37:20 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3866.  
  3867.     * cc-mode.el: another patch to c++-in-comment-p
  3868.  
  3869.     * cc-mode.el:
  3870.     fixed c++-calculate-indent to ignore parens and such which occur in
  3871.     comment regions during the initial iterative parse of the defun.
  3872.  
  3873.     * cc-mode.el:
  3874.     in c++-in-comment-p, it was necessary to set ?/ temporarily to ". 14"
  3875.     class so that c++ style comments wouldn't affect parse-partial-sexp
  3876.  
  3877.     * cc-mode.el:
  3878.     tab does not insert a C style comment block continuation line when
  3879.     point is on or before the first non-whitespace character on the line.
  3880.  
  3881. Mon May 11 22:28:30 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3882.  
  3883.     * cc-mode.el: added variable c++-tame-comments-p
  3884.  
  3885.     * cc-mode.el:
  3886.     fixed c++-in-comment-p to handle special case of C style block comments
  3887.  
  3888.     * cc-mode.el: added some documentation to c++-mode
  3889.  
  3890.     * cc-mode.el:
  3891.     C-c C-b is the accepted standard for c++-submit-bug-report
  3892.  
  3893. Fri May  8 20:47:38 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3894.  
  3895.     * cc-mode.el:
  3896.     1. cleaned up all the intro information at the top of the file
  3897.     2. added c++-submit-bug-report function and related variables.
  3898.  
  3899.     * cc-mode.el: fixed mailing list info
  3900.  
  3901.     * cc-mode.el: added information about c++-mode-victims mailing list.
  3902.  
  3903.     * cc-mode.el:
  3904.     fixed c++-tame-comments. now we tame all string and parenthesis class
  3905.     characters.
  3906.  
  3907.     * cc-mode.el:
  3908.     changed syntax of single quote back to string class and added
  3909.     c++-electric-tick and c++-tame-ticks defuns to handle backslashifying
  3910.     single quotes in comment areas.
  3911.  
  3912. Thu May  7 20:03:32 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3913.  
  3914.     * cc-mode.el:
  3915.     added fix by Reed Hastings <reed@adapt.net.com> so that c++-indent-exp
  3916.     can properly terminate when // style comments are found within the
  3917.     function.
  3918.  
  3919.     * cc-mode.el:
  3920.     c++-calculate-indent should now not re-indent comment-only lines which
  3921.     begin in comment-column
  3922.  
  3923.     * cc-mode.el:
  3924.     fixed c++-electric-terminator insertion when auto-newline fills a long
  3925.     line due to auto-fill being on.
  3926.  
  3927.     * cc-mode.el:
  3928.     comment only lines which continue previous line's comment field would
  3929.     probably be indented in comment-column so those comments which begin
  3930.     in comment-column don't indent
  3931.  
  3932. Wed May  6 17:29:16 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3933.  
  3934.     * cc-mode.el:
  3935.     handle comment-only lines which continue from the previous line.
  3936.  
  3937. Mon May  4 23:33:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3938.  
  3939.     * cc-mode.el:
  3940.     added a few of Hallvard's speedups (but not the c++-auto-newline one)
  3941.  
  3942.     * cc-mode.el: changed all functions to conform to c++-<func> style
  3943.  
  3944.     * cc-mode.el:
  3945.     changed the variable c-tab-always-indent to c++-tab-always-indent and
  3946.     extended this variable's functionality.
  3947.  
  3948.     * cc-mode.el: forgot to remove the debug statement
  3949.  
  3950.     * cc-mode.el: simplified c++-cleanup-}-else-{-p
  3951.  
  3952. Sat May  2 18:12:21 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3953.  
  3954.     * cc-mode.el: changed c++-cleanup-}-else-{ to c++-cleanup-}-else-{-p
  3955.  
  3956. Fri May  1 21:09:09 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3957.  
  3958.     * cc-mode.el:
  3959.     beginnings of } else { cleanup, but not completely bugless yet
  3960.  
  3961.     * cc-mode.el:
  3962.     fixed indent-c++-exp. when setting this-indent as max of different
  3963.     values, max it with 0 not 1, otherwise some things won't ever end up
  3964.     in column zero.
  3965.  
  3966.     * cc-mode.el:
  3967.     I think I've extended calculate-c++-indent to properly handle
  3968.     switch/case statements (at least the style that I use).
  3969.  
  3970. Thu Apr 30 22:21:51 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3971.  
  3972.     * cc-mode.el: added c++-backward-to-start-of-do, which is analogous to
  3973.     c-backward-to-start-of-if and finds the corresponding preceding do for
  3974.     a do/while statement.  made the necessary changes to
  3975.     calculate-c++-indent to handle nested do's
  3976.  
  3977.     * cc-mode.el:
  3978.     this version will now handle continued statements with no compound
  3979.     statements on ifs, elses, fors, dos, and whiles.
  3980.  
  3981.     * cc-mode.el: add tab-width to the list of variables to dump...
  3982.  
  3983. Wed Apr 29 22:23:25 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  3984.  
  3985.     * cc-mode.el:
  3986.     simplification of auto-hungry functions and mode-line updates with
  3987.     much thanks to Hallvard Furuseth.
  3988.  
  3989.     * cc-mode.el:
  3990.     copied c++-in-parens-p from c-mode's c-inside-parens-p.  this is so we
  3991.     can play with trying to work around emacs' bogus syntax bugs. we'll
  3992.     see if the new behavior is any better
  3993.  
  3994.     * cc-mode.el:
  3995.     eliminate infinite loop bug in c++-indent-defun by using a marker.
  3996.     this is necessary since c++-indent-line could change the location of
  3997.     the marker and just saving its buffer position is not sufficient.
  3998.  
  3999.     * cc-mode.el:
  4000.     close parens act like close braces by indenting to c-indent-level
  4001.     plus value of c++-block-close-brace-offset.
  4002.  
  4003.     * cc-mode.el:
  4004.     fixed infinite loop problem in c++-indent-defun which was caused by
  4005.     substituting forward-line for next-line.
  4006.  
  4007.     * cc-mode.el: some changes to calculate-c++-indent defun
  4008.     1. fixed unbalanced paren problem (emacs bug) in comment by adding a
  4009.        paren to the j.peck hack comment (probably should eventually clean
  4010.        up these comments)
  4011.     
  4012.     2. applied Doug Moore's (dougm@cs.rice.edu) patch to fix continued
  4013.        function declarations of the form:
  4014.     
  4015.        int foo( int i,
  4016.                 int j );
  4017.        ^---- next line should only indent to here
  4018.     
  4019.     3. cleaned up some comment sections
  4020.  
  4021.     * cc-mode.el:
  4022.     added the variable c++-block-close-brace-offset for modifying the
  4023.     offset of close braces for non-top level blocks (i.e. braces which
  4024.     don't close a function).
  4025.  
  4026.     * cc-mode.el:
  4027.     removed c++-delete-is-hungry-in-literals-p.  Delete key is now,
  4028.     *never* hungry inside literals.
  4029.  
  4030. Tue Apr 28 22:38:35 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4031.  
  4032.     * cc-mode.el: fixed free variable problems in indent-c++-exp
  4033.     1. innerloop-done was let'ed as inner-loop-done. changed all
  4034.        innerloop-done's to inner-loop-done in body of defun
  4035.     
  4036.     2. last-depth wasn't let'ed
  4037.  
  4038.     * cc-mode.el:
  4039.     added c++-delete-is-hungry-in-literals-p to control whether
  4040.     hungry-delete consumes whitespace even in literals.
  4041.  
  4042.     * cc-mode.el:
  4043.     whoops, parse-start was a free variable in c++-at-top-level-p. I just
  4044.     added the local binding to the let statement in that defun.
  4045.  
  4046.     * cc-mode.el:
  4047.     changed c++-hanging-braces-p to c++-hanging-braces. this variable can
  4048.     now control whether hanging braces happen always, never, or only on
  4049.     non-top level open braces.
  4050.  
  4051.     * cc-mode.el: fixed comment-only line related bugs:
  4052.     
  4053.     1. comment-only lines not in the first column, but at the top level
  4054.        were inserting all tab characters.
  4055.     
  4056.     2. fixed #1, but this caused non-comment top-level lines which follow
  4057.        indented top-level comment-only lines to indent, which they
  4058.        shouldn't do.
  4059.     
  4060.     I think this fixes all repercussions of comment-only lines.
  4061.  
  4062.     * cc-mode.el:
  4063.     replaced all next-line's with forward-line's since next-line is really
  4064.     a user level function (and may be overloaded by the user).
  4065.  
  4066. Mon Apr 27 16:03:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4067.  
  4068.     * cc-mode.el:
  4069.     fixed enum entry bug reported by Rolf Schreiber by patching
  4070.     c++-backward-to-noncomment.  it is possible that (max (point-bol) lim)
  4071.     is greater than point, which chokes the search-backward call.  I now
  4072.     have a test for sblim being less than or equal to point.
  4073.  
  4074. Fri Apr 24 22:02:47 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4075.  
  4076.     * cc-mode.el:
  4077.     1. added documentation in c++-mode for auto-hungry states and related
  4078.        variables.
  4079.     2. removed duplicated setq's in c++-mode buffer-local-variable setups
  4080.  
  4081.     * cc-mode.el: more header doc information
  4082.  
  4083. Wed Apr 22 22:30:31 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4084.  
  4085.     * cc-mode.el: final clean up before posting
  4086.  
  4087.     * cc-mode.el: bumping to baseline rev number 2.0
  4088.  
  4089. Thu Apr 16 17:05:40 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4090.  
  4091.     * cc-mode.el: added LCD Archive Entry and new file header format
  4092.  
  4093. Wed Apr 15 19:44:38 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4094.  
  4095.     * cc-mode.el:
  4096.     fixed column zero comment-only line indentation problem when inside a
  4097.     containing-sexp.
  4098.  
  4099.     * cc-mode.el: needed to add a trailing newline for proper unsharing
  4100.  
  4101. Tue Apr 14 18:12:22 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4102.  
  4103.     * cc-mode.el: Bumping
  4104.  
  4105.     * cc-mode.el: added bug reporting information
  4106.  
  4107. Fri Apr 10 17:48:46 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4108.  
  4109.     * cc-mode.el: cleaned up c++-mode doc string
  4110.  
  4111.     * cc-mode.el:
  4112.     1. updated mode documentation string for c++-mode to include new
  4113.        variables.
  4114.     
  4115.     2. changed c++-auto-hungry-toggle-p to c++-auto-hungry-toggle since it
  4116.        is not a binary valued variable.
  4117.  
  4118.     * cc-mode.el:
  4119.     changed ' syntax back to string quote instead of punctuation
  4120.  
  4121. Thu Apr  9 22:26:00 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4122.  
  4123.     * cc-mode.el: added a (goto-char (point-min)) in c++-dump-state
  4124.  
  4125.     * cc-mode.el: added c++-dump-state function for bug reporting
  4126.  
  4127. Tue Mar 31 23:38:56 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4128.  
  4129.     * cc-mode.el: lots of toggling options, plus individual toggling for
  4130.     hungry-delete-key and auto-newline states.
  4131.  
  4132.     * cc-mode.el: added organization
  4133.  
  4134. Fri Mar 27 23:19:32 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4135.  
  4136.     * cc-mode.el: major renovation on auto/hungry toggling
  4137.  
  4138. Thu Mar 26 23:43:09 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4139.  
  4140.     * cc-mode.el:
  4141.     use better mode-line formatting instead of hacking mode-name
  4142.  
  4143. Fri Mar 20 20:38:29 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4144.  
  4145.     * cc-mode.el:
  4146.     made buffer-local c++-auto-newline and c++-hungry-delete-key-p
  4147.  
  4148. Thu Mar 19 19:16:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4149.  
  4150.     * cc-mode.el:
  4151.     bound c++-toggle-auto-newline function to C-cC-t and compacted info
  4152.     mode name
  4153.  
  4154.     * cc-mode.el:
  4155.     use better mode-line updating than (redraw-display) in c++-toggle-auto-newline
  4156.  
  4157. Wed Mar 18 19:52:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4158.  
  4159.     * cc-mode.el: fixed display of c++-toggle-auto-newline
  4160.  
  4161. Tue Mar 17 21:01:05 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4162.  
  4163.     * cc-mode.el: test for c++-hungry-delete-key-p (typo)
  4164.  
  4165. Mon Mar 16 22:14:18 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4166.  
  4167.     * cc-mode.el: added c++-hungry-delete-key-p
  4168.  
  4169.     * cc-mode.el: handles auto newline for member init list
  4170.  
  4171.     * cc-mode.el: replaced within-c++-string w/ c++-in-open-string-p
  4172.  
  4173.     * cc-mode.el: lots of fixes for:
  4174.     1. column zero comments don't indent
  4175.     2. made electric chars comment & open-string safe
  4176.     3. made electric brace w/auto-fill work
  4177.     4. made calculate-c++-indent work for while( foo ) style
  4178.     5. added c++-hanging-braces-p for no auto-newline on left braces
  4179.  
  4180. Sat Mar 14 07:01:14 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4181.  
  4182.     * cc-mode.el:
  4183.     fixed double-colon and various other problems with c-auto-newline
  4184.     also changed c-auto-newline to c++-auto-newline
  4185.  
  4186.     * cc-mode.el: fixed c-auto-newline for double colons and }; syntax
  4187.  
  4188.     * cc-mode.el: fixed autoindent of comments for hanging arithmetic
  4189.  
  4190. Fri Mar 13 23:47:34 1992  Barry A. Warsaw, ITB  (warsaw@anthem)
  4191.  
  4192.     * cc-mode.el: better documentation for electric-c++-slash
  4193.  
  4194.     * cc-mode.el:
  4195.     fixed c++-indent-line to work with electric-c++-slash and bind "/" to it
  4196.  
  4197.     * cc-mode.el: added c++-comment-only-line-offset
  4198.  
  4199.     * cc-mode.el: Initial revision
  4200.  
  4201.