Commit graph

203 commits

Author SHA1 Message Date
Alan Mackenzie
a1865bcf96 Distinguish the two meanings of Java's keyword "default". Fixes bug .
* lisp/progmodes/cc-engine.el (c-guess-basic-syntax CASE 14): Check the
context of case labels (including "default") more rigorously.
(c-guess-basic-syntax CASE 15): Consequential amendment.

* lisp/progmodes/cc-langs.el (c-modifier-kwds): Add "default" to Java's value.
2016-01-23 19:38:49 +00:00
Alan Mackenzie
9e5452f716 Don't confuse "::" with ":" when trying to parse member initializers.
* lisp/progmodes/cc-engine.el (c-back-over-member-initializers): Check
more robustly for ":" token when searching backwards for it.

* lisp/progmodes/cc-langs (c-:$-multichar-token-regexp): New language
variable.
2016-01-15 21:15:20 +00:00
Alan Mackenzie
b51f1ef82f Java Mode: Fontify identifiers in the presence of annotations.
* lisp/progmodes/cc-engine.el (c-forward-annotation): Tidy up the coding:
Don't move point when the defun fails.
(c-forward-decl-or-cast-1): Correct a usage of match data.

* lisp/progmodes/cc-fonts.el (c-font-lock-maybe-decl-faces): Remove.
(c-font-lock-declarations): Use the new c-maybe-decl-faces in place of the
removed variable.

* lisp/progmodes/cc-langs.el (c-maybe-decl-faces): New language variable.
2016-01-11 17:46:04 +00:00
Alan Mackenzie
73809908c6 Remove function wrongly on AWK Mode value of context fontification hook.
* lisp/progmodes/cc-langs.el (c-before-context-fontification-functions):
swap order of entries so that awk's entry isn't superseded by the default.

* lisp/progmodes/cc-mode.el (c-before-context-fl-expand-region): Correct
to handle nil value of c-before-context-fontification-functions.
2016-01-05 21:16:37 +00:00
Alan Mackenzie
33219d385b Apply text properties for <, > in new after-change function (C++ Java Modes).
These are category/syntax-table properties to give < and > paren syntax.
Also apply certain `c-type' text properties to the insides of <..> constructs
to ensure that identifiers contained by them get fontified.  This patch fixes
bug .

* lisp/progmodes/cc-cmds.el (c-electric-lt-gt): Reformulate due to new
after-change action.

* lisp/progmodes/cc-engine.el (c-before-change-check-<>-operators): Expand
change region to include <s and >s which might not be already marked as
parens, rather than just when paren text properties are removed.
(c-restore-<>-properties): New after-change function, which applies text
properties marking < and > with paren syntax.

* lisp/progmodes/cc-fonts.el (c-font-lock-declarations): Ensure `c-type'
properties are applied to the interiors of <...> constructs, to ensure
fontification of identifiers there.

* lisp/progmodes/cc-langs.el (c-before-font-lock-functions): Add
c-restore-<>-properties to this list for C++ and Java.

* lisp/progmodes/cc-mode.el (c-common-init): When invoking
c-before-font-lock-functions, exclude c-restore-<>-properties from the
functions invoked.
(c-before-change): Initialize c-new-BEG/END here (rather than c-after-change)
to allow modification by before-change functions.
(c-after-change): Amend c-new-END here, rather than initializing it and
c-new-BEG.
2016-01-04 22:35:13 +00:00
Paul Eggert
0e963201d0 Update copyright year to 2016
Run admin/update-copyright.
2016-01-01 01:34:24 -08:00
Alan Mackenzie
326ffcce5f Allow line comments ending with escaped NL to be continued to the next line.
Use this in C, C++, and Objective C Modes.  Fixes bug#22246

* src/syntax.c (comment-end-can-be-escaped): New buffer local variable.
(forw-comment, back-comment): On encountering an end of comment character,
test whether it is escaped when `comment-end-can-be-escaped' is non-nil.

* doc/lispref/syntax.texi (Control Parsing): Describe
`comment-end-can-be-escaped'.

* etc/NEWS (Lisp Changes): Describe `comment-end-can-be-escaped'.

* lisp/progmodes/cc-langs.el: New c-lang-setvar `comment-end-can-be-escaped'.
2015-12-28 16:01:05 +00:00
Alan Mackenzie
7233767e3c CC Mode: eliminate almost all byte compilation warnings
* lisp/progmodes/cc-bytecomp.el (cc-bytecomp-noruntime-functions): Remove.
(cc-require): Remove the crude hack that saved and restored
byte-compile-noruntime-functions.
(cc-conditional-require, cc-conditional-require-after-load): New macros.

