diff --git a/.gitignore b/.gitignore index a8f0e9a2486..94c4ba8e4bb 100644 --- a/.gitignore +++ b/.gitignore @@ -152,7 +152,7 @@ src/*.map # Tests. test/indent/*.new -test/biditest.txt +test/manual/biditest.txt test/manual/etags/srclist test/manual/etags/regexfile test/manual/etags/ETAGS diff --git a/admin/notes/triage b/admin/notes/triage index bc91b6c26f7..5b0e35c144c 100644 --- a/admin/notes/triage +++ b/admin/notes/triage @@ -57,7 +57,7 @@ For each new bug, ask the following questions: 1. Is the bug report written in a way to be easy to reproduce (starts from emacs -Q, etc.)? If not, ask the reporter to try and reproduce it on an emacs without customization. - 2. Is the bug report written against the lastest emacs? If not, try to + 2. Is the bug report written against the latest emacs? If not, try to reproduce on the latest version, and if it can't be reproduced, ask the reporter to try again with the latest version. 3. Is the bug the same as another bug? If so, merge the bugs. diff --git a/configure.ac b/configure.ac index 2baafb99112..0aa863afe34 100644 --- a/configure.ac +++ b/configure.ac @@ -365,7 +365,7 @@ AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB], g | gf | gfi | gfil | gfile ) val=gfile ;; w | w3 | w32 ) val=w32 ;; * ) AC_MSG_ERROR(['--with-file-notification=$withval' is invalid; -this option's value should be 'yes', 'no', 'inotify', 'kqeue', 'gfile' or 'w32'. +this option's value should be 'yes', 'no', 'inotify', 'kqueue', 'gfile' or 'w32'. 'yes' is a synonym for 'w32' on MS-Windows, for 'no' on Nextstep, otherwise for the first of 'inotify', 'kqueue' or 'gfile' that is usable.]) ;; diff --git a/etc/NEWS b/etc/NEWS index d23c7fa8aae..8907f7ad453 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -28,6 +28,30 @@ otherwise leave it unmarked. ** 'configure' detects the kqueue file notification library on *BSD and Mac OS X machines. + +* Startup Changes in Emacs 25.2 + + +* Changes in Emacs 25.2 + +** It is possible to disable attempted recovery on fatal signals + +Two new variables allow to disable attempts to recover from stack +overflow and to avoid automatic auto-save when Emacs is delivered a +fatal signal. `attempt-stack-overflow-recovery', if set to `nil', +will disable attempts to recover from C stack overflows; Emacs will +then crash as with any other fatal signal. +`attempt-orderly-shutdown-on-fatal-signal', if set to `nil', will +disable attempts to auto-save the session and shut down in an orderly +fashion when Emacs receives a fatal signal; instead, Emacs will +terminate immediately. Both variables are non-`nil' by default. +These variables are for users who would like to avoid the small +probability of data corruption due to techniques Emacs uses to recover +in these situations. + + +* Editing Changes in Emacs 25.2 + * Changes in Specialized Modes and Packages in Emacs 25.2 @@ -35,6 +59,21 @@ and Mac OS X machines. *** The kqueue library is integrated for *BSD and Mac OS X machines. + +* New Modes and Packages in Emacs 25.2 + + +* Incompatible Lisp Changes in Emacs 25.2 + + +* Lisp Changes in Emacs 25.2 + +** Autoload files can be generated without timestamps, +by setting `autoload-timestamps' to nil. + + +* Changes in Emacs 25.2 on Non-Free Operating Systems + * Installation Changes in Emacs 25.1 @@ -1524,57 +1563,56 @@ For consistency with the usual Emacs spelling, the Lisp variable `hfy-optimisations' has been renamed to `hfy-optimizations'. The old name should still work, as an obsolescent alias. - -* Changes in Frames and Windows Code in Emacs 25.1 +** Changes in Frame- and Window- Handling +++ -** Emacs can now draw horizontal scroll bars on some platforms that +*** Emacs can now draw horizontal scroll bars on some platforms that provide toolkit scroll bars, namely Gtk+, Lucid, Motif and Windows. Horizontal scroll bars are turned off by default. -*** New function `horizontal-scroll-bars-available-p' telling whether +**** New function `horizontal-scroll-bars-available-p' telling whether horizontal scroll bars are available on the underlying system. -*** New mode `horizontal-scroll-bar-mode' to toggle horizontal scroll +**** New mode `horizontal-scroll-bar-mode' to toggle horizontal scroll bars on all existing and future frames. -*** New function `toggle-horizontal-scroll-bar' to toggle horizontal +**** New function `toggle-horizontal-scroll-bar' to toggle horizontal scroll bars on the selected frame. -*** New frame parameters `horizontal-scroll-bars' and +**** New frame parameters `horizontal-scroll-bars' and `scroll-bar-height' to set horizontal scroll bars and their height for individual frames and in `default-frame-alist'. -*** New functions `frame-scroll-bar-height' and +**** New functions `frame-scroll-bar-height' and `window-scroll-bar-height' return the height of horizontal scroll bars on a specific frame or window. -*** `set-window-scroll-bars' now accepts five parameters where the last +**** `set-window-scroll-bars' now accepts five parameters where the last two specify height and type of the window's horizontal scroll bar. -*** `window-scroll-bars' now returns type and sizes of horizontal scroll +**** `window-scroll-bars' now returns type and sizes of horizontal scroll bars too. -*** New buffer-local variables `horizontal-scroll-bar' and +**** New buffer-local variables `horizontal-scroll-bar' and `scroll-bar-height'. +++ -** New functions `frame-geometry' and `frame-edges' give access to a +*** New functions `frame-geometry' and `frame-edges' give access to a frame's geometry. +++ -** New functions `mouse-absolute-pixel-position' and +*** New functions `mouse-absolute-pixel-position' and `set-mouse-absolute-pixel-position' get/set screen coordinates of the mouse cursor. +++ -** The function `window-edges' now accepts three additional arguments to +*** The function `window-edges' now accepts three additional arguments to retrieve body, absolute and pixel edges of the window. +++ -** The functions `window-inside-edges', `window-inside-pixel-edges' and +*** The functions `window-inside-edges', `window-inside-pixel-edges' and `window-inside-absolute-pixel-edges' have been renamed to respectively `window-body-edges', `window-body-pixel-edges' and `window-absolute-body-pixel-edges'. The old names are kept as aliases. +++ -** New function `window-absolute-pixel-position' to get the screen +*** New function `window-absolute-pixel-position' to get the screen coordinates of a visible buffer position. +++ -** The height of a frame's menu and tool bar are no longer counted in the +*** The height of a frame's menu and tool bar are no longer counted in the frame's text height. This means that the text height stands only for the height of the frame's root window plus that of the echo area (if present). This was already the behavior for frames with external tool @@ -1582,33 +1620,33 @@ and menu bars (like in the Gtk builds) but has now been extended to all builds. +++ -** Frames now do not necessarily preserve the number of columns or lines +*** Frames now do not necessarily preserve the number of columns or lines they display when setting default font, menu bar, fringe width, or scroll bars. In particular, maximized and fullscreen frames are conceptually never resized if such settings change. For fullheight and fullwidth frames, the behavior may depend on the toolkit used. -*** New option `frame-inhibit-implied-resize' if non-nil, means that +**** New option `frame-inhibit-implied-resize' if non-nil, means that setting default font, menu bar, fringe width, or scroll bars of a specific frame does not resize that frame in order to preserve the number of columns or lines it displays. +++ -** New function `window-preserve-size' allows to preserve the size of +*** New function `window-preserve-size' allows to preserve the size of windows without "fixing" it. It's supported by `fit-window-to-buffer', `temp-buffer-resize-mode' and `display-buffer'. +++ -** New `display-buffer' action function `display-buffer-use-some-frame'. +*** New `display-buffer' action function `display-buffer-use-some-frame'. This displays the buffer in an existing frame other than the current frame, and allows the caller to specify a frame predicate to exclude frames. +++ -** New minor mode `window-divider-mode' and options +*** New minor mode `window-divider-mode' and options `window-divider-default-places', `window-divider-default-bottom-width' and `window-divider-default-right-width'. -** Tearoff menus and detachable toolbars for Gtk+ has been removed. +** Tearoff menus and detachable toolbars for Gtk+ have been removed. Those features have been deprecated in Gtk+ for a long time. ** Etags diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index 2b65cb2e1a9..b666508e593 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in @@ -345,9 +345,12 @@ extraclean: maintainer-clean check: @echo "We don't have any tests for the lib-src/ directory yet." +tagsfiles = $(wildcard ${srcdir}/*.[ch]) + +.PHONY: tags tags: TAGS -TAGS: etags${EXEEXT} - etags *.[ch] +TAGS: etags${EXEEXT} ${tagsfiles} + ./etags ${tagsfiles} ../lib/libgnu.a: $(config_h) $(MAKE) -C ../lib all diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 164df255585..5042c0f2ab9 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -185,7 +185,7 @@ $(lisp)/loaddefs.el: $(LOADDEFS) --eval '(setq generated-autoload-file (expand-file-name (unmsys--file-name "$@")))' \ -f batch-update-autoloads ${SUBDIRS_ALMOST} -# autoloads only runs when loaddefs.el is non-existant, although it +# autoloads only runs when loaddefs.el is nonexistent, although it # generates a number of different files. Provide a force option to enable # regeneration of all these files. autoloads-force .PHONY: @@ -220,26 +220,28 @@ update-authors: $(emacs) -L "$(top_srcdir)/admin" -l authors \ -f batch-update-authors "$(top_srcdir)/etc/AUTHORS" "$(top_srcdir)" +FORCE: +.PHONY: FORCE -ETAGS = ../lib-src/etags +tagsfiles = $(shell find ${srcdir} -name '*.el') +tagsfiles := $(filter-out ${srcdir}/%loaddefs.el,${tagsfiles}) +tagsfiles := $(filter-out ${srcdir}/ldefs-boot.el,${tagsfiles}) +tagsfiles := $(filter-out ${srcdir}/eshell/esh-groups.el,${tagsfiles}) -lisptagsfiles1 = $(srcdir)/*.el -lisptagsfiles2 = $(srcdir)/*/*.el -lisptagsfiles3 = $(srcdir)/*/*/*.el -lisptagsfiles4 = $(srcdir)/*/*/*/*.el +ETAGS = ../lib-src/etags${EXEEXT} -## The ls | sed | xargs is to stop the command line getting too long +${ETAGS}: FORCE + ${MAKE} -C ../lib-src $(notdir $@) + +## The use of xargs is to stop the command line getting too long ## on MS Windows, when the MSYS Bash passes it to a MinGW compiled ## etags. It might be better to use find in a similar way to ## compile-main. But maybe this is not even necessary any more now ## that this uses relative filenames. -TAGS: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) +TAGS: ${ETAGS} ${tagsfiles} rm -f $@ touch $@ - ls $(lisptagsfiles1) $(lisptagsfiles2) \ - $(lisptagsfiles3) $(lisptagsfiles4) | \ - sed -e '/loaddefs/d; /\/ldefs-boot/d; /esh-groups\.el/d' | \ - xargs $(XARGS_LIMIT) "$(ETAGS)" -a -o $@ + ls ${tagsfiles} | xargs $(XARGS_LIMIT) "${ETAGS}" -a -o $@ # The src/Makefile.in has its own set of dependencies and when they decide @@ -402,7 +404,7 @@ $(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC) CAL_DIR = $(lisp)/calendar ## Those files that may contain internal calendar autoload cookies. CAL_SRC = $(addprefix ${CAL_DIR}/,diary-lib.el holidays.el lunar.el solar.el) -CAL_SRC := $(sort ${CAL_SRC} $(wildcard ${CAL_DIR}/cal*.el)) +CAL_SRC := $(sort ${CAL_SRC} $(wildcard ${CAL_DIR}/cal-*.el)) CAL_SRC := $(filter-out ${CAL_DIR}/cal-loaddefs.el,${CAL_SRC}) $(CAL_DIR)/cal-loaddefs.el: $(CAL_SRC) diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el index 8bb1b88ee62..3a3cb0fa853 100644 --- a/lisp/calendar/cal-hebrew.el +++ b/lisp/calendar/cal-hebrew.el @@ -595,7 +595,7 @@ Hebrew date diary entries must be prefaced by `diary-hebrew-entry-symbol' of the Hebrew calendar entries, except that the Hebrew month names cannot be abbreviated. The Hebrew months are numbered from 1 to 13 with Nisan being 1, 12 being Adar I and 13 being -Adar II; you must use `Adar I' if you want Adar of a common +Adar II; you must use \"Adar I\" if you want Adar of a common Hebrew year. If a Hebrew date diary entry begins with `diary-nonmarking-symbol', the entry will appear in the diary listing, but will not be marked in the calendar. This function diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el index f3cc430590f..2aa95502e58 100644 --- a/lisp/calendar/cal-iso.el +++ b/lisp/calendar/cal-iso.el @@ -33,7 +33,7 @@ (defun calendar-iso-to-absolute (date) "The number of days elapsed between the Gregorian date 12/31/1 BC and DATE. -The `ISO year' corresponds approximately to the Gregorian year, but +The \"ISO year\" corresponds approximately to the Gregorian year, but weeks start on Monday and end on Sunday. The first week of the ISO year is the first such week in which at least 4 days are in a year. The ISO commercial DATE has the form (week day year) in which week is in the range @@ -49,7 +49,7 @@ Sunday). The Gregorian date Sunday, December 31, 1 BC is imaginary." ;;;###cal-autoload (defun calendar-iso-from-absolute (date) - "Compute the `ISO commercial date' corresponding to the absolute DATE. + "Compute the \"ISO commercial date\" corresponding to the absolute DATE. The ISO year corresponds approximately to the Gregorian year, but weeks start on Monday and end on Sunday. The first week of the ISO year is the first such week in which at least 4 days are in a year. The ISO commercial diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el index e512faef15e..ec399548e77 100644 --- a/lisp/calendar/cal-tex.el +++ b/lisp/calendar/cal-tex.el @@ -1710,8 +1710,8 @@ non-nil, means add to end of buffer without erasing current contents." (cal-tex-cmd "\\hspace*" space)) (defun cal-tex-comment (&optional comment) - "Insert `% ', followed by optional string COMMENT, followed by newline. -COMMENT may contain newlines, which are prefixed by `% ' in the output." + "Insert \"% \", followed by optional string COMMENT, followed by newline. +COMMENT may contain newlines, which are prefixed by \"% \" in the output." (insert (format "%% %s\n" (if comment (replace-regexp-in-string "\n" "\n% " comment) diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index a2f9d58585a..0a8cd81e1a2 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el @@ -65,10 +65,10 @@ and `am-pm' and `time-zone', both alphabetic strings. For example, the form - '(24-hours \":\" minutes + (24-hours \":\" minutes (if time-zone \" (\") time-zone (if time-zone \")\")) -would give military-style times like `21:07 (UTC)'." +would give military-style times like \"21:07 (UTC)\"." :type 'sexp :group 'calendar) diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 12d0a94127f..84ba544800b 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -87,6 +87,23 @@ that text will be copied verbatim to `generated-autoload-file'.") (defconst generate-autoload-section-continuation ";;;;;; " "String to add on each continuation of the section header form.") +(defvar autoload-timestamps t + "Non-nil means insert a timestamp for each input file into the output. +We use these in incremental updates of the output file to decide +if we need to rescan an input file. If you set this to nil, +then we use the timestamp of the output file instead. As a result: + - for fixed inputs, the output will be the same every time + - incremental updates of the output file might not be correct if: + i) the timestamp of the output file cannot be trusted (at least + relative to that of the input files) + ii) any of the input files can be modified during the time it takes + to create the output + iii) only a subset of the input files are scanned + These issues are unlikely to happen in practice, and would arguably + represent bugs in the build system. Item iii) will happen if you + use a command like `update-file-autoloads', though, since it only + checks a single input file.") + (defvar autoload-modified-buffers) ;Dynamically scoped var. (defun make-autoload (form file &optional expansion) @@ -624,7 +641,9 @@ FILE's modification time." ;; We'd really want to just use ;; `emacs-internal' instead. nil nil 'emacs-mule-unix) - (nth 5 (file-attributes relfile)))) + (if autoload-timestamps + (nth 5 (file-attributes relfile)) + t))) (insert ";;; Generated autoloads from " relfile "\n"))) (insert generate-autoload-section-trailer)))) (or noninteractive @@ -688,6 +707,9 @@ removes any prior now out-of-date autoload entries." (catch 'up-to-date (let* ((buf (current-buffer)) (existing-buffer (if buffer-file-name buf)) + (output-file (autoload-generated-file)) + (output-time (if (file-exists-p output-file) + (nth 5 (file-attributes output-file)))) (found nil)) (with-current-buffer (autoload-find-generated-file) ;; This is to make generated-autoload-file have Unix EOLs, so @@ -712,16 +734,26 @@ removes any prior now out-of-date autoload entries." (file-time (nth 5 (file-attributes file)))) (if (and (or (null existing-buffer) (not (buffer-modified-p existing-buffer))) - (or + (cond ;; last-time is the time-stamp (specifying ;; the last time we looked at the file) and ;; the file hasn't been changed since. - (and (listp last-time) (= (length last-time) 2) - (not (time-less-p last-time file-time))) + ((listp last-time) + (not (time-less-p last-time file-time))) + ;; FIXME? Arguably we should throw a + ;; user error, or some kind of warning, + ;; if we were called from update-file-autoloads, + ;; which can update only a single input file. + ;; It's not appropriate to use the output + ;; file modtime in such a case, + ;; if there are multiple input files + ;; contributing to the output. + ((and output-time (eq t last-time)) + (not (time-less-p output-time file-time))) ;; last-time is an MD5 checksum instead. - (and (stringp last-time) - (equal last-time - (md5 buf nil nil 'emacs-mule))))) + ((stringp last-time) + (equal last-time + (md5 buf nil nil 'emacs-mule))))) (throw 'up-to-date nil) (autoload-remove-section begin) (setq found t)))) @@ -781,7 +813,10 @@ write its autoloads into the specified file instead." (generated-autoload-file (if (called-interactively-p 'interactive) (read-file-name "Write autoload definitions to file: ") - generated-autoload-file))) + generated-autoload-file)) + (output-time + (if (file-exists-p generated-autoload-file) + (nth 5 (file-attributes generated-autoload-file))))) (with-current-buffer (autoload-find-generated-file) (save-excursion @@ -799,6 +834,8 @@ write its autoloads into the specified file instead." ;; Remove the obsolete section. (autoload-remove-section (match-beginning 0)) (setq last-time (nth 4 form)) + (if (equal t last-time) + (setq last-time output-time)) (dolist (file file) (let ((file-time (nth 5 (file-attributes file)))) (when (and file-time @@ -814,7 +851,10 @@ write its autoloads into the specified file instead." (member (expand-file-name file) autoload-excludes)) ;; Remove the obsolete section. (autoload-remove-section (match-beginning 0))) - ((not (time-less-p (nth 4 form) + ((not (time-less-p (let ((oldtime (nth 4 form))) + (if (equal t oldtime) + output-time + oldtime)) (nth 5 (file-attributes file)))) ;; File hasn't changed. nil) @@ -847,7 +887,9 @@ write its autoloads into the specified file instead." (goto-char (point-max)) (search-backward "\f" nil t) (autoload-insert-section-header - (current-buffer) nil nil no-autoloads no-autoloads-time) + (current-buffer) nil nil no-autoloads (if autoload-timestamps + no-autoloads-time + t)) (insert generate-autoload-section-trailer))) (let ((version-control 'never)) diff --git a/lisp/linum.el b/lisp/linum.el index 4e0bc56877a..903586a4153 100644 --- a/lisp/linum.el +++ b/lisp/linum.el @@ -121,7 +121,7 @@ Linum mode is a buffer-local minor mode." (setq linum-overlays nil) (dolist (w (get-buffer-window-list (current-buffer) nil t)) ;; restore margins if needed FIXME: This still fails if the - ;; "other" mode has incidently set margins to exactly what linum + ;; "other" mode has incidentally set margins to exactly what linum ;; had: see bug#20674 for a similar workaround in nlinum.el (let ((set-margins (window-parameter w 'linum--set-margins)) (current-margins (window-margins w))) diff --git a/lisp/net/puny.el b/lisp/net/puny.el index f2fa3464348..b3a82a29328 100644 --- a/lisp/net/puny.el +++ b/lisp/net/puny.el @@ -30,7 +30,7 @@ (require 'seq) (defun puny-encode-domain (domain) - "Encode DOMAIN according to the IDNA/punycode algorith. + "Encode DOMAIN according to the IDNA/punycode algorithm. For instance, \"fśf.org\" => \"xn--ff-2sa.org\"." ;; The vast majority of domain names are not IDNA domain names, so ;; add a check first to avoid doing unnecessary work. @@ -54,7 +54,7 @@ For instance, \"bücher\" => \"xn--bcher-kva\"." (puny-encode-complex (length ascii) string))))) (defun puny-decode-domain (domain) - "Decode DOMAIN according to the IDNA/punycode algorith. + "Decode DOMAIN according to the IDNA/punycode algorithm. For instance, \"xn--ff-2sa.org\" => \"fśf.org\"." (mapconcat 'puny-decode-string (split-string domain "[.]") ".")) @@ -215,12 +215,12 @@ using homographs." #x058A ; ARMENIAN HYPHEN #x05F3 ; HEBREW PUNCTUATION GERESH #x05F4 ; HEBREW PUNCTUATION GERSHAYIM - #x0F0B ; IBETAN MARK INTERSYLLABIC TSHEG - #x200C ; ERO WIDTH NON-JOINER* - #x200D ; ERO WIDTH JOINER* - #x2010 ; YPHEN - #x2019 ; IGHT SINGLE QUOTATION MARK - #x2027 ; YPHENATION POINT + #x0F0B ; TIBETAN MARK INTERSYLLABIC TSHEG + #x200C ; ZERO WIDTH NON-JOINER* + #x200D ; ZERO WIDTH JOINER* + #x2010 ; HYPHEN + #x2019 ; RIGHT SINGLE QUOTATION MARK + #x2027 ; HYPHENATION POINT #x30A0 ; KATAKANA-HIRAGANA DOUBLE HYPHEN #x30FB)) ; KATAKANA MIDDLE DOT t diff --git a/lisp/org/ChangeLog.1 b/lisp/org/ChangeLog.1 index 35e6ef1eccd..2c78ce064d1 100644 --- a/lisp/org/ChangeLog.1 +++ b/lisp/org/ChangeLog.1 @@ -5285,7 +5285,7 @@ * ox-html.el (org-html-link): Don't skip the link description when it matches the name of the headline it targets. - * ox-ascii.el (ascii): Remove inexistant function. + * ox-ascii.el (ascii): Remove nonexistent function. * ox-icalendar.el (icalendar): Ignore footnotes. (org-icalendar--combine-files): Small refactoring. diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in index bfeef16571a..be12b4235b6 100644 --- a/lwlib/Makefile.in +++ b/lwlib/Makefile.in @@ -44,6 +44,7 @@ RANLIB=@RANLIB@ AR = @AR@ ARFLAGS = @ARFLAGS@ MKDIR_P = @MKDIR_P@ +EXEEXT = @EXEEXT@ LUCID_OBJS = lwlib-Xlw.o xlwmenu.o lwlib-Xaw.o MOTIF_OBJS = lwlib-Xm.o @@ -128,15 +129,17 @@ distclean: clean bootstrap-clean maintainer-clean: distclean rm -f TAGS +ETAGS = ../lib-src/etags${EXEEXT} -ETAGS = ../lib-src/etags +${ETAGS}: FORCE + ${MAKE} -C ../lib-src $(notdir $@) -ctagsfiles= $(srcdir)/*.[ch] +ctagsfiles= $(wildcard ${srcdir}/*.[ch]) -TAGS: $(ctagsfiles) - "$(ETAGS)" $(ctagsfiles) +FORCE: +.PHONY: tags FORCE tags: TAGS -.PHONY: tags - +TAGS: ${ETAGS} $(ctagsfiles) + ${ETAGS} $(ctagsfiles) ### Makefile.in ends here diff --git a/nt/Makefile.in b/nt/Makefile.in index fc6887f163e..86fca5f8e36 100644 --- a/nt/Makefile.in +++ b/nt/Makefile.in @@ -225,9 +225,18 @@ extraclean: maintainer-clean check: @echo "We don't have any tests for the nt/ directory yet." +ETAGS = ../lib-src/etags${EXEEXT} + +${ETAGS}: FORCE + ${MAKE} -C ../lib-src $(notdir $@) + +tagsfiles= $(wildcard ${srcdir}/*.[ch]) + +FORCE: +.PHONY: tags FORCE tags: TAGS -TAGS: ${EXE_FILES:${EXEEXT}=.c} - ../lib-src/etags *.[ch] +TAGS: ${ETAGS} ${tagsfiles} + ${ETAGS} ${tagsfiles} ## Build the programs addpm${EXEEXT}: ${srcdir}/addpm.c ../src/epaths.h diff --git a/oldXMenu/Makefile.in b/oldXMenu/Makefile.in index de5b8e1114c..71dd5663f43 100644 --- a/oldXMenu/Makefile.in +++ b/oldXMenu/Makefile.in @@ -58,12 +58,12 @@ CC=@CC@ CFLAGS=@CFLAGS@ CPPFLAGS = @CPPFLAGS@ -TAGS = etags RM = rm -f RANLIB = @RANLIB@ AR = @AR@ ARFLAGS = @ARFLAGS@ MKDIR_P = @MKDIR_P@ +EXEEXT = @EXEEXT@ OBJS = Activate.o \ AddPane.o \ @@ -152,8 +152,17 @@ clean mostlyclean: bootstrap-clean maintainer-clean distclean: clean rm -f Makefile -.PHONY: tags -tags: - $(TAGS) -t *.[ch] +ETAGS = ../lib-src/etags${EXEEXT} + +${ETAGS}: FORCE + ${MAKE} -C ../lib-src $(notdir $@) + +tagsfiles = $(wildcard ${srcdir}/*.[ch]) + +FORCE: +.PHONY: tags FORCE +tags: TAGS +TAGS: ${ETAGS} ${tagsfiles} + ${ETAGS} ${tagsfiles} ### Makefile.in ends here diff --git a/src/Makefile.in b/src/Makefile.in index f96ebb2aeeb..97505b98687 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -649,32 +649,34 @@ extraclean: distclean -rm -f *~ \#* -ETAGS = ../lib-src/etags +ETAGS = ../lib-src/etags${EXEEXT} -ctagsfiles1 = [xyzXYZ]*.[hc] -ctagsfiles2 = [a-wA-W]*.[hc] -ctagsfiles3 = [a-zA-Z]*.m +${ETAGS}: FORCE + ${MAKE} -C ../lib-src $(notdir $@) + +ctagsfiles1 = $(wildcard ${srcdir}/*.[hc]) +ctagsfiles2 = $(wildcard ${srcdir}/*.m) ## FIXME? In out-of-tree builds, should TAGS be generated in srcdir? ## This does not need to depend on ../lisp and ../lwlib TAGS files, ## because etags "--include" only includes a pointer to the file, ## rather than the file contents. -TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(srcdir)/$(ctagsfiles3) - "$(ETAGS)" --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \ +TAGS: ${ETAGS} $(ctagsfiles1) $(ctagsfiles2) + ${ETAGS} --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \ --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \ --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \ - $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) \ + $(ctagsfiles1) \ --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \ --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \ - $(srcdir)/$(ctagsfiles3) + $(ctagsfiles2) ## Arrange to make tags tables for ../lisp and ../lwlib, ## which the above TAGS file for the C files includes by reference. -../lisp/TAGS: +../lisp/TAGS: FORCE $(MAKE) -C ../lisp TAGS ETAGS="$(ETAGS)" -$(lwlibdir)/TAGS: +$(lwlibdir)/TAGS: FORCE $(MAKE) -C $(lwlibdir) TAGS ETAGS="$(ETAGS)" tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS diff --git a/src/emacs.c b/src/emacs.c index 926aa989e6a..d13413d880b 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -370,17 +370,20 @@ terminate_due_to_signal (int sig, int backtrace_limit) { signal (sig, SIG_DFL); - /* If fatal error occurs in code below, avoid infinite recursion. */ - if (! fatal_error_in_progress) + if (attempt_orderly_shutdown_on_fatal_signal) { - fatal_error_in_progress = 1; + /* If fatal error occurs in code below, avoid infinite recursion. */ + if (! fatal_error_in_progress) + { + fatal_error_in_progress = 1; - totally_unblock_input (); - if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT) - Fkill_emacs (make_number (sig)); + totally_unblock_input (); + if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT) + Fkill_emacs (make_number (sig)); - shut_down_emacs (sig, Qnil); - emacs_backtrace (backtrace_limit); + shut_down_emacs (sig, Qnil); + emacs_backtrace (backtrace_limit); + } } /* Signal the same code; this time it will really be fatal. diff --git a/src/keyboard.c b/src/keyboard.c index 6fa38aa1328..eb2c7563afd 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -11659,6 +11659,25 @@ Currently, the only supported values for this variable are `sigusr1' and `sigusr2'. */); Vdebug_on_event = intern_c_string ("sigusr2"); + DEFVAR_BOOL ("attempt-stack-overflow-recovery", + attempt_stack_overflow_recovery, + doc: /* If non-nil, attempt to recover from C stack +overflow. This recovery is unsafe and may lead to deadlocks or data +corruption, but it usually works and may preserve modified buffers +that would otherwise be lost. If nil, treat stack overflow like any +other kind of crash. */); + attempt_stack_overflow_recovery = true; + + DEFVAR_BOOL ("attempt-orderly-shutdown-on-fatal-signal", + attempt_orderly_shutdown_on_fatal_signal, + doc: /* If non-nil, attempt to perform an orderly +shutdown when Emacs receives a fatal signal (e.g., a crash). +This cleanup is unsafe and may lead to deadlocks or data corruption, +but it usually works and may preserve modified buffers that would +otherwise be lost. If nil, crash immediately in response to fatal +signals. */); + attempt_orderly_shutdown_on_fatal_signal = true; + /* Create the initial keyboard. Qt means 'unset'. */ initial_kboard = allocate_kboard (Qt); } diff --git a/src/kqueue.c b/src/kqueue.c index 1830040637e..e0ee5fb9d7b 100644 --- a/src/kqueue.c +++ b/src/kqueue.c @@ -257,7 +257,7 @@ kqueue_compare_dir_list /* At this point, old_dl, new_dl and pending_dl shall be empty. deleted_dl might not be empty when there was a rename to a - nonexisting file. Let's make a check for this (might be removed + nonexistent file. Let's make a check for this (might be removed once the code is stable). */ if (! NILP (old_dl)) report_file_error ("Old list not empty", old_dl); diff --git a/src/sysdep.c b/src/sysdep.c index 1af323eb8d6..a29155c144a 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1622,6 +1622,9 @@ static unsigned char sigsegv_stack[SIGSTKSZ]; static bool stack_overflow (siginfo_t *siginfo) { + if (!attempt_stack_overflow_recovery) + return false; + /* In theory, a more-accurate heuristic can be obtained by using GNU/Linux pthread_getattr_np along with POSIX pthread_attr_getstack and pthread_attr_getguardsize to find the location and size of the diff --git a/test/automated/url-parse-tests.el b/test/automated/url-parse-tests.el deleted file mode 100644 index 443034a603e..00000000000 --- a/test/automated/url-parse-tests.el +++ /dev/null @@ -1,167 +0,0 @@ -;;; url-parse-tests.el --- Test suite for URI/URL parsing. - -;; Copyright (C) 2012-2015 Free Software Foundation, Inc. - -;; Author: Alain Schneble -;; Version: 1.0 - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see . - -;;; Commentary: - -;; Test cases covering generic URI syntax as described in RFC3986, -;; section 3. Syntax Components and 4. Usage. See also appendix -;; A. Collected ABNF for URI, as the example given here are all -;; productions of this grammar. - -;; Each tests parses a given URI string - whether relative or absolute - -;; using `url-generic-parse-url' and compares the constructed -;; URL-struct (Actual) against a manually `url-parse-make-urlobj'- -;; constructed URL-struct (Expected). - -;;; Code: - -(require 'url-parse) -(require 'ert) - -(ert-deftest url-generic-parse-url/generic-uri-examples () - "RFC 3986, section 1.1.2. Examples / Example illustrating several URI schemes and variations in their common syntax components" - (should (equal (url-generic-parse-url "ftp://ftp.is.co.za/rfc/rfc1808.txt") (url-parse-make-urlobj "ftp" nil nil "ftp.is.co.za" nil "/rfc/rfc1808.txt" nil nil t))) - (should (equal (url-generic-parse-url "http://www.ietf.org/rfc/rfc2396.txt") (url-parse-make-urlobj "http" nil nil "www.ietf.org" nil "/rfc/rfc2396.txt" nil nil t))) - (should (equal (url-generic-parse-url "ldap://[2001:db8::7]/c=GB?objectClass?one") (url-parse-make-urlobj "ldap" nil nil "[2001:db8::7]" nil "/c=GB?objectClass?one" nil nil t))) - (should (equal (url-generic-parse-url "mailto:John.Doe@example.com") (url-parse-make-urlobj "mailto" nil nil nil nil "John.Doe@example.com" nil nil nil))) - (should (equal (url-generic-parse-url "news:comp.infosystems.www.servers.unix") (url-parse-make-urlobj "news" nil nil nil nil "comp.infosystems.www.servers.unix" nil nil nil))) - (should (equal (url-generic-parse-url "tel:+1-816-555-1212") (url-parse-make-urlobj "tel" nil nil nil nil "+1-816-555-1212" nil nil nil))) - (should (equal (url-generic-parse-url "telnet://192.0.2.16:80/") (url-parse-make-urlobj "telnet" nil nil "192.0.2.16" 80 "/" nil nil t))) - (should (equal (url-generic-parse-url "urn:oasis:names:specification:docbook:dtd:xml:4.1.2") (url-parse-make-urlobj "urn" nil nil nil nil "oasis:names:specification:docbook:dtd:xml:4.1.2" nil nil nil)))) - -(ert-deftest url-generic-parse-url/generic-uri () - "RFC 3986, section 3. Syntax Components / generic URI syntax" - ;; empty path - (should (equal (url-generic-parse-url "http://host#") (url-parse-make-urlobj "http" nil nil "host" nil "" "" nil t))) - (should (equal (url-generic-parse-url "http://host#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host?#") (url-parse-make-urlobj "http" nil nil "host" nil "?" "" nil t))) - (should (equal (url-generic-parse-url "http://host?query#") (url-parse-make-urlobj "http" nil nil "host" nil "?query" "" nil t))) - (should (equal (url-generic-parse-url "http://host?#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "?" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host?query#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "?query" "fragment" nil t))) - ;; absolute path / - (should (equal (url-generic-parse-url "http://host/#") (url-parse-make-urlobj "http" nil nil "host" nil "/" "" nil t))) - (should (equal (url-generic-parse-url "http://host/#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/?#") (url-parse-make-urlobj "http" nil nil "host" nil "/?" "" nil t))) - (should (equal (url-generic-parse-url "http://host/?query#") (url-parse-make-urlobj "http" nil nil "host" nil "/?query" "" nil t))) - (should (equal (url-generic-parse-url "http://host/?#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/?" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/?query#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/?query" "fragment" nil t))) - ;; absolute path /foo - (should (equal (url-generic-parse-url "http://host/foo#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo?#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo?" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo?query#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo?query" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo?#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo?" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo?query#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo?query" "fragment" nil t))) - ;; absolute path /foo/ - (should (equal (url-generic-parse-url "http://host/foo/#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/?#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/?" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/?query#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/?query" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/?#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/?" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/?query#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/?query" "fragment" nil t))) - ;; absolute path /foo/bar - (should (equal (url-generic-parse-url "http://host/foo/bar#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar?#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar?" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar?query#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar?query" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar?#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar?" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar?query#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar?query" "fragment" nil t))) - ;; absolute path /foo/bar/ - (should (equal (url-generic-parse-url "http://host/foo/bar/#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/?#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/?" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/?query#") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/?query" "" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/?#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/?" "fragment" nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/?query#fragment") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/?query" "fragment" nil t))) - ;; for more examples of URIs without fragments, see tests covering section 4.3. Absolute URI - ) - -(ert-deftest url-generic-parse-url/network-path-reference () - "RFC 3986, section 4.2. Relative Reference / network-path reference: a relative reference that begins with two slash characters" - (should (equal (url-generic-parse-url "//host") (url-parse-make-urlobj nil nil nil "host" nil "" nil nil t))) - (should (equal (url-generic-parse-url "//host/") (url-parse-make-urlobj nil nil nil "host" nil "/" nil nil t))) - (should (equal (url-generic-parse-url "//host/foo") (url-parse-make-urlobj nil nil nil "host" nil "/foo" nil nil t))) - (should (equal (url-generic-parse-url "//host/foo/bar") (url-parse-make-urlobj nil nil nil "host" nil "/foo/bar" nil nil t))) - (should (equal (url-generic-parse-url "//host/foo/bar/") (url-parse-make-urlobj nil nil nil "host" nil "/foo/bar/" nil nil t)))) - -(ert-deftest url-generic-parse-url/absolute-path-reference () - "RFC 3986, section 4.2. Relative Reference / absolute-path reference: a relative reference that begins with a single slash character" - (should (equal (url-generic-parse-url "/") (url-parse-make-urlobj nil nil nil nil nil "/" nil nil nil))) - (should (equal (url-generic-parse-url "/foo") (url-parse-make-urlobj nil nil nil nil nil "/foo" nil nil nil))) - (should (equal (url-generic-parse-url "/foo/bar") (url-parse-make-urlobj nil nil nil nil nil "/foo/bar" nil nil nil))) - (should (equal (url-generic-parse-url "/foo/bar/") (url-parse-make-urlobj nil nil nil nil nil "/foo/bar/" nil nil nil))) - (should (equal (url-generic-parse-url "/foo/bar#") (url-parse-make-urlobj nil nil nil nil nil "/foo/bar" "" nil nil))) - (should (equal (url-generic-parse-url "/foo/bar/#") (url-parse-make-urlobj nil nil nil nil nil "/foo/bar/" "" nil nil)))) - -(ert-deftest url-generic-parse-url/relative-path-reference () - "RFC 3986, section 4.2. Relative Reference / relative-path reference: a relative reference that does not begin with a slash character" - (should (equal (url-generic-parse-url "foo") (url-parse-make-urlobj nil nil nil nil nil "foo" nil nil nil))) - (should (equal (url-generic-parse-url "foo/bar") (url-parse-make-urlobj nil nil nil nil nil "foo/bar" nil nil nil))) - (should (equal (url-generic-parse-url "foo/bar/") (url-parse-make-urlobj nil nil nil nil nil "foo/bar/" nil nil nil))) - (should (equal (url-generic-parse-url "./foo") (url-parse-make-urlobj nil nil nil nil nil "./foo" nil nil nil))) - (should (equal (url-generic-parse-url "./foo/bar") (url-parse-make-urlobj nil nil nil nil nil "./foo/bar" nil nil nil))) - (should (equal (url-generic-parse-url "./foo/bar/") (url-parse-make-urlobj nil nil nil nil nil "./foo/bar/" nil nil nil))) - (should (equal (url-generic-parse-url "../foo") (url-parse-make-urlobj nil nil nil nil nil "../foo" nil nil nil))) - (should (equal (url-generic-parse-url "../foo/bar") (url-parse-make-urlobj nil nil nil nil nil "../foo/bar" nil nil nil))) - (should (equal (url-generic-parse-url "../foo/bar/") (url-parse-make-urlobj nil nil nil nil nil "../foo/bar/" nil nil nil))) - (should (equal (url-generic-parse-url "./this:that") (url-parse-make-urlobj nil nil nil nil nil "./this:that" nil nil nil))) - ;; for more examples of relative-path references, see tests covering section 4.4. Same-Document Reference - ) - -(ert-deftest url-generic-parse-url/absolute-uri () - "RFC 3986, section 4.3. Absolute URI / absolute URI: absolute form of a URI without a fragment identifier" - ;; empty path - (should (equal (url-generic-parse-url "http://host") (url-parse-make-urlobj "http" nil nil "host" nil "" nil nil t))) - (should (equal (url-generic-parse-url "http://host?") (url-parse-make-urlobj "http" nil nil "host" nil "?" nil nil t))) - (should (equal (url-generic-parse-url "http://host?query") (url-parse-make-urlobj "http" nil nil "host" nil "?query" nil nil t))) - ;; absolute path / - (should (equal (url-generic-parse-url "http://host/") (url-parse-make-urlobj "http" nil nil "host" nil "/" nil nil t))) - (should (equal (url-generic-parse-url "http://host/?") (url-parse-make-urlobj "http" nil nil "host" nil "/?" nil nil t))) - (should (equal (url-generic-parse-url "http://host/?query") (url-parse-make-urlobj "http" nil nil "host" nil "/?query" nil nil t))) - ;; absolute path /foo - (should (equal (url-generic-parse-url "http://host/foo") (url-parse-make-urlobj "http" nil nil "host" nil "/foo" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo?") (url-parse-make-urlobj "http" nil nil "host" nil "/foo?" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo?query") (url-parse-make-urlobj "http" nil nil "host" nil "/foo?query" nil nil t))) - ;; absolute path /foo/ - (should (equal (url-generic-parse-url "http://host/foo/") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo/?") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/?" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo/?query") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/?query" nil nil t))) - ;; absolute path /foo/bar - (should (equal (url-generic-parse-url "http://host/foo/bar") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar?") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar?" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar?query") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar?query" nil nil t))) - ;; absolute path /foo/bar/ - (should (equal (url-generic-parse-url "http://host/foo/bar/") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/?") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/?" nil nil t))) - (should (equal (url-generic-parse-url "http://host/foo/bar/?query") (url-parse-make-urlobj "http" nil nil "host" nil "/foo/bar/?query" nil nil t))) - ;; example mentioned in RFC3986, section 5.4. Reference Resolution Examples - (should (equal (url-generic-parse-url "http://a/b/c/d;p?q") (url-parse-make-urlobj "http" nil nil "a" nil "/b/c/d;p?q" nil nil t)))) - -(ert-deftest url-generic-parse-url/same-document-reference () - "RFC 3986, section 4.4. Same-Document Reference / same-document reference: empty or number sign (\"#\") followed by a fragment identifier" - (should (equal (url-generic-parse-url "") (url-parse-make-urlobj nil nil nil nil nil "" nil nil nil))) - (should (equal (url-generic-parse-url "#") (url-parse-make-urlobj nil nil nil nil nil "" "" nil nil))) - (should (equal (url-generic-parse-url "#foo") (url-parse-make-urlobj nil nil nil nil nil "" "foo" nil nil)))) - -(provide 'url-parse-tests) - -;;; url-parse-tests.el ends here diff --git a/test/file-organisation.org b/test/file-organisation.org index b7540001cc4..226e12d5330 100644 --- a/test/file-organisation.org +++ b/test/file-organisation.org @@ -50,5 +50,5 @@ directory as the feature. Hence, the lisp file ~flymake.el~ should have test files in ~/test/automated/lisp/progmodes/flymake-tests.el~ should reside in a directory called ~/test/automated/lisp/progmodes/flymake-resources~. -No guidance is given for the organisation of resource files inside the -~-resource~ directory; files can be organised at the author's discretion. +No guidance is given for the organization of resource files inside the +~-resource~ directory; files can be organized at the author's discretion. diff --git a/test/automated/data/package/macro-problem-package-1.0/macro-aux.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-aux.el similarity index 100% rename from test/automated/data/package/macro-problem-package-1.0/macro-aux.el rename to test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-aux.el diff --git a/test/automated/data/package/macro-problem-package-1.0/macro-problem.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-problem.el similarity index 100% rename from test/automated/data/package/macro-problem-package-1.0/macro-problem.el rename to test/lisp/emacs-lisp/package-resources/macro-problem-package-1.0/macro-problem.el diff --git a/test/automated/data/package/macro-problem-package-2.0/macro-aux.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-aux.el similarity index 100% rename from test/automated/data/package/macro-problem-package-2.0/macro-aux.el rename to test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-aux.el diff --git a/test/automated/data/package/macro-problem-package-2.0/macro-problem.el b/test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-problem.el similarity index 100% rename from test/automated/data/package/macro-problem-package-2.0/macro-problem.el rename to test/lisp/emacs-lisp/package-resources/macro-problem-package-2.0/macro-problem.el diff --git a/test/lisp/emacs-lisp/package-tests.el b/test/lisp/emacs-lisp/package-tests.el index 7206084f324..f8e05721255 100644 --- a/test/lisp/emacs-lisp/package-tests.el +++ b/test/lisp/emacs-lisp/package-tests.el @@ -244,7 +244,7 @@ Must called from within a `tar-mode' buffer." (ert-deftest package-test-macro-compilation () "Install a package which includes a dependency." - (with-package-test (:basedir "data/package") + (with-package-test (:basedir "package-resources") (package-install-file (expand-file-name "macro-problem-package-1.0/")) (require 'macro-problem) ;; `macro-problem-func' uses a macro from `macro-aux'. diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index d6322c22c0e..376904dd65c 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -136,7 +136,7 @@ being the result.") (cdr file-notify--test-remote-enabled-checked)) (defun file-notify--test-library () - "The used libray for the test, as string. + "The used library for the test, as a string. In the remote case, it is the process name which runs on the remote host, or nil." (if (null (file-remote-p temporary-file-directory)) diff --git a/test/automated/url-expand-tests.el b/test/lisp/url/url-expand-tests.el similarity index 100% rename from test/automated/url-expand-tests.el rename to test/lisp/url/url-expand-tests.el diff --git a/test/lisp/url/url-parse-tests.el b/test/lisp/url/url-parse-tests.el index 154e0917a43..443034a603e 100644 --- a/test/lisp/url/url-parse-tests.el +++ b/test/lisp/url/url-parse-tests.el @@ -156,7 +156,7 @@ ;; example mentioned in RFC3986, section 5.4. Reference Resolution Examples (should (equal (url-generic-parse-url "http://a/b/c/d;p?q") (url-parse-make-urlobj "http" nil nil "a" nil "/b/c/d;p?q" nil nil t)))) -(ert-deftest url-generic-parse-url/same-decument-reference () +(ert-deftest url-generic-parse-url/same-document-reference () "RFC 3986, section 4.4. Same-Document Reference / same-document reference: empty or number sign (\"#\") followed by a fragment identifier" (should (equal (url-generic-parse-url "") (url-parse-make-urlobj nil nil nil nil nil "" nil nil nil))) (should (equal (url-generic-parse-url "#") (url-parse-make-urlobj nil nil nil nil nil "" "" nil nil))) diff --git a/test/etags/lua-src/test.lua b/test/manual/etags/lua-src/test.lua similarity index 100% rename from test/etags/lua-src/test.lua rename to test/manual/etags/lua-src/test.lua diff --git a/test/etags/ruby-src/test.rb b/test/manual/etags/ruby-src/test.rb similarity index 100% rename from test/etags/ruby-src/test.rb rename to test/manual/etags/ruby-src/test.rb diff --git a/test/etags/ruby-src/test1.ruby b/test/manual/etags/ruby-src/test1.ruby similarity index 100% rename from test/etags/ruby-src/test1.ruby rename to test/manual/etags/ruby-src/test1.ruby