Commit 1fc6afbd authored by Glenn Morris's avatar Glenn Morris
Browse files

Merge from origin/emacs-26

24b6e6ed (origin/emacs-26) * etc/AUTHORS: Update.
2f22a179 * ; ChangeLog.3 update
0f523dee Improve indexing of the user manual
bd5795e0 Fix url-copy-file arglist
eaa188a6 ; * admin/notes/bugtracker: Minor additions and updates.
5ed05fbf Fix downloading updates for packages with non-ASCII descriptions
e9f2d1f9 * etc/NEWS: Remove temporary markers.
24fc1337 * doc/misc/cc-mode.texi (Config Basics): in @itemize, @asis -...
0f325d19 Don't clobber 'comint-input-autoexpand' in 'read-shell-command'
bc75589b Document restrictions when setting window margins, fringes or...
cc4cebf5 More improvements for 'read-buffer's doc string
d026d9ad * lisp/progmodes/cc-defs.el: Update c-version to 5.33.2 for E...
5dbf08bf * src/minibuf.c (Fread_buffer): Minor doc fixes.  (Bug#34749)

# Conflicts:
#	etc/NEWS
#	lisp/url/url-handlers.el
parents 99b3d64e 24b6e6ed
Pipeline #1038 passed with stage
in 51 minutes and 7 seconds
2019-03-20 Eli Zaretskii <>
Improve indexing of the user manual
* doc/emacs/search.texi (Word Search): Improve indexing of
"M-s M-w".
2019-03-19 Basil L. Contovounesios <>
Fix url-copy-file arglist
* lisp/url/url-handlers.el: Silence byte-compiler.
(url-copy-file): Add 6th argument following change to copy-file in
2012-12-16T19:22:27+01:00! (bug#4410)
2019-03-19 Eli Zaretskii <>
Fix downloading updates for packages with non-ASCII descriptions
* lisp/emacs-lisp/package.el (package--download-one-archive):
Make sure archive contents are written using UTF-8 encoding.
(list-packages): Set buffer's encoding to UTF-8.
2019-03-18 Nicolas Petton <>
* etc/NEWS: Remove temporary markers.
2019-03-15 Alan Mackenzie <>
* doc/misc/cc-mode.texi (Config Basics): in @itemize, @asis -> @w{}
2019-03-15 Eli Zaretskii <>
Don't clobber 'comint-input-autoexpand' in 'read-shell-command'
* lisp/shell.el (shell-completion-vars): Set only the
buffer-local value of 'comint-input-autoexpand'. (Bug#34815)
2019-03-13 Martin Rudalics <>
Document restrictions when setting window margins, fringes or scroll bars
* src/window.c (Fset_window_margins, Fset_window_fringes)
(Fset_window_scroll_bars): In doc-strings tell that a window
must be large enough to accommodate fringes, sroll bars and
margins of the desired size.
* doc/lispref/display.texi (Fringe Size/Pos, Scroll Bars)
(Display Margins): Tell that windows must be large enough to
accommodate fringes, sroll bars and margins of the desired
2019-03-10 Eli Zaretskii <>
More improvements for 'read-buffer's doc string
* src/minibuf.c (Fread_buffer): Further improve the doc
string. (Bug#347694)
2019-03-10 Alan Mackenzie <>
* lisp/progmodes/cc-defs.el: Update c-version to 5.33.2 for Emacs 26.2
2019-03-09 Eli Zaretskii <>
* src/minibuf.c (Fread_buffer): Minor doc fixes. (Bug#34749)
2019-03-09 Eli Zaretskii <>
Fix markup of fake keys in the ELisp manual
* doc/lispref/keymaps.texi (Menu Bar, Tool Bar): Fix markup of
fake keys. (Bug#34785)
2019-03-09 Eli Zaretskii <>
Avoid errors in Auto Revert mode
* lisp/autorevert.el (auto-revert-buffers): Cancel
auto-revert-timer only if it is non-nil. This avoids errors
on first invocation of Auto-Revert mode.
2019-03-09 Michael Albinus <>
Mention empty strings in file name expansion, emacs lisp reference
* doc/lispref/files.texi (Files, File Name Expansion):
Mention also empty strings.
2019-03-08 Alan Mackenzie <>
cc-mode.texi: Work around makeinfo alignment bug. Fix problem with ss index
* doc/misc/cc-mode.texi (top level): Using txicommandconditionals to
differentiate between the C and perl versions of Texinfo, create an "ss
index" unless we are both using the C Texinfo and are building the .dvi output
(Config Basics): Work around a perl Texinfo alignment bug by writing a
separate version of an item list structure for this version, simplifying it
2019-03-08 Martin Rudalics <>
Warn against recursive invocations of 'buffer-list-update-hook' (Bug#34765)
* src/buffer.c (Vbuffer_list_update_hook):
* doc/lispref/buffers.texi (Buffer List): Warn against
recursive invocations of 'buffer-list-update-hook' (Bug#34765).
2019-03-08 Martin Rudalics <>
Provide more details in doc-string of 'delete-windows-on' (Bug#34749)
* lisp/window.el (delete-windows-on): Provide more details in
doc-string (Bug#34749).
2019-03-08 Eli Zaretskii <>
Improve documentation of 'delete-windows-on'
* doc/emacs/windows.texi (Change Window): Document
* lisp/window.el (delete-windows-on): Doc fix. (Bug#34749)
2019-03-08 Eli Zaretskii <>
* lisp/frame.el (make-frame-command): Doc fix. (Bug#34715)
2019-03-07 Eli Zaretskii <>
Avoid undefined behavior in gdb-mi.el
* lisp/progmodes/gdb-mi.el (gdb-send): Don't call match-string
if this is not a control command. (Bug#34769)
2019-03-06 Martin Rudalics <>
* lisp/window.el (fit-frame-to-buffer): Make doc-string more accurate.
2019-03-05 Basil L. Contovounesios <>
Minor spelling and grammar fixes (bug#34756)
doc/misc/cc-mode.texi (Style Variables, Customizing Indentation):
doc/misc/ede.texi (Extending EDE, ede-project-placeholder)
(ede-target, ede-proj-target, ede-compilation-program, ede-compiler)
(ede-linker): Remove apostrophe from possessive "it's".
doc/lispintro/emacs-lisp-intro.texi (Find a File):
doc/misc/gnus-faq.texi (FAQ 2-2): Write "an other" as a single word.
doc/misc/gnus.texi (Article Buttons):
lisp/gnus/gnus-art.el (gnus-button-mid-or-mail-heuristic-alist)
(gnus-button-mid-or-mail-heuristic): Write singular number of
Message-IDs, rather than plural.
lisp/gnus/message.el (message-user-fqdn): Capitalize initialism.
2019-03-04 Eli Zaretskii <>
Minor improvement of documentation of '(when CONDITION . SPEC)'
* doc/lispref/display.texi (Other Display Specs): Add a caveat
to using the '(when CONDITION . SPEC)' display specs.
2019-03-02 Eli Zaretskii <>
Improve documentation of 'auto-coding-functions'
* doc/lispref/nonascii.texi (Default Coding Systems): Clarify
that the functions in 'auto-coding-functions' are called both
for decoding and for encoding.
* lisp/international/mule.el (auto-coding-functions): Doc fix.
2019-03-02 Eli Zaretskii <>
Fix visiting XML files with non-Unix EOL format
* lisp/international/mule.el (sgml-xml-auto-coding-function)
(sgml-html-meta-auto-coding-function): Don't use
'buffer-file-coding-system' if the buffer is unibyte.
2019-03-02 Basil L. Contovounesios <>
Update example major mode code in Elisp manual
* doc/lispref/modes.texi (Example Major Modes): Update code examples
to reflect current state of lisp/textmodes/text-mode.el and
lisp/emacs-lisp/lisp-mode.el. (bug#34671)
2019-03-01 Eli Zaretskii <>
Fix a typo in the Calc manual
* doc/misc/calc.texi (Algebraic Tutorial): Fix parentheses in
@example. (Bug#34689)
2019-03-01 Eli Zaretskii <>
Minor improvement in cross-references of the ELisp manual
* doc/lispref/modes.texi (Minor Mode Conventions): Add
cross-references to related major-mode descriptions. (Bug#34678)
2019-03-01 Tobias Bading <> (tiny change)
Fix last change on 'compilation-parse-errors'
* lisp/progmodes/compile.el (compilation-parse-errors): Fix
previous change in this function. (Bug#34479)
2019-02-25 Dmitry Gutov <>
Backport: js--re-search-backward-inner: Fix infloop
Fix JS indentation infloop reported in
* lisp/progmodes/js.el (js--re-search-backward-inner): Account for
multiline string literals.
* test/manual/indent/js.js: New test example.
(cherry picked from commit b01a4295c2f9bb58858880e4e28b05cc8396791c)
2019-02-23 Eli Zaretskii <>
Minor improvement for docs of completion
* doc/lispref/minibuf.texi (Completion Commands)
(Completion in Buffers, Programmed Completion): Add to text
that references completion tables a cross-reference to where
"completion table" is described.
(Programmed Completion): Fix the description of
'completion-table-dynamic'. Add more cross-references.
2019-02-22 Ken Brown <>
Disable the timerfd interface on Cygwin
* (emacs_cv_have_timerfd): Set to "no" on Cygwin.
2019-02-22 Eli Zaretskii <>
Fix a typo in the doc string of 'regex-opt'
* lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix example in
the doc string. (Bug#34596)
2019-02-21 Michael Albinus <>
Document bash 5.0.0 misbehavior in tramp.texi (Bug#34192)
* doc/misc/tramp.texi (Frequently Asked Questions): Warn about
bash 5.0.0 and HISTSIZE=0. (Bug#34192)
2019-02-20 Nicolas Petton <>
Bump Emacs version to 26.1.92
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 26.1.92.
2019-02-20 Nicolas Petton <>
* ; ChangeLog.3 update
* etc/AUTHORS: Update.
2019-02-20 Glenn Morris <>
Remove .art from the default list of ImageMagick extensions
......@@ -64676,7 +64946,7 @@
This file records repository revisions from
commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
commit a19bfb7a5e3557a69824cdbe7d414f5ef422555c (inclusive).
commit 0f523deec1c1e9e2a5a3474f912aa2183d3fe33d (inclusive).
See ChangeLog.1 for earlier changes.
;; Local Variables:
......@@ -241,21 +241,29 @@ report, and Bcc: the control server (note the commands have no effect
if you just send them to the bug-report number). Bcc: is better than Cc:
in case people use Reply-To-All in response.
For the full documentation of control commands, see
Some useful control commands:
*** To close a bug and indicate in what Emacs version it was fixed
close 123 VERSION
where VERSION is XX.YY numerical version number, like 42.1.
*** To reopen a closed bug:
reopen 123
*** Bugs can be tagged in various ways (eg wontfix, patch, etc).
The available tags are:
patch wontfix moreinfo unreproducible fixed notabug
patch wontfix moreinfo unreproducible fixed notabug security confirmed
The list of tags can be prefixed with +, - or =, meaning to add (the
default), remove, or reset the tags. E.g.:
tags 123 + wontfix
** URL shortcuts
*** URL shortcuts
......@@ -266,7 +274,7 @@ from:submitter@email.address
severity:severity # all bugs of given severity
tag:tag # all bugs with given tag
** Usertags
*** Usertags
See <>
......@@ -410,21 +418,21 @@ reassign 1234 emacs
Note that reassigning clears the list of found versions, even if the
new packages includes the original one.
** To remove spam from the tracker, move it to the 'spam' pseudo-package:
*** To remove spam from the tracker, move it to the 'spam' pseudo-package:
reassign 123 spam
(Should not be necessary any more, now that the input is moderated.)
** To change the title of a bug:
*** To change the title of a bug:
retitle 123 Some New Title
** To change the submitter address:
*** To change the submitter address:
submitter 123
Note that it does not seem to work to specify "Submitter:" in the
pseudo-header when first reporting a bug.
** How does archiving work?
*** How does archiving work?
You can still send mail to a bug after it is closed. After 28 days with
no activity, the bug is archived, at which point no more changes can
be made. If you try to send mail to the bug after that (or merge with
......@@ -684,6 +684,8 @@ matching}) has no effect on them.
@kindex M-s M-w
@findex eww-search-words
@vindex eww-search-prefix
@cindex Internet search
@cindex search Internet for keywords
To search the Web for the text in region, type @kbd{M-s M-w}. This
command performs an Internet search for the words in region using the
search engine whose @acronym{URL} is specified by the variable
......@@ -3957,6 +3957,9 @@ fringe, and likewise @var{right} for the right fringe. A value of
@var{outside-margins} is non-@code{nil}, that specifies that fringes
should appear outside of the display margins.
If @var{window} is not large enough to accommodate fringes of the
desired width, this leaves the fringes of @var{window} unchanged.
The values specified here may be later overridden by invoking
@code{set-window-buffer} (@pxref{Buffers and Windows}) on @var{window}
with its @var{keep-margins} argument @code{nil} or omitted.
......@@ -4378,6 +4381,9 @@ vertical scroll bar.
The possible values are @code{bottom}, @code{t}, which means to use the
frame's default, and @code{nil} for no horizontal scroll bar.
If @var{window} is not large enough to accommodate a scroll bar of the
desired dimension, this leaves the corresponding scroll bar unchanged.
The values specified here may be later overridden by invoking
@code{set-window-buffer} (@pxref{Buffers and Windows}) on @var{window}
with its @var{keep-margins} argument @code{nil} or omitted.
......@@ -4967,6 +4973,9 @@ This function specifies the margin widths for window @var{window}, in
character cell units. The argument @var{left} controls the left
margin, and @var{right} controls the right margin (default @code{0}).
If @var{window} is not large enough to accommodate margins of the
desired width, this leaves the margins of @var{window} unchanged.
The values specified here may be later overridden by invoking
@code{set-window-buffer} (@pxref{Buffers and Windows}) on @var{window}
with its @var{keep-margins} argument @code{nil} or omitted.
......@@ -2307,7 +2307,7 @@ that takes precedence is the one that appears latest in this list:
@end ifclear
@c Version of list for Texinfo >= 5.x
@ifset txicommandconditionals
@itemize @asis
@itemize @w{}
@item Style
@item File Style@footnote{In earlier versions of @ccmode{}, a File Style setting took precedence over any other setting apart from a File Local Variable setting.}
@item Top-level command or ``customization interface''
......@@ -442,8 +442,8 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el
Basil L. Contovounesios: changed simple.el message.el sequences.texi
bibtex.el css-mode-tests.el css-mode.el customize.texi display.texi
gnus-art.el json-tests.el json.el lists.texi man.el rcirc.el
shr-color.el text.texi
gnus-art.el json-tests.el json.el lists.texi man.el modes.texi rcirc.el
shr-color.el text.texi url-handlers.el
Bastian Beischer: changed include.el mru-bookmark.el refs.el
semantic/complete.el senator.el
......@@ -1355,7 +1355,7 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c]
and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el
files.el fileio.c keyboard.c w32proc.c files.texi w32term.c text.texi
dispnew.c frames.texi emacs.c dispextern.h lisp.h process.c term.c
window.c and 1124 other files
window.c and 1125 other files
Emanuele Giaquinta: changed rxvt.el charset.c etags.c
fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el
......@@ -3598,7 +3598,7 @@ Nicolas Graner: changed message.el
Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el
thunk-tests.el thunk.el
and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el
and changed README sequences.texi sed2v2.inp authors.el
and changed README sed2v2.inp sequences.texi authors.el
README.W32 emacs.png emacs23.png arc-mode.el cl-extra.el emacs.svg
manoj-dark-theme.el Emacs.icns HISTORY auth-source.el
emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el
......@@ -4846,6 +4846,8 @@ and changed ibuffer.el dired-tests.el ibuf-ext.el dired.el dired-aux.el
Titus von der Malsburg: changed simple.el window.el
Tobias Bading: changed progmodes/compile.el
Tobias C. Rittweiler: changed font-lock.el searching.texi sendmail.el
Tobias Ringström: changed etags.c
......@@ -18,14 +18,12 @@ with a prefix argument or by typing 'C-u C-h C-n'.
* Installation Changes in Emacs 26.2
** Building Emacs with the '--with-xwidgets' option now requires WebKit2.
To build Emacs with xwidgets support, you will need to install the
webkit2gtk-4.0 package; version 2.12 or later is required.
(This change was actually made in Emacs 26.1, but was not called out
in its NEWS.)
** Installing Emacs now installs the emacs-module.h file.
The emacs-module.h file is now installed in the system-wide include
directory as part of the Emacs installation. This allows to build
......@@ -37,10 +35,8 @@ Emacs modules outside of the Emacs source tree.
* Changes in Emacs 26.2
** Emacs is now compliant with the latest version 11.0 of the Unicode Standard.
** New variable 'xft-ignore-color-fonts'.
Default t means don't try to load color fonts when using Xft, as they
often cause crashes. Set it to nil if you really need those fonts.
......@@ -53,7 +49,6 @@ often cause crashes. Set it to nil if you really need those fonts.
** Dired
*** The 'Z' command on a directory name compresses all of its files.
It produces a compressed '.tar.gz' archive with all the files in the
directory and all of its subdirectories. For symmetry, 'Z' on a
......@@ -66,17 +61,14 @@ partially called out in its NEWS; 'tgz' handling was added in 26.1.)
** Ibuffer
*** New toggle 'ibuffer-do-toggle-lock', bound to 'L'.
** Imenu
*** The value for 'imenu-auto-rescan-maxout' has been increased to 600000.
** Gnus
*** Mailutils movemail will now be used if found at runtime.
The default value of 'mail-source-movemail-program' is now "movemail".
This ensures that the movemail program from GNU Mailutils will be used
......@@ -86,12 +78,10 @@ absolute file name of the desired executable.
** Shadowfile
*** shadowfile.el has been rewritten to support Tramp file names.
** Shell mode
*** Shell mode buffers now have 'scroll-conservatively' set to 101.
This is so as to better emulate the scrolling behavior of a text
terminal when new output is added to the screen buffer. To get back
......@@ -102,13 +92,11 @@ in its NEWS.)
** VC
*** VC support for Mercurial was improved.
Emacs now avoids invoking 'hg' as much as possible, for faster operation.
(This and the following changes were actually made in Emacs 26.1, but
were not called out in its NEWS.)
**** New vc-hg options.
The new option 'vc-hg-parse-hg-data-structures' controls whether vc-hg
will try parsing the Mercurial data structures directly instead of
......@@ -120,7 +108,6 @@ The new option 'vc-hg-use-file-version-for-mode-line-version' controls
whether the version shown on the mode line is that of the visited file
or of the repository working copy.
**** Display of Mercurial revisions in the mode line has changed.
Previously, the mode line displayed the local number (1, 2, 3, ...) of
the revision. Starting with Emacs 26.1, the default has changed, and
......@@ -134,17 +121,14 @@ option 'vc-hg-symbolic-revision-styles' to the value '("{rev}")'.
* Incompatible Lisp Changes in Emacs 26.2
** shadowfile config files have changed their syntax.
Existing files "~/.emacs.d/shadows" and "~/.emacs.d/shadow_todo" must
be removed prior using the changed 'shadow-*' commands.
** 'thread-alive-p' has been renamed to 'thread-live-p'.
The old name is an alias of the new name. Future Emacs version will
obsolete it.
** 'while-no-input' does not return due to input from subprocesses.
Input that arrived from subprocesses while some code executed inside
the 'while-no-input' form injected an internal buffer-switch event
......@@ -157,22 +141,18 @@ remove 'buffer-switch' from the list of events in
* Lisp Changes in Emacs 26.2
** The new function 'read-answer' accepts either long or short answers
depending on the new customizable variable 'read-answer-short'.
** New function 'assoc-delete-all'.
Like 'assq-delete-all', but uses 'equal' for comparison.
** The function 'thing-at-point' behaves as before Emacs 26.1.
The behavior of 'thing-at-point' when called with argument 'list' has
changed in Emacs 26.1, in that it didn't consider text inside comments
and strings as a potential list. This change is now reverted, and
'thing-at-point' behaves like it did before Emacs 26.1.
** To cater to use cases where comments and strings are to be ignored
when looking for a list, the function 'list-at-point' now takes an
optional argument to do so.
......@@ -1573,14 +1573,16 @@ similar to an entry in `package-alist'. Save the cached copy to
(member name package-unsigned-archives))
;; If we don't care about the signature, save the file and
;; we're done.
(progn (write-region content nil local-file nil 'silent)
(progn (let ((coding-system-for-write 'utf-8))
(write-region content nil local-file nil 'silent))
(package--update-downloads-in-progress archive))
;; If we care, check it (perhaps async) and *then* write the file.
location file content async
;; This function will be called after signature checking.
(lambda (&optional good-sigs)
(write-region content nil local-file nil 'silent)
(let ((coding-system-for-write 'utf-8))
(write-region content nil local-file nil 'silent))
;; Write out good signatures into archive-contents.signed file.
(when good-sigs
(write-region (mapconcat #'epg-signature-to-string good-sigs "\n")
......@@ -3438,6 +3440,9 @@ short description."
;; Generate the Package Menu.
(let ((buf (get-buffer-create "*Packages*")))
(with-current-buffer buf
;; Since some packages have their descriptions include non-ASCII
;; characters...
(setq buffer-file-coding-system 'utf-8)
;; Fetch the remote list of packages.
......@@ -87,7 +87,7 @@
;;; Variables also used at compile time.
(defconst c-version "5.33.1"
(defconst c-version "5.33.2"
"CC Mode version number.")
(defconst c-version-sym (intern c-version))
......@@ -488,7 +488,7 @@ Shell buffers. It implements `shell-completion-execonly' for
;; Don't use pcomplete's defaulting mechanism, rely on
;; shell-dynamic-complete-functions instead.
(set (make-local-variable 'pcomplete-default-completion-function) #'ignore)
(setq comint-input-autoexpand shell-input-autoexpand)
(setq-local comint-input-autoexpand shell-input-autoexpand)
;; Not needed in shell-mode because it's inherited from comint-mode, but
;; placed here for read-shell-command.
(add-hook 'completion-at-point-functions #'comint-completion-at-point nil t))
......@@ -44,7 +44,7 @@
(declare-function mail-content-type-get "mail-parse" (ct attribute))
;; mm-decode loads mm-bodies, which loads mm-util.
(declare-function mm-charset-to-coding-system "mm-util"
(charset &optional lbt allow-override silent))
(charset &optional lbt allow-override silent))
;; Implementation status
;; ---------------------
......@@ -260,15 +260,15 @@ the arguments that would have been passed to OPERATION."
;; The actual implementation
(defun url-copy-file (url newname &optional ok-if-already-exists
_keep-time _preserve-uid-gid)
_keep-time _preserve-uid-gid _preserve-permissions)
"Copy URL to NEWNAME. Both args must be strings.
Signals a `file-already-exists' error if file NEWNAME already exists,
Signal a `file-already-exists' error if file NEWNAME already exists,
unless a third argument OK-IF-ALREADY-EXISTS is supplied and non-nil.
A number as third arg means request confirmation if NEWNAME already exists.
This is what happens in interactive use with M-x.
Fourth arg KEEP-TIME non-nil means give the new file the same
last-modified time as the old one. (This works on only some systems.)
Fifth arg PRESERVE-UID-GID is ignored.
A prefix arg makes KEEP-TIME non-nil."
(if (and (file-exists-p newname)
(not ok-if-already-exists))
......@@ -351,7 +351,7 @@ if it had been inserted from a file named URL."
(unless buffer (signal 'file-error (list url "No Data")))
(with-current-buffer buffer
;; XXX: This is HTTP/S specific and should be moved to url-http
;; instead. See
;; instead. See bug#17549.
(when (bound-and-true-p url-http-response-status)
;; Don't signal an error if VISIT is non-nil, because
;; 'insert-file-contents' doesn't. This is required to
......@@ -364,7 +364,7 @@ if it had been inserted from a file named URL."
(< url-http-response-status 300)))
(let ((desc (nth 2 (assq url-http-response-status url-http-codes))))
(kill-buffer buffer)
;; Signal file-error per
;; Signal file-error per bug#16733.
(signal 'file-error (list url desc))))))
(url-insert-buffer-contents buffer url visit beg end replace)))