mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-02 08:22:22 +00:00
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
This commit is contained in:
commit
f368054246
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.])
|
||||
;;
|
||||
|
84
etc/NEWS
84
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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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))
|
||||
|
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
19
src/emacs.c
19
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.
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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 <a.s@realize.ch>
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; 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
|
@ -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.
|
||||
|
@ -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'.
|
||||
|
@ -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))
|
||||
|
@ -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)))
|
||||
|
Loading…
Reference in New Issue
Block a user