diff --git a/ChangeLog b/ChangeLog index 7b9da902551..1a7b9f61828 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,86 @@ +2012-10-07 Jan Djärv + + * configure.ac: Check that OSX is 10.4 or newer. + +2012-10-07 Paul Eggert + + Improve sys_siglist detection. + * configure.ac (sys_siglist): Look for its decl in . + Otherwise, it's not found in either Fedora 17 or Solaris 11. + +2012-10-04 Paul Eggert + + Merge from gnulib, incorporating: + 2012-10-02 pselect: reject invalid file descriptors + 2012-10-02 ptsname: reject invalid file descriptors + 2012-10-02 manywarnings: cater to more gcc infelicities + 2012-09-30 sockets, sys_stat: restore AC_C_INLINE + * lib/pselect.c, lib/stdlib.in.h, m4/manywarnings.m4, m4/pselect.m4: + * m4/stdlib_h.m4, m4/sys_stat_h.m4: Update from gnulib. + * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. + +2012-09-30 Paul Eggert + + Merge from gnulib, incorporating: + 2012-09-28 extern-inline: provide a -Wundef safe config.h + +2012-09-27 Paul Eggert + + Check more robustly for timer_settime. + This should fix an OS X build problem reported by Ivan Andrus in + . + * configure.ac (gl_THREADLIB): Define to empty, since Emacs + does threads its own way. + * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. + +2012-09-23 Paul Eggert + + * Makefile.in (bootstrap): Set MAKEFILE_NAME when building Makefile, + to avoid problems with recursion when using GNU make. + +2012-09-22 Paul Eggert + + * Makefile.in (bootstrap): Simplify build procedure. + Suggested by Wolfgang Jenker in + . + + Merge from gnulib, incorporating: + 2012-09-22 sockets, sys_stat: remove AC_C_INLINE in MSVC-only cases + +2012-09-19 Tassilo Horn + + * doc/emacs/misc.texi (DocView Slicing): Document new slice from + BoundingBox feature. + +2012-09-18 Jan Djärv + + * configure.ac (HAVE_GTK): Mention if we use GTK2 or GTK3. + +2012-09-17 Andreas Schwab + + * Makefile.in (bootstrap): Revert last change. Run config.status + after config.status --recheck, run configure from $(srcdir). + (config.status): Run configure from $(srcdir). + 2012-09-17 Paul Eggert + * Makefile.in: Fix build error on FreeBSD. + ($(MAKEFILE_NAME)): Pass MAKE='$(MAKE)' to config.status's env. + Suggested by Wolfgang Jenker in + . + (MAKE_CONFIG_STATUS): Remove. Remaining use expanded. + This undoes part of the 2012-09-10 patch. + (bootstrap): Run ./configure, rather than trying to run config.status + if it exists. That builds src/epaths.h more reliably. + Run autogen/copy_autogen if autogen.sh fails, + to create 'configure'; problem reported by Andreas Schwab in + . + * autogen.sh: Exit with status 1 when failing due to missing tools, + reverting the 2012-09-10 change to this file. + * autogen/copy_autogen: Fail if one of the subsidiary actions fail. + Use 'cp -f' for the build-aux files, since the destinations are + typically read-only. + Remove no-longer-needed Solaris 2.4 vfork bug workaround. * configure.ac (ac_cv_func_vfork_works): Default to 'no' on Solaris 2.4, so that AC_FUNC_VFORK doesn't think vfork works. diff --git a/Makefile.in b/Makefile.in index 9bb85967930..571013e3244 100644 --- a/Makefile.in +++ b/Makefile.in @@ -355,22 +355,24 @@ blessmail: Makefile src FRC # config.status overrides MAKEFILE_NAME with a bogus name when creating # src/epaths.h, so that 'make epaths-force' does not recursively invoke # config.status and overwrite config.status while executing it (Bug#11214). +# +# 'make bootstrap' overrides MAKEFILE_NAME to a nonexistent file but +# then attempts to build that file. This forces 'Makefile', 'lib/Makefile', +# etc. to be built without running into similar recursion problems. MAKEFILE_NAME = Makefile $(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \ $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) - ./config.status + MAKE='$(MAKE)' ./config.status # Don't erase these files if make is interrupted while refreshing them. .PRECIOUS: Makefile config.status -MAKE_CONFIG_STATUS = \ +config.status: ${srcdir}/configure ${srcdir}/lisp/version.el if [ -x ./config.status ]; then \ ./config.status --recheck; \ else \ - ./configure $(CONFIGURE_FLAGS); \ + $(srcdir)/configure $(CONFIGURE_FLAGS); \ fi -config.status: ${srcdir}/configure ${srcdir}/lisp/version.el - $(MAKE_CONFIG_STATUS) AUTOCONF_INPUTS = $(srcdir)/configure.ac $(srcdir)/aclocal.m4 @@ -891,13 +893,13 @@ dvi: .PHONY: bootstrap # Bootstrapping does the following: -# * Remove files to start from a clean slate. -# * Run autogen.sh, but don't worry about exit status 101 (missing tools). -# * Build Makefile, to build the build procedure itself. +# * Remove files to start from a bootstrap-clean slate. +# * Run autogen.sh, falling back on copy_autogen if autogen.sh fails. +# * Rebuild Makefile, to update the build procedure itself. # * Do the actual build. bootstrap: bootstrap-clean FRC - cd $(srcdir) && { ./autogen.sh || test $$? -eq 101; } - $(MAKE_CONFIG_STATUS) + cd $(srcdir) && { ./autogen.sh || autogen/copy_autogen; } + $(MAKE) $(MFLAGS) MAKEFILE_NAME=force-Makefile force-Makefile $(MAKE) $(MFLAGS) info all .PHONY: check-declare diff --git a/admin/ChangeLog b/admin/ChangeLog index 7f30fe8fc0f..7d4921887ce 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,48 @@ +2012-10-07 Glenn Morris + + * admin.el (cusver-new-version): Set default. + (cusver-check): Improve interactive argument reading. + +2012-10-06 Glenn Morris + + * admin.el (cusver-new-version): New variable. + (cusver-scan): Check if containing group has a :version. + (cusver-check): Add VERSION argument. + +2012-10-01 David Engster + + * grammars/bovine-grammar.el: + * grammars/wisent-grammar.el: Move to lisp directory. + +2012-10-01 David Engster + + * grammars/bovine-grammar.el (bovine--grammar-newstyle-unquote): + Remove. + (bovine-grammar-expand-form): Test for emacs-major-version. + + * grammars/c.by: Add EXPLICIT to keyword tokens. + + * grammars/f90.by: Add %provide token. + + * grammar/grammar.wy (semantic-grammar-lexer): Remove, since it + was copied to grammar.el. New %provide token to generate prefix + which conforms with Emacs conventions. Remove lexer definition, + which is now in grammar.el. + +2012-09-27 Glenn Morris + + * admin.el (set-version): Set msdos.c's Vwindow_system_version. + +2012-09-27 Paul Eggert + + Check more robustly for timer_settime. + * merge-gnulib (GNULIB_MODULES): Add timer-time. + +2012-09-26 Juanma Barranquero + + * unidata/BidiMirroring.txt: + * unidata/UnicodeData.txt: Update to Unicode 6.2. + 2012-09-17 Glenn Morris * admin.el (add-log-time-format): Declare. diff --git a/admin/admin.el b/admin/admin.el index 862e5aed6c1..3e3fbba7202 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -129,8 +129,12 @@ Root must be the root of an Emacs source tree." (rx (and "\"ProductVersion\"" (0+ space) ?, (0+ space) ?\" (submatch (1+ (in "0-9, "))) "\\0\""))) + ;; Major version only. (when (string-match "\\([0-9]\\{2,\\}\\)" version) (setq version (match-string 1 version)) + (set-version-in-file root "src/msdos.c" version + (rx (and "Vwindow_system_version" (1+ not-newline) + ?\( (submatch (1+ (in "0-9"))) ?\)))) (set-version-in-file root "etc/refcards/ru-refcard.tex" version "\\\\newcommand{\\\\versionemacs}\\[0\\]\ {\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs") @@ -438,8 +442,12 @@ If optional OLD is non-nil, also include defvars." )) "{}" "+")) -;; TODO if a defgroup with a version tag, apply to all customs in that -;; group (eg for new files). +(defvar cusver-new-version (format "%s.%s" emacs-major-version + (1+ emacs-minor-version)) + "Version number that new defcustoms should have.") + +;; TODO do something about renamed variables with aliases to the old name? +;; Scan old cus-start.el to find variables moved from C to lisp? (defun cusver-scan (file &optional old) "Scan FILE for `defcustom' calls. Return a list with elements of the form (VAR . VER), @@ -448,8 +456,8 @@ a :version tag having value VER (may be nil). If optional argument OLD is non-nil, also scan for defvars." (let ((m (format "Scanning %s..." file)) (re (format "^[ \t]*\\((def%s\\)[ \t\n]" - (if old "\\(?:custom\\|var\\)" "custom"))) - alist var ver form) + (if old "\\(custom\\|var\\)" "\\(custom\\|group\\)"))) + alist var ver form glist grp) (message "%s" m) (with-temp-buffer (insert-file-contents file) @@ -457,11 +465,23 @@ If optional argument OLD is non-nil, also scan for defvars." (while (re-search-forward re nil t) (goto-char (match-beginning 1)) (if (and (setq form (ignore-errors (read (current-buffer)))) - (setq var (car-safe (cdr-safe form))) + (setq var (car-safe (cdr-safe form))) ;; Exclude macros, eg (defcustom ,varname ...). (symbolp var)) - (setq ver (car (cdr-safe (memq :version form))) - alist (cons (cons var ver) alist)) + (progn + (setq ver (car (cdr-safe (memq :version form)))) + (if (equal "group" (match-string 2)) + ;; Group :version could be old. + (if (equal ver cusver-new-version) + (setq glist (cons (cons var ver) glist))) + ;; If it specifies a group and the whole group has a + ;; version. use that. + (unless ver + (setq grp (car (cdr-safe (memq :group form)))) + (and grp + (setq grp (car (cdr-safe grp))) ; (quote foo) -> foo + (setq ver (assq grp glist)))) + (setq alist (cons (cons var ver) alist)))) (if form (message "Malformed defcustom: `%s'" form))))) (message "%sdone" m) alist)) @@ -486,7 +506,7 @@ If optional argument OLD is non-nil, also scan for defvars." ;; TODO handle renamed things with aliases to the old names. ;; What to do about new files? Does everything in there need a :version, ;; or eg just the defgroup? -(defun cusver-check (newdir olddir) +(defun cusver-check (newdir olddir version) "Check that defcustoms have :version tags where needed. NEWDIR is the current lisp/ directory, OLDDIR is that from the previous release. A defcustom that is only in NEWDIR should have a :version @@ -495,11 +515,16 @@ just converting a defvar to a defcustom does not require a :version bump. Note that a :version tag should also be added if the value of a defcustom changes (in a non-trivial way). This function does not check for that." - (interactive "DNew Lisp directory: \nDOld Lisp directory: ") + (interactive (list (read-directory-name "New Lisp directory: ") + (read-directory-name "Old Lisp directory: ") + (number-to-string + (read-number "New version number: " + (string-to-number cusver-new-version))))) (or (file-directory-p (setq newdir (expand-file-name newdir))) (error "Directory `%s' not found" newdir)) (or (file-directory-p (setq olddir (expand-file-name olddir))) (error "Directory `%s' not found" olddir)) + (setq cusver-new-version version) (let* ((newfiles (progn (message "Finding new files with defcustoms...") (cusver-find-files newdir))) (oldfiles (progn (message "Finding old files with defcustoms...") diff --git a/admin/grammars/README b/admin/grammars/README index 419797e0dcb..e38260952a5 100644 --- a/admin/grammars/README +++ b/admin/grammars/README @@ -3,8 +3,8 @@ generate the parser data in the lisp/semantic/bovine/ and lisp/semantic/wisent/ directories. You can run the parser generators with -emacs -batch -Q -l bovine-grammar.el -f bovine-make-parsers -emacs -batch -Q -l wisent-grammar.el -f wisent-make-parsers +emacs -batch -Q -l semantic/bovine/grammar -f bovine-make-parsers +emacs -batch -Q -l semantic/wisent/grammar -f wisent-make-parsers Currently, the parser files in lisp/ are not generated directly from these grammar files when making Emacs. This state of affairs, and the diff --git a/admin/grammars/c.by b/admin/grammars/c.by index 1bdaf8f447b..dfced9813d1 100644 --- a/admin/grammars/c.by +++ b/admin/grammars/c.by @@ -1,5 +1,4 @@ ;;; c.by -- LL grammar for C/C++ language specification - ;; Copyright (C) 1999-2012 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam @@ -39,6 +38,13 @@ ;; > * Can't parse signature element: "RmcBucStatus* rftBucStatus" %package semantic-c-by +%provide semantic/bovine/c-by + +%{ +(declare-function semantic-c-reconstitute-token "semantic/bovine/c") +(declare-function semantic-c-reconstitute-template "semantic/bovine/c") +(declare-function semantic-expand-c-tag "semantic/bovine/c") +} %languagemode c-mode c++-mode %start declaration @@ -98,6 +104,8 @@ %put VIRTUAL summary "Method Modifier: virtual (...) ..." %token MUTABLE "mutable" %put MUTABLE summary "Member Declaration Modifier: mutable ..." +%token EXPLICIT "explicit" +%put EXPLICIT summary "Forbids implicit type conversion: explicit " %token STRUCT "struct" %put STRUCT summary "Structure Type Declaration: struct [name] { ... };" @@ -370,6 +378,9 @@ namespacesubparts ;; PUBLIC or PRIVATE bits. Ignore them for now. | template | using + ;; Includes inside namespaces + | spp-include + (TAG $1 'include :inside-ns t) | ;;EMPTY ; @@ -1098,6 +1109,8 @@ functionname function-pointer : LPAREN STAR symbol RPAREN ( (concat "*" $3) ) + | LPAREN symbol RPAREN + ( $2 ) ; fun-or-proto-end diff --git a/admin/grammars/grammar.wy b/admin/grammars/grammar.wy index 1189d6b0886..f89fe6220ff 100644 --- a/admin/grammars/grammar.wy +++ b/admin/grammars/grammar.wy @@ -23,6 +23,9 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . +%package semantic-grammar-wy +%provide semantic/grammar-wy + %{ (defvar semantic-grammar-lex-c-char-re) @@ -32,8 +35,6 @@ (defvar semantic-grammar-wy--rindx nil) } -%package semantic-grammar-wy - %languagemode wy-mode ;; Main @@ -52,6 +53,7 @@ %keyword LEFT "%left" %keyword NONASSOC "%nonassoc" %keyword PACKAGE "%package" +%keyword PROVIDE "%provide" %keyword PREC "%prec" %keyword PUT "%put" %keyword QUOTEMODE "%quotemode" @@ -134,6 +136,7 @@ decl: | no_default_prec_decl | languagemode_decl | package_decl + | provide_decl | precedence_decl | put_decl | quotemode_decl @@ -165,6 +168,11 @@ package_decl: `(PACKAGE-TAG ',$2 nil) ; +provide_decl: + PROVIDE SYMBOL + `(TAG ',$2 'provide) + ; + precedence_decl: associativity token_type_opt items `(TAG ',$1 'assoc :type ',$2 :value ',$3) diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy index b58b96c6bfb..708715533ff 100644 --- a/admin/grammars/java-tags.wy +++ b/admin/grammars/java-tags.wy @@ -23,6 +23,7 @@ ;; along with GNU Emacs. If not, see . %package wisent-java-tags-wy +%provide semantic/wisent/javat-wy %languagemode java-mode @@ -444,7 +445,7 @@ class_member_declaration ;;; Type Declaration token ;; ("NAME" type "TYPE" ( PART-LIST ) ( PARENTS ) EXTRA-SPEC "DOCSTRING") interface_declaration - : modifiers_opt INTERFACE IDENTIFIER extends_interfaces_opt interface_body + : modifiers_opt INTERFACE qualified_name extends_interfaces_opt interface_body (TYPE-TAG $3 $2 $5 (if $4 (cons nil $4)) :typemodifiers $1) ; @@ -547,7 +548,7 @@ formal_parameters ;;; Variable token ;; ("NAME" variable "TYPE" DEFAULT-VALUE EXTRA-SPEC "DOCSTRING") formal_parameter - : formal_parameter_modifier_opt type variable_declarator_id + : formal_parameter_modifier_opt type opt_variable_declarator_id (VARIABLE-TAG $3 $2 nil :typemodifiers $1) ; @@ -582,6 +583,13 @@ variable_declarator (cons $1 $region) ; +opt_variable_declarator_id + : ;; EMPTY + (identity "") + | variable_declarator_id + (identity $1) + ; + variable_declarator_id : IDENTIFIER dims_opt (concat $1 $2) diff --git a/admin/grammars/js.wy b/admin/grammars/js.wy index c6b3a58aac3..7b55f5c3834 100644 --- a/admin/grammars/js.wy +++ b/admin/grammars/js.wy @@ -58,6 +58,7 @@ ;; DAMAGE. %package wisent-javascript-jv-wy +%provide semantic/wisent/js-wy ;; JAVE I prefere ecmascript-mode %languagemode ecmascript-mode javascript-mode diff --git a/admin/grammars/make.by b/admin/grammars/make.by index ee933805cf6..6cff4716f82 100644 --- a/admin/grammars/make.by +++ b/admin/grammars/make.by @@ -22,6 +22,7 @@ ;; along with GNU Emacs. If not, see . %package semantic-make-by +%provide semantic/bovine/make-by %languagemode makefile-mode %start Makefile diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy index f7808fd20b8..f17f41c9b1b 100644 --- a/admin/grammars/python.wy +++ b/admin/grammars/python.wy @@ -88,6 +88,12 @@ ;; -------- %package wisent-python-wy +%provide semantic/wisent/python-wy + +%{ +(declare-function wisent-python-reconstitute-function-tag "semantic/wisent/python") +(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python") +} %languagemode python-mode @@ -173,6 +179,7 @@ %token COMMA "," %token ASSIGN "=" %token BACKQUOTE "`" +%token AT "@" ;; ----------------- @@ -307,6 +314,10 @@ %put WHILE summary "Start a 'while' loop" +%keyword WITH "with" +%put WITH summary +"Start statement with an associated context object" + %keyword YIELD "yield" %put YIELD summary "Create a generator function" @@ -545,8 +556,10 @@ import_stmt ;; dotted_as_name (',' dotted_as_name)* dotted_as_name_list - : dotted_as_name - | dotted_as_name_list COMMA dotted_as_name + : dotted_as_name_list COMMA dotted_as_name + (cons $3 $1) + | dotted_as_name + (list $1) ; ;; ('*' | import_as_name (',' import_as_name)*) @@ -649,6 +662,7 @@ compound_stmt | while_stmt | for_stmt | try_stmt + | with_stmt | funcdef | class_declaration ; @@ -755,14 +769,47 @@ zero_one_or_two_test () ; +;;;============================================================================ +;;@@ with_stmt +;;;============================================================================ + +;; with_stmt: 'with' test [ with_var ] ':' suite +with_stmt + : WITH test COLON suite + (CODE-TAG $1 nil) + | WITH test with_var COLON suite + (CODE-TAG $1 nil) ;; TODO capture variable + ; + +with_var + : AS expr + () ;; TODO capture + ; + ;;;============================================================================ ;;;@@ funcdef ;;;============================================================================ -;; funcdef: 'def' NAME parameters ':' suite +decorator + : AT dotted_name varargslist_opt NEWLINE + (FUNCTION-TAG $2 "decorator" $3) + ; + +decorators + : decorator + (list $1) + | decorator decorators + (cons $1 $2) + ; + +;; funcdef: [decorators] 'def' NAME parameters ':' suite funcdef : DEF NAME function_parameter_list COLON suite - (FUNCTION-TAG $2 nil $3) + (wisent-python-reconstitute-function-tag + (FUNCTION-TAG $2 nil $3) $5) + | decorators DEF NAME function_parameter_list COLON suite + (wisent-python-reconstitute-function-tag + (FUNCTION-TAG $3 nil $4 :decorators $1) $6) ; function_parameter_list @@ -798,10 +845,11 @@ function_parameter ;; classdef: 'class' NAME ['(' testlist ')'] ':' suite class_declaration : CLASS NAME paren_class_list_opt COLON suite - (TYPE-TAG $2 $1 ;; Name "class" - $5 ;; Members - (cons $3 nil) ;; (SUPERCLASSES . INTERFACES) - ) + (wisent-python-reconstitute-class-tag + (TYPE-TAG $2 $1 ;; Name "class" + $5 ;; Members + (cons $3 nil) ;; (SUPERCLASSES . INTERFACES) + )) ; ;; ['(' testlist ')'] diff --git a/admin/grammars/scheme.by b/admin/grammars/scheme.by index 3925f03c28b..98e75901a71 100644 --- a/admin/grammars/scheme.by +++ b/admin/grammars/scheme.by @@ -18,6 +18,7 @@ ;; along with GNU Emacs. If not, see . %package semantic-scm-by +%provide semantic/bovine/scm-by %languagemode scheme-mode %start scheme diff --git a/admin/grammars/srecode-template.wy b/admin/grammars/srecode-template.wy index f38d7eaa2a1..f84a414b46e 100644 --- a/admin/grammars/srecode-template.wy +++ b/admin/grammars/srecode-template.wy @@ -28,6 +28,9 @@ ;; Semantic Recoder templates are based on Google Templates ;; and are at the bottom of the Semantic Recoder API. +%package srecode-template-wy +%provide srecode/srt-wy + %languagemode srecode-mode %start template_file @@ -46,6 +49,15 @@ %put TEMPLATE summary "template \\n