* lisp/progmodes/cc-defs.el (top level): Reformulate code which loaded
cc-fix.el using the new macros in cc-bytecomp.el.

* lisp/progmodes/cc-langs.el (c++-template-syntax-table)
(c-no-parens-syntax-table): Add extra "(eval ..)"s around "'(lambda ..)"
forms to remove the superflous quotes.
2015-11-24 19:44:34 +00:00
Paul Eggert
284c470ef7 Backslash cleanup in Elisp source files
This patch should not change behavior.  It typically omits backslashes
where they are redundant (e.g., in the string literal "^\$").
In a few places, insert backslashes where they make regular
expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
"^\\*", which has the same effect as a regular expression.
Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
RCS IDs, as that makes it clearer that the backslash is intended.
2015-09-17 16:09:39 -07:00
Stefan Monnier
560022a5b6 * lisp/progmodes/cc-langs.el (c-make-init-lang-vars-fun): Use dolist 2015-09-14 09:26:54 -04:00
Alan Mackenzie
498d7fe980 Replace cadar' with cadr/car', since `cadar' is problematic on Emacs.
(c-make-init-lang-vars-fun): Replace two occurrences of `cadar' with
`cadr/car'.
2015-09-14 12:44:09 +00:00
Paul Eggert
26bd978d87 Fix some more docstring etc. quoting problems
Mostly these fixes prevent the transliteration of apostrophes
that should stay apostrophes.  Also, prefer curved quotes in
Bahá’í proper names, as that’s the preferred Bahá’í style and
these names are chock-full of non-ASCII characters anyway.
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload)
(eieio-defclass-internal):
* lisp/emacs-lisp/eieio.el (defclass):
* lisp/hi-lock.el (hi-lock-mode):
Don’t transliterate Lisp apostrophes when generating a
doc string or diagnostic.
* lisp/international/mule-diag.el (list-coding-systems-1):
* lisp/international/ogonek.el (ogonek-jak, ogonek-how):
* lisp/mail/sendmail.el (sendmail-query-user-about-smtp):
* lisp/vc/ediff-mult.el (ediff-redraw-registry-buffer):
* lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
Substitute quotes before putting them in the help buffer.
2015-09-03 15:32:54 -07:00
Paul Eggert
4c24b9e30f Quoting fixes in lisp/progmodes
* lisp/progmodes/cc-engine.el (c-bos-report-error):
* lisp/progmodes/cpp.el (cpp-edit-reset):
* lisp/progmodes/ebrowse.el (ebrowse-tags-apropos):
* lisp/progmodes/etags.el (etags-tags-apropos-additional)
(etags-tags-apropos, list-tags, tags-apropos):
* lisp/progmodes/executable.el (executable-set-magic):
* lisp/progmodes/octave.el (octave-sync-function-file-names)
(octave-help, octave-find-definition-default-filename)
(octave-find-definition):
Respect text quoting style in doc strings and diagnostics.
* lisp/progmodes/cc-langs.el (c-populate-syntax-table):
* lisp/progmodes/verilog-mode.el (verilog-auto-reset-widths):
* lisp/progmodes/vhdl-mode.el (vhdl-electric-quote):
Escape apostrophes in doc strings.
* lisp/progmodes/cmacexp.el (c-macro-expansion):
Use straight quoting in ASCII comment.
* lisp/progmodes/idlwave.el (idlwave-auto-fill-split-string)
(idlwave-pad-keyword):
* lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate)
(vhdl-electric-open-bracket, vhdl-electric-close-bracket):
(vhdl-electric-semicolon, vhdl-electric-comma)
(vhdl-electric-period, vhdl-electric-equal):
Use directed quotes in diagnostics and doc strings.
2015-08-30 23:12:29 -07:00
Paul Eggert
875a5d0ead Prefer directed to neutral quotes
Prefer directed to neutral quotes in docstings and diagnostics.
In docstrings, escape apostrophes that would otherwise be translated
to curved quotes using the newer, simpler rules.
* admin/unidata/unidata-gen.el (unidata-gen-table):
* lisp/align.el (align-region):
* lisp/allout.el (allout-mode, allout-solicit-alternate-bullet):
* lisp/bookmark.el (bookmark-default-annotation-text):
* lisp/calc/calc-aent.el (math-read-if, math-read-factor):
* lisp/calc/calc-lang.el (math-read-giac-subscr)
(math-read-math-subscr):
* lisp/calc/calc-misc.el (report-calc-bug):
* lisp/calc/calc-prog.el (calc-fix-token-name)
(calc-read-parse-table-part):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
* lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
* lisp/dabbrev.el (dabbrev-expand):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/elint.el (elint-get-top-forms):
* lisp/emacs-lisp/lisp-mnt.el (lm-verify):
* lisp/emulation/viper-cmd.el (viper-toggle-search-style):
* lisp/erc/erc-button.el (erc-nick-popup):
* lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login):
* lisp/eshell/em-dirs.el (eshell/cd):
* lisp/eshell/em-glob.el (eshell-glob-regexp):
* lisp/eshell/em-pred.el (eshell-parse-modifiers):
* lisp/eshell/esh-arg.el (eshell-parse-arguments):
* lisp/eshell/esh-opt.el (eshell-show-usage):
* lisp/files-x.el (modify-file-local-variable):
* lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer)
(filesets-update-pre010505):
* lisp/find-cmd.el (find-generic, find-to-string):
* lisp/gnus/auth-source.el (auth-source-netrc-parse-entries):
* lisp/gnus/gnus-agent.el (gnus-agent-check-overview-buffer)
(gnus-agent-fetch-headers):
* lisp/gnus/gnus-int.el (gnus-start-news-server):
* lisp/gnus/gnus-registry.el:
(gnus-registry--split-fancy-with-parent-internal):
* lisp/gnus/gnus-score.el (gnus-summary-increase-score):
* lisp/gnus/gnus-start.el (gnus-convert-old-newsrc):
* lisp/gnus/gnus-topic.el (gnus-topic-rename):
* lisp/gnus/legacy-gnus-agent.el (gnus-agent-unlist-expire-days):
* lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
* lisp/gnus/spam.el (spam-check-blackholes):
* lisp/mail/feedmail.el (feedmail-run-the-queue):
* lisp/mpc.el (mpc-playlist-rename):
* lisp/net/ange-ftp.el (ange-ftp-shell-command):
* lisp/net/mairix.el (mairix-widget-create-query):
* lisp/net/tramp-cache.el:
* lisp/obsolete/otodo-mode.el (todo-more-important-p):
* lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
* lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
* lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
* lisp/org/ob-core.el (org-babel-goto-named-src-block)
(org-babel-goto-named-result):
* lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
* lisp/org/ob-ref.el (org-babel-ref-resolve):
* lisp/org/org-agenda.el (org-agenda-prepare):
* lisp/org/org-bibtex.el (org-bibtex-fields):
* lisp/org/org-clock.el (org-clock-notify-once-if-expired)
(org-clock-resolve):
* lisp/org/org-feed.el (org-feed-parse-atom-entry):
* lisp/org/org-habit.el (org-habit-parse-todo):
* lisp/org/org-mouse.el (org-mouse-popup-global-menu)
(org-mouse-context-menu):
* lisp/org/org-table.el (org-table-edit-formulas):
* lisp/org/ox.el (org-export-async-start):
* lisp/play/dunnet.el (dun-score, dun-help, dun-endgame-question)
(dun-rooms, dun-endgame-questions):
* lisp/progmodes/ada-mode.el (ada-goto-matching-start):
* lisp/progmodes/ada-xref.el (ada-find-executable):
* lisp/progmodes/antlr-mode.el (antlr-options-alists):
* lisp/progmodes/flymake.el (flymake-parse-err-lines)
(flymake-start-syntax-check-process):
* lisp/progmodes/python.el (python-define-auxiliary-skeleton):
* lisp/progmodes/sql.el (sql-comint):
* lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
* lisp/server.el (server-get-auth-key):
* lisp/subr.el (version-to-list):
* lisp/textmodes/reftex-ref.el (reftex-label):
* lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
* lisp/vc/ediff-diff.el (ediff-same-contents):
* lisp/vc/vc-cvs.el (vc-cvs-mode-line-string):
* test/automated/tramp-tests.el (tramp-test33-asynchronous-requests):
Use directed rather than neutral quotes in diagnostics.
2015-08-24 23:57:25 -07:00
Stefan Monnier
18371ed2da * lisp/progmodes/cc-*.el: Fix up commenting style
* lisp/progmodes/cc-vars.el, lisp/progmodes/cc-styles.el:
* lisp/progmodes/cc-mode.el, lisp/progmodes/cc-menus.el:
* lisp/progmodes/cc-langs.el, lisp/progmodes/cc-guess.el:
* lisp/progmodes/cc-fonts.el, lisp/progmodes/cc-engine.el:
* lisp/progmodes/cc-defs.el, lisp/progmodes/cc-cmds.el:
* lisp/progmodes/cc-bytecomp.el, lisp/progmodes/cc-awk.el:
* lisp/progmodes/cc-align.el, lisp/net/soap-client.el:
Fix up commenting style.
2015-08-21 23:46:21 -04:00
Alan Mackenzie
e4de91d8dd Introduce new macros to cover Emacs's new names in cl-lib.el.
This also eliminates `mapcan' warnings in XEmacs.

progmodes/cc-defs.el (c--mapcan-status): new variable to characterise
[X]Emacs versions.
(top-level): Require either 'cl or 'cl-lib, depending on
c--mapcan-status.
Change this back to cc-external-require from an eval-when-compile
require.
(c--mapcan, c--set-difference, c--intersection, c--macroexpand-all)
(c--delete-duplicates): New macros which expand into either old or new
names.
(c-make-keywords-re, c-lang-defconst, c-lang-const) Use the new macros
rather than the old names.

progmodes/cc-engine.el (c-declare-lang-variables): Use c--mapcan rather
than mapcan.

progmodes/cc-fonts.el (c-compose-keywords-list): Use c--mapcan.

progmodes/cc-langs.el (top-level): Require either 'cl or 'cl-lib,
depending on c--mapcan-status.
(c-filter-ops, c-all-op-syntax-tokens, c-assignment-op-regexp)
(c-type-start-kwds, c-prefix-spec-kwds, c-specifier-key)
(c-not-decl-init-keywords, c-not-primitive-type-keywords)
(c-paren-any-kwds, c-<>-sexp-kwds, c-block-stmt-kwds, c-expr-kwds)
(c-decl-block-key, c-keywords, c-keywords-obarray)
(c-regular-keywords-regexp, c-primary-expr-regexp,
c-primary-expr-regexp)
(c-block-prefix-disallowed-chars, c-known-type-key,
c-nonlabel-token-key)
(c-make-init-lang-vars-fun): Use the new macros rather than the old
names.
2015-08-12 21:28:55 +00:00
Daniel Colascione
49c8458d7b Add C-language keyword constants to C++
* lisp/progmodes/cc-langs.el (c-constant-kwds): Add C-language
keyword constants to C++.
2015-05-25 13:51:35 -07:00
Alan Mackenzie
23bb07e05d Fix the CC Mode fixes from 2015-03-30. Fixes debbugs#20240.
* progmodes/cc-mode.el (c-extend-after-change-region): Widen before
applying text properties.
* progmodes/cc-langs.el (c-before-font-lock-functions): Update an entry
to a new function name.
2015-04-01 19:12:07 +00:00
Alan Mackenzie
05a5a94000 Correct calculation of CC Mode's font-lock region.
* cc-mode.el (c-fl-decl-start): Renamed from c-set-fl-decl-start.
* Change
signature such that nil is returned when no declaration is found.
(c-change-expand-fl-region): Renamed from c-change-set-fl-decl-start.
This now also handles expanding the font lock region to whole lines.
(c-context-expand-fl-region): Renamed from c-context-set-fl-decl-start.
This now also handles expanding the font lock region to whole lines.
(c-font-lock-fontify-region): When a change font lock region is
spuriously enlarged to the beginning-of-line by jit-lock, fontify the
extra bit separately from the region calculated by CC Mode.
(c-extend-after-change-region): Explicitly apply 'fontified properties
to
the extended bits of the font lock region.

* cc-langs.el (c-before-font-lock-functions)
(c-before-context-fontification-functions): Use new names for existing
functions (see above).
2015-03-30 16:37:04 +00:00
Alan Mackenzie
30c5f5cdef Allow compilation during loading of Modes derived from a CC Mode mode.
Fixes debbugs#19206.

cc-bytecomp.el (cc-bytecomp-compiling-or-loading): new function which
walks the stack to discover whether we're compiling or loading.
(cc-bytecomp-is-compiling): Reformulate, and move towards beginning.
(cc-bytecomp-is-loading): New defsubst.
(cc-bytecomp-setup-environment, cc-bytecomp-restore-environment): Use
the
above defsubsts.
(cc-require-when-compile, cc-bytecomp-defvar)
(cc-bytecomp-defun): Simplify conditionals.

cc-defs.el (cc-bytecomp-compiling-or-loading): "Borrow" this function
from cc-bytecomp.el.
(c-get-current-file): Reformulate using the above.
(c-lang-defconst): Prevent duplicate entries of file names in a symbol's
'source property.
(c-lang-const): Use cc-bytecomp-is-compiling.

cc-langs.el (c-make-init-lang-vars-fun): Use cc-bytecomp-is-compiling.
2015-01-13 15:47:26 +00:00
Paul Eggert
7e09ef09a4 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 14:26:41 -08:00
Alan Mackenzie
948fa912de Make C++11 uniform init syntax work. New keywords "final" and "override"
cc-engine.el (c-back-over-member-initializer-braces): New function.
(c-guess-basic-syntax): Set `containing-sex' and `lim' using the new
function.

cc-fonts.el (c-font-lock-declarations): Check more carefully for "are we
at a declarator?" using c-back-over-member-initializers.

cc-langs.el (c-type-modifier-kwds): include "final" and "override" in
the
C++ value.
2014-12-19 18:35:14 +00:00
Stefan Monnier
39ead8cdfc * lisp/progmodes/cc-cmds.el (c-subword-mode): Alias to subword-mode.
(c-update-modeline):
* lisp/progmodes/cc-langs.el (c-mode-menu): Use c-subword-mode.
* lisp/progmodes/cc-mode.el (subword-mode): Move autoload to cc-cmds.el.
(c-mode-base-map): Use c-subword-mode.
2014-12-18 11:18:21 -05:00
Stefan Monnier
517505322a Merge some of the differences from the standalone CC-mode.
The main change is to only use the `category' text-property only when
available.  For that many calls are changed to use c-get-char-property,
c-next-single-property-change, c-sc-scan-lists,
c-sc-parse-partial-sexp, c-unmark-<->-as-paren.

* lisp/progmodes/cc-align.el (c-lineup-respect-col-0): New function.

* lisp/progmodes/cc-cmds.el (c-forward-into-nomenclature)
(c-backward-into-nomenclature): Use cc-subword if subword-mode is
not available.
(c-beginning-of-defun, c-end-of-defun, c-mark-function)
(c-indent-line-or-region): Use c-region-is-active-p.

* lisp/progmodes/cc-defs.el (c-version): Bump up to 5.33.
(c-use-category): New const.
(c-next-single-property-change): New macro.
(c-region-is-active-p): Prefer region-active-p when available.
(c-search-backward-char-property): Fix old min/max typo; probably
a copy/paste error.
(c-mark-<-as-paren, c-mark->-as-paren, c-unmark-<->-as-paren):
Turn them into macros that obey c-use-category.
(c-sc-scan-lists-no-category+1+1, c-sc-scan-lists-no-category+1-1)
(c-sc-scan-lists-no-category-1+1, c-sc-scan-lists-no-category-1-1)
(c-sc-scan-lists, c-sc-parse-partial-sexp)
(c-looking-at-non-alphnumspace): New macros.
(c-sc-parse-partial-sexp-no-category): New function.
(c-emacs-features): Add `category-properties' element.

* lisp/progmodes/cc-engine.el (c-invalidate-state-cache, c-parse-state):
Handle the case where categories are not available.
(c-record-parse-state-state, c-replay-parse-state-state):
Handle marker values.
(c-before-change-check-<>-operators): Look for the `syntax-table'
property rather than for the corresponding `category'.
(c-looking-at-decl-block): Remove unused var
`c-disallow-comma-in-<>-arglists'.
(c-forward-<>-arglist-recur): Remove unused var
`orig-record-found-types'.

* lisp/progmodes/cc-langs.el (c-modified-constant): New lang var.
(c-known-type-key): Don't make a list just to throw it away.

* lisp/progmodes/cc-bytecomp.el (cc-bytecomp-unbound-variables)
(cc-bytecomp-original-functions, cc-bytecomp-original-properties)
(cc-bytecomp-loaded-files): Re-set each time the file is loaded.
(cc-bytecomp-obsolete-var, cc-bytecomp-ignore-obsolete)
(cc-bytecomp-obsolete-fun): Delete unused functions.

* lisp/progmodes/cc-mode.el (c-just-done-before-change): New var.
(c-basic-common-init): Initialize it.
(c-common-init): Only use mode-require-final-newline when available.
(c-before-change): Check and set c-just-done-before-change.
(c-after-change): Re-set c-just-done-before-change.
(c-advise-fl-for-region): New macro.
(lazy-lock-defer-rest-after-change, lazy-lock-defer-line-after-change)
(font-lock-after-change-function, jit-lock-after-change):
Advise if needed.
2014-12-01 15:06:49 -05:00
Paul Pogonyshev
0b37f903b6 progmodes/cc-langs.el: Support some of the new keywords in C++11.
(c-operators): Add "alignof".
(c-primitive-type-kwds): Add "char16_t", "char32_t".
(c-type-modifier-kwds): Add "constexpr", "noexcept".
(c-modifier-kwds): Add "thread_local".
(c-constant-kwds): Add "nullptr".

Original patch by Paul Pogonyshev <pogonyshev@gmail.com> and updated
by Rüdiger Sonderfeld  <ruediger@c-plusplus.net>.
2014-11-18 03:34:01 +01:00
Alan Mackenzie
ff73c2c3e2 Add "enum classs" support to C++ mode.
progmodes/cc-langs.el (c-after-brace-list-decl-kwds)
(c-after-brace-list-key): New language consts/variables.
progmodes/cc-engine.el (c-looking-at-decl-block): Exclude
spurious match of "enum struct" from decl-block recognition.
(c-backward-colon-prefixed-type): New function.
(c-backward-over-enum-header): Call above function to extend
recognition of enum structure.
2014-10-30 16:07:19 +00:00
Glenn Morris
52b410c60a Merge from emacs-24; up to 117634 2014-10-29 22:15:28 -07:00
Stefan Monnier
237bf45a48 * lisp/progmodes/cc-defs.el (c--macroexpand-all): New function.
(c-lang-defconst):
* lisp/progmodes/cc-langs.el (c-make-init-lang-vars-fun): Use it.

Fixes: debbugs:18845
2014-10-29 23:50:15 -04:00
Paul Eggert
cc541e588a Spelling fixes. 2014-10-12 13:09:15 -07:00
Stefan Monnier
03c4553666 Merge trivially safe differences from standalone CC-mode.
* lisp/progmodes/cc-mode.el (c-initialize-cc-mode): Don't quote a symbol
just to then pass it to `symbol-value'.
(prog-mode): Provide fallback definition, if needed.
* lisp/progmodes/cc-langs.el: Always load `cl'.  Don't load `cl-lib'.
Remove "cl-" prefix accordingly.
* lisp/progmodes/cc-fonts.el (c-font-lock-invalid-string): Use integerp or
characterp depending on the type of characters.
(c-font-lock-enum-tail): Remove unused var `start'.
* lisp/progmodes/cc-engine.el: Load CL at compile-time.
(c-declare-lang-variables): Use mapcan.
(c-append-to-state-cache): Remove unused var `ce+1'.
(c-parse-state-state): Make buffer-local.
(c-ssb-lit-begin): Remove unused var `pps-end-pos'.
(c-just-after-func-arglist-p): Remove unused var `end'.
* lisp/progmodes/cc-defs.el: Load cc-fix if delete-dups is undefined.
(c-<-as-paren-syntax, c->-as-paren-syntax): Move definition earlier.
(c-make-keywords-re): Use delete-dups.
(c-get-current-file): Avoid file-name-base.
* lisp/progmodes/cc-cmds.el (c-electric-lt-gt): Remove unused var
`close-paren-inserted'.
* lisp/progmodes/cc-awk.el (c-forward-sws): Remove unused declaration.
2014-10-04 00:03:49 -04:00
Alan Mackenzie
c8b22035d6 CC Mode: revert recent changes and fix bug 17463 (cc-langs.elc gets
loaded at run-time).
* progmodes/cc-langs.el (c-no-parens-syntax-table): Rename the
c-lang-const to c-make-no-parens-syntax-table and correct the
logic.
(c-no-parens-syntax-table): Correct the logic of the c-lang-defvar.
2014-09-10 21:38:11 +00:00
Stefan Monnier
4700363363 CC-mode: Set open-paren-in-column-0-is-defun-start to nil;
plus misc cleanup.
* lisp/progmodes/cc-mode.el (c-basic-common-init):
Set open-paren-in-column-0-is-defun-start.
(adaptive-fill-first-line-regexp, font-lock-syntactic-keywords):
Remove declarations, unused.
(run-mode-hooks): Remove declaration.
(font-lock-defaults): Use plain `defvar' to declare.
(c-run-mode-hooks): Test existence of run-mode-hooks with fboundp.
* lisp/progmodes/cc-langs.el (c-filter-ops): Avoid `setq'.
(c-make-mode-syntax-table): Don't micro-optimize.
(c-keywords, c-keyword-member-alist): Simplify.
(c-kwds-lang-consts): Don't eval at compile-time.
(c-primary-expr-regexp): Comment out unused vars.
* lisp/progmodes/cc-fonts.el (c-font-lock-context): Declare at top-level.
(c-font-byte-compile): New var.
(c--compile): New function.  Use it instead of `byte-compile'.
(c-cpp-matchers): Quote the value returned by
`c-make-syntactic-matcher' in case it's not self-evaluating.
(c-basic-matchers-before): Avoid a plain MATCHER as keyword, wrap it in
parentheses instead (in case MATCHER happens to be a list).
(c-font-lock-enum-tail): Remove unused var `start'.
(c-font-lock-objc-methods): Silence byte-compiler warnings.
* lisp/progmodes/cc-engine.el (c-syntactic-re-search-forward): Sink an `if'
test into an argument.
* lisp/progmodes/cc-defs.el (c-point, c-major-mode-is, c-put-char-property)
(c-get-char-property): Don't use `eval' just to unquote a constant.
(c-use-extents): Remove.  Use (featurep 'xemacs), compiled
more efficiently.
(c-put-char-property-fun): Don't call `byte-compile' by hand.
(c-clear-char-property, c-clear-char-properties): Check that `property'
is a quoted constant.
(c-emacs-features): Remove `infodock', `syntax-properties', and
`pps-extended-state' (never used), `8-bit' and `1-bit' (use (featurep
'xemacs) instead).  Use `with-temp-buffer' and let-bind vars after
changing buffer, so we don't have to setq them again afterwards.
(c-lang-const): Remove redundant symbolp assertions.
(c-find-assignment-for-mode): Use `or'.
* lisp/Makefile.in (compile-one-process): Remove cc-mode dependency.
2014-09-10 12:32:36 -04:00
Alan Mackenzie
4031fb7bac Handle C++11's "auto" and "decltype" constructions.
cc-engine.el (c-forward-type): Enhance to recognise and return 'decltype.
(c-forward-decl-or-cast-1): New let variables backup-kwd-sym,
prev-kwd-sym, new-style-auto.  Enhance to handle the new "auto" keyword.
    
cc-fonts.el (c-font-lock-declarations): Handle the "decltype" keyword.
(c-font-lock-c++-new): Handle "decltype" constructions.
    
cc-langs.el (c-auto-ops, c-auto-ops-re): New c-lang-defconsts/defvars.
(c-haskell-op, c-haskell-op-re): New c-lang-defconsts/defvars.
(c-typeof-kwds, c-typeof-key): New c-lang-defconsts/defvars.
(c-typeless-decl-kwds): Append "auto" onto the C++ value.
(c-not-decl-init-keywords): Also exclude c-typeof-kwds from value.
2014-08-24 20:50:11 +00:00
Alan Mackenzie
66bb9533fc Make ">>" act as double template ender in C++ Mode.
cc-langs.el (c->-op-cont-tokens): New lang-const split off from
c->-op-cont-re.
(c->-op-cont-tokens): Change to use the above.
(c->-op-without->-cont-regexp): New lang-const.
    
cc-engine.el (c-forward-<>-arglist-recur): Use
c->-op-without->-cont-regexp in place of c->-op-cont-tokens.
2014-08-24 20:38:11 +00:00
Daniel Colascione
fb32e9f8f3 Unbreak compilation of derived cc-mode modes
* lisp/progmodes/cc-defs.el (c-lang-defconst-eval-immediately):
Use `macroexpand-all' instead of `cl-macroexpand-all'.

* lisp/progmodes/cc-langs.el: Change comments from `cl-macroexpand-all'
to `macroexpand-all'
2014-07-14 16:58:52 -07:00
Alan Mackenzie
e3be29073e Don't call c-parse-state when c++-template-syntax-table is active.
* progmodes/cc-engine.el (c-guess-continued-construct CASE G)
(c-guess-basic-syntax CASE 5D.3): Rearrange so that
c-syntactic-skip-backwards isn't called with the pertinent syntax
table.
2014-06-29 11:26:47 +00:00
Glenn Morris
cd7d4e9b38 Stop cc-mode loading cl at runtime
* lisp/progmodes/cc-langs.el: Require cl-lib. 
Replace delete-duplicates and mapcan by cl- versions throughout.
And cl-macroexpand-all by macroexpand-all.
(delete-duplicates, mapcan, cl-macroexpand-all): No need to declare.

Fixes: debbugs:17463
2014-06-14 16:54:39 -07:00
Paul Eggert
ba3189039a Update copyright year to 2014 by running admin/update-copyright. 2014-01-01 07:43:34 +00:00
Alan Mackenzie
38de11bd5a Fix indentation/fontification of Java enum with "implements".
* progmodes/cc-langs.el (c-postfix-decl-spec-key): New variable, a
regexp which matches "implements", etc., in Java.
* progmodes/cc-engine.el (c-inside-bracelist-p): Check for extra
specifier clauses coming after "enum".
* progmodes/cc-fonts.el (c-font-lock-declarations)
(c-font-lock-enum-tail): Check for extra specifier clauses coming
after "enum".
2013-09-28 17:17:01 +00:00
Alan Mackenzie
ece1500470 C++: fontify identifier in declaration following "public:" correctly.
* progmodes/cc-langs.el (c-decl-start-colon-kwd-re): New lang var
to match "public", etc.
(c-decl-prefix-re): Add ":" into the C++ value.
* progmodes/cc-engine.el (c-find-decl-prefix-search): Refactor a
bit.  Add a check for a ":" preceded by "public", etc.
2013-09-21 17:21:29 +00:00
Alan Mackenzie
e8dd0787d9 Correctly fontify Java class constructors.
* progmodes/cc-langs.el (c-type-decl-suffix-key): Now matches ")"
in Java Mode.
(c-recognize-typeless-decls): Set the Java value to t.
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): While
handling a "(", add a check for, effectively, Java, and handle a
"typeless" declaration there.
2013-09-07 14:33:50 +00:00
Alan Mackenzie
869455d432 Parse C++ inher-intro when there's a template split over 2 lines.
* progmodes/cc-engine.el (c-guess-basic-syntax CASE 5C): Code more
rigorously the search for "class" etc. followed by ":".

* progmodes/cc-langs.el (c-opt-<>-sexp-key): Make the value for
random languages a regexp which never matches rather than nil.
2013-08-25 13:52:14 +00:00
Alan Mackenzie
f5950f7afe Fontify a Java generic method as a function.
* progmodes/cc-langs.el (c-recognize-<>-arglists): Set the Java
value to t.
2013-07-27 17:35:04 +00:00
Alan Mackenzie
5ab78d3d6a Make Java try-with-resources statement parse properly.
progmodes/cc-langs.el (c-block-stmt-1-2-kwds, c-block-stmt-1-2-key): New
language constants/variables.
progmodes/cc-engine.el (c-beginning-of-statement-1, c-after-conditional): Adapt
to deal with c-block-stmt-1-2-key.
progmodes/cc-fonts.el (c-font-lock-declarations): Adapt to deal with
c-block-stmt-1-2-key.
2013-07-27 12:07:43 +00:00
Alan Mackenzie
20e527d0c5 Correct the placement of c-cpp-delimiters when there're #s not at col 0.
* progmodes/cc-langs.el (c-anchored-cpp-prefix): Reformulate and
        place a submatch around the #.
        * progmodes/cc-mode.el(c-neutralize-syntax-in-and-mark-CPP): Start
        a search at BOL.  Put the c-cpp-delimiter category text propertiy
        on the #, not BOL.
2013-04-15 16:10:24 +00:00
Paul Eggert
c38e0c974e Prefer UTF-8 when the encoding shouldn't matter and changes are small. 2013-03-05 09:13:01 -08:00
Paul Eggert
65e7ca35a6 In doc, use standard American English style for e.g., etc., i.e. 2013-02-12 09:36:54 -08:00
Paul Eggert
ab422c4d68 Update copyright notices for 2013. 2013-01-01 09:11:05 +00:00
Glenn Morris
6a2e686836 Update some function declarations
* lisp/calc/calc-ext.el (math-compose-expr):
* lisp/calc/calc.el (math-compose-expr):
* lisp/progmodes/cc-defs.el (cl-macroexpand-all):
* lisp/progmodes/cc-langs.el (delete-duplicates, mapcan)
(cl-macroexpand-all): Update declarations.
2012-09-13 14:41:21 -04:00
Leo Liu
542dfbde70 * progmodes/cc-langs.el (c-symbol-start): Include char _.
Fixes: debbugs:11986
2012-07-20 19:36:41 +08:00