* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
@ 2021-05-13 9:14 Khoa Vo
2022-07-11 14:42 ` Lars Ingebrigtsen
0 siblings, 1 reply; 12+ messages in thread
From: Khoa Vo @ 2021-05-13 9:14 UTC (permalink / raw)
To: 48399
[-- Attachment #1: Type: text/plain, Size: 7485 bytes --]
Note: I have repoduced this bug even without a configuration file.
Steps:
- Enter term-mode.
- Enter term-line-mode.
- Type a command one line below the prompt, but don't hit "enter" yet.
- Issue command "M-x split-window-right".
- You can see the problem: one or more new lines are inserted after the
prompt.
Pushing the command further down.
This is problematic because:
- If you repeat that enough times, you can't see the command anymore.
- I need the end of the buffer to be where the prompt is,
so I can get to the prompt quickly.
- Also I sometimes need to copy the command, I can just copy from the
prompt to the end of the buffer.
It seems to me like the issue is with splitting the window.
In GNU Emacs 27.2 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60
Version 10.14.6 (Build 18G95))
of 2021-03-27 built on builder10-14.porkrind.org
Windowing system distributor 'Apple', version 10.3.2022
System Description: macOS 11.3.1
Recent messages:
Checking 57 files in
/Applications/Emacs.app/Contents/Resources/lisp/eshell...
Checking 71 files in /Applications/Emacs.app/Contents/Resources/lisp/erc...
Checking 34 files in
/Applications/Emacs.app/Contents/Resources/lisp/emulation...
Checking 180 files in
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp...
Checking 24 files in
/Applications/Emacs.app/Contents/Resources/lisp/cedet...
Checking 59 files in
/Applications/Emacs.app/Contents/Resources/lisp/calendar...
Checking 87 files in /Applications/Emacs.app/Contents/Resources/lisp/calc...
Checking 113 files in
/Applications/Emacs.app/Contents/Resources/lisp/obsolete...
Checking for load-path shadows...done
Mark set
Quit
Configured using:
'configure --with-ns '--enable-locallisppath=/Library/Application
Support/Emacs/${version}/site-lisp:/Library/Application
Support/Emacs/site-lisp' --with-modules'
Configured features:
NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES
THREADS JSON PDUMPER GMP
Important settings:
value of $LANG: en_FI.UTF-8
locale-coding-system: utf-8-unix
Major mode: Term
Minor modes in effect:
goto-address-mode: t
global-whitespace-mode: t
TeX-PDF-mode: t
global-company-mode: t
company-mode: t
desktop-save-mode: t
global-magit-file-mode: t
magit-auto-revert-mode: t
global-git-commit-mode: t
async-bytecomp-package-mode: t
show-paren-mode: t
global-auto-revert-mode: t
counsel-mode: t
ivy-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
evil-lion-mode: t
evil-commentary-mode: t
global-undo-tree-mode: t
shell-dirtrack-mode: t
evil-mode: t
evil-local-mode: t
electric-pair-mode: t
winner-mode: t
override-global-mode: t
tooltip-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
None found.
Features:
(pp shadow sort mail-extr goto-addr emacsbug sendmail smex ido
css-mode-expansions css-mode html-mode-expansions sgml-mode eww mm-url
gnus nnheader wid-edit url-queue url url-proxy url-privacy url-expand
url-methods url-history mailcap shr url-cookie url-domsuf url-util svg
xml dom conf-mode js-mode-expansions js cc-mode-expansions cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs jka-compr asm-mode inf-groovy markdown-mode noutline outline
vc-git rainbow-delimiters rainbow-identifiers company-oddmuse
company-keywords company-etags etags fileloop generator company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-capf company-cmake company-semantic company-template
company-bbdb wheatgrass-theme whitespace multi-term term disp-table
ehelp nginx-mode groovy-mode ansible f jsonnet-mode yaml-mode
terraform-mode hcl-mode dockerfile-mode s sh-script smie executable
indent-tools yafolding hydra lv indent-tools-indentation-of
highlight-indentation sql-indent sql view clojure-mode-expansions
clojure-mode lisp-mnt align font-latex tex texmathp company
pcase quail math-symbol-lists desktop frameset expand-region
text-mode-expansions er-basic-expansions expand-region-core
expand-region-custom magit-submodule magit-obsolete magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode
magit-core magit-autorevert magit-margin magit-transient magit-process
magit-mode git-commit transient magit-git magit-section magit-utils crm
log-edit message rmc puny rfc822 mml mml-sec epa derived epg epg-config
gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
with-editor async-bytecomp async server dash exec-path-from-shell paren
autorevert filenotify aggressive-indent counsel xdg xref project dired
dired-loaddefs compile swiper ivy delsel ivy-faces ivy-overlay colir
color avy evil-surround evil-lion rx disable-mouse extempore-mode
sudo-edit tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat parse-time iso8601 time-date ls-lisp format-spec
evil-commentary evil-commentary-integration evil-little-word evil
evil-integration undo-tree diff evil-maps evil-commands reveal flyspell
ispell evil-jumps evil-command-window evil-types evil-search evil-ex
shell pcomplete comint ansi-color evil-macros evil-repeat evil-states
evil-core advice evil-common windmove thingatpt rect evil-digraphs
evil-vars cl-extra help-mode elec-pair winner ring use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core tex-site cl
info edmacro kmacro package easymenu browse-url url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win
ucs-normalize mule-util term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads kqueue cocoa ns
multi-tty make-network-process emacs)
Memory information:
((conses 16 494933 56940)
(symbols 48 33468 0)
(strings 32 120893 8532)
(string-bytes 1 3741337)
(vectors 16 63025)
(vector-slots 8 1511385 236164)
(floats 8 348 346)
(intervals 56 9385 0)
(buffers 1000 113))
[-- Attachment #2: Type: text/html, Size: 8178 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2021-05-13 9:14 bug#48399: 27.2; term-mode: After splitting window, newlines are inserted Khoa Vo
@ 2022-07-11 14:42 ` Lars Ingebrigtsen
2022-07-11 14:57 ` Robert Pluim
0 siblings, 1 reply; 12+ messages in thread
From: Lars Ingebrigtsen @ 2022-07-11 14:42 UTC (permalink / raw)
To: Khoa Vo; +Cc: 48399
Khoa Vo <vodangkhoa873@gmail.com> writes:
> Note: I have repoduced this bug even without a configuration file.
>
> Steps:
> - Enter term-mode.
> - Enter term-line-mode.
> - Type a command one line below the prompt, but don't hit "enter" yet.
> - Issue command "M-x split-window-right".
> - You can see the problem: one or more new lines are inserted after the prompt.
> Pushing the command further down.
(I'm going through old bug reports that unfortunately weren't resolved
at the time.)
I'm not sure I understand the problem. If by "Enter term-mode" you mean
`M-x term RET RET', then commands like `M-x split-window-right' aren't
available, so perhaps you mean something else?
Can you give a step-by-step recipe to reproduce the problem, starting
from "emacs -Q"?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-11 14:42 ` Lars Ingebrigtsen
@ 2022-07-11 14:57 ` Robert Pluim
2022-07-11 15:48 ` Michael Heerdegen
0 siblings, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2022-07-11 14:57 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: Khoa Vo, 48399
>>>>> On Mon, 11 Jul 2022 16:42:01 +0200, Lars Ingebrigtsen <larsi@gnus.org> said:
Lars> Khoa Vo <vodangkhoa873@gmail.com> writes:
>> Note: I have repoduced this bug even without a configuration file.
>>
>> Steps:
>> - Enter term-mode.
>> - Enter term-line-mode.
>> - Type a command one line below the prompt, but don't hit "enter" yet.
>> - Issue command "M-x split-window-right".
>> - You can see the problem: one or more new lines are inserted after the prompt.
>> Pushing the command further down.
Lars> (I'm going through old bug reports that unfortunately weren't resolved
Lars> at the time.)
Lars> I'm not sure I understand the problem. If by "Enter term-mode" you mean
Lars> `M-x term RET RET', then commands like `M-x split-window-right' aren't
Lars> available, so perhaps you mean something else?
Lars> Can you give a step-by-step recipe to reproduce the problem, starting
Lars> from "emacs -Q"?
M-x term
C-c C-j
C-n
ls C-x 3
reproduces for me (you can run any normal Emacs command when youʼre in term-line-mode)
Robert
--
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-11 14:57 ` Robert Pluim
@ 2022-07-11 15:48 ` Michael Heerdegen
2022-07-12 12:28 ` Lars Ingebrigtsen
0 siblings, 1 reply; 12+ messages in thread
From: Michael Heerdegen @ 2022-07-11 15:48 UTC (permalink / raw)
To: Robert Pluim; +Cc: Lars Ingebrigtsen, 48399, Khoa Vo
Robert Pluim <rpluim@gmail.com> writes:
> M-x term
> C-c C-j
> C-n
> ls C-x 3
Happens even without C-n:
M-x term
C-c C-j
ls
C-x 2 ;; a linefeed between prompt and "ls" in inserted
C-x 1 ;; another one is inserted
Michael.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-11 15:48 ` Michael Heerdegen
@ 2022-07-12 12:28 ` Lars Ingebrigtsen
2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Lars Ingebrigtsen @ 2022-07-12 12:28 UTC (permalink / raw)
To: Michael Heerdegen; +Cc: Robert Pluim, 48399, Khoa Vo
Michael Heerdegen <michael_heerdegen@web.de> writes:
> Happens even without C-n:
>
> M-x term
> C-c C-j
> ls
> C-x 2 ;; a linefeed between prompt and "ls" in inserted
> C-x 1 ;; another one is inserted
Thanks. I've had a brief look at term.el to see what could be causing
this -- I wondered whether it might be a window change hook or
something, but that doesn't seem to be the case.
It seems to be happening non-synchronously -- sometimes the extra
newline isn't added until half a second passes, so perhaps it's
something that happens during communication between the shell and Emacs.
I'm pretty unfamiliar with the term.el code. Anybody know where to
start poking?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 12:28 ` Lars Ingebrigtsen
@ 2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-12 13:27 ` Michael Heerdegen
2022-07-12 13:48 ` Andreas Schwab
2022-07-12 13:40 ` Eli Zaretskii
` (2 subsequent siblings)
3 siblings, 2 replies; 12+ messages in thread
From: miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-12 13:13 UTC (permalink / raw)
To: Lars Ingebrigtsen, Michael Heerdegen; +Cc: Robert Pluim, Khoa Vo, 48399
[-- Attachment #1: Type: text/plain, Size: 1234 bytes --]
Lars Ingebrigtsen <larsi@gnus.org> writes:
> Michael Heerdegen <michael_heerdegen@web.de> writes:
>
>> Happens even without C-n:
>>
>> M-x term
>> C-c C-j
>> ls
>> C-x 2 ;; a linefeed between prompt and "ls" in inserted
>> C-x 1 ;; another one is inserted
>
> Thanks. I've had a brief look at term.el to see what could be causing
> this -- I wondered whether it might be a window change hook or
> something, but that doesn't seem to be the case.
>
> It seems to be happening non-synchronously -- sometimes the extra
> newline isn't added until half a second passes, so perhaps it's
> something that happens during communication between the shell and Emacs.
>
> I'm pretty unfamiliar with the term.el code. Anybody know where to
> start poking?
When a term.el window is resized, emacs sends a SIGWINCH to it's
process. Bash seems to output some spaces newlines upon receiving a
SIGWINCH. In an ordinary terminal emulator, these spaces have the effect
of clearing bash's readline display and they aren't really visible to
the user. In term.el, however, they are inserted before the "ls" that
the user has input (this "ls" is input in term-line-mode, which means
that bash isn't aware of it yet, until the user presses RET).
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-07-12 13:27 ` Michael Heerdegen
2022-07-12 13:48 ` Andreas Schwab
1 sibling, 0 replies; 12+ messages in thread
From: Michael Heerdegen @ 2022-07-12 13:27 UTC (permalink / raw)
To: miha; +Cc: Lars Ingebrigtsen, Khoa Vo, 48399, Robert Pluim
miha@kamnitnik.top writes:
> When a term.el window is resized, emacs sends a SIGWINCH to it's
> process. Bash seems to output some spaces newlines upon receiving a
> SIGWINCH.
I tried with a different shell: using "dash" (default system
shell in Debian) the problem is not reproducible.
Michael.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 12:28 ` Lars Ingebrigtsen
2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-07-12 13:40 ` Eli Zaretskii
2022-07-12 14:14 ` Andreas Schwab
2022-07-12 14:26 ` Andreas Schwab
3 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2022-07-12 13:40 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: michael_heerdegen, rpluim, vodangkhoa873, 48399
> Cc: Robert Pluim <rpluim@gmail.com>, 48399@debbugs.gnu.org,
> Khoa Vo <vodangkhoa873@gmail.com>
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Tue, 12 Jul 2022 14:28:45 +0200
>
> Michael Heerdegen <michael_heerdegen@web.de> writes:
>
> > Happens even without C-n:
> >
> > M-x term
> > C-c C-j
> > ls
> > C-x 2 ;; a linefeed between prompt and "ls" in inserted
> > C-x 1 ;; another one is inserted
>
> Thanks. I've had a brief look at term.el to see what could be causing
> this -- I wondered whether it might be a window change hook or
> something, but that doesn't seem to be the case.
>
> It seems to be happening non-synchronously -- sometimes the extra
> newline isn't added until half a second passes, so perhaps it's
> something that happens during communication between the shell and Emacs.
>
> I'm pretty unfamiliar with the term.el code. Anybody know where to
> start poking?
I think it's because we call set-process-window-size, which sends an
IOCTL to the shell.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-12 13:27 ` Michael Heerdegen
@ 2022-07-12 13:48 ` Andreas Schwab
1 sibling, 0 replies; 12+ messages in thread
From: Andreas Schwab @ 2022-07-12 13:48 UTC (permalink / raw)
To: 48399; +Cc: michael_heerdegen, vodangkhoa873, miha, larsi, rpluim
On Jul 12 2022, miha--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
> When a term.el window is resized, emacs sends a SIGWINCH to it's
> process. Bash seems to output some spaces newlines upon receiving a
> SIGWINCH.
That doesn't happen though when just sending SIGWINCH to the shell.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 12:28 ` Lars Ingebrigtsen
2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-12 13:40 ` Eli Zaretskii
@ 2022-07-12 14:14 ` Andreas Schwab
2022-07-12 14:26 ` Andreas Schwab
3 siblings, 0 replies; 12+ messages in thread
From: Andreas Schwab @ 2022-07-12 14:14 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, Robert Pluim, Khoa Vo, 48399
On Jul 12 2022, Lars Ingebrigtsen wrote:
> I'm pretty unfamiliar with the term.el code. Anybody know where to
> start poking?
strace tells that the shell, upon receiving SIGWINCH and noticing a
changed terminal size, redraws the prompt preceeded by a CR CSI K CR
sequence.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 12:28 ` Lars Ingebrigtsen
` (2 preceding siblings ...)
2022-07-12 14:14 ` Andreas Schwab
@ 2022-07-12 14:26 ` Andreas Schwab
2022-07-12 22:21 ` Lars Ingebrigtsen
3 siblings, 1 reply; 12+ messages in thread
From: Andreas Schwab @ 2022-07-12 14:26 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, Robert Pluim, Khoa Vo, 48399
You can reproduce that by just printing "\e[K" to the terminal, which is
handled by term-erase-in-line.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#48399: 27.2; term-mode: After splitting window, newlines are inserted
2022-07-12 14:26 ` Andreas Schwab
@ 2022-07-12 22:21 ` Lars Ingebrigtsen
0 siblings, 0 replies; 12+ messages in thread
From: Lars Ingebrigtsen @ 2022-07-12 22:21 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Michael Heerdegen, Robert Pluim, Khoa Vo, 48399
Andreas Schwab <schwab@suse.de> writes:
> You can reproduce that by just printing "\e[K" to the terminal, which is
> handled by term-erase-in-line.
Thanks. I can confirm that the newline is added by
term-erase-in-line -- the following makes the problem go away:
diff --git a/lisp/term.el b/lisp/term.el
index a28d8c5d76..3a9d41ffc1 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -3979,7 +3979,7 @@ term-erase-in-line
;; extra space when wrapped is false.
(when wrapped
(insert ? ))
- (insert ?\n)
+ ;;(insert ?\n)
(put-text-property saved-point (point) 'font-lock-face 'default)
(goto-char saved-point))))
But is obviously not the right thing... But I guess it could be the
right thing if we only skip the newline insertion if we're at the
prompt? (I don't know how to determine that, though.)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-07-12 22:21 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-05-13 9:14 bug#48399: 27.2; term-mode: After splitting window, newlines are inserted Khoa Vo
2022-07-11 14:42 ` Lars Ingebrigtsen
2022-07-11 14:57 ` Robert Pluim
2022-07-11 15:48 ` Michael Heerdegen
2022-07-12 12:28 ` Lars Ingebrigtsen
2022-07-12 13:13 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-12 13:27 ` Michael Heerdegen
2022-07-12 13:48 ` Andreas Schwab
2022-07-12 13:40 ` Eli Zaretskii
2022-07-12 14:14 ` Andreas Schwab
2022-07-12 14:26 ` Andreas Schwab
2022-07-12 22:21 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.