Running texconfig breaks backspace in Bash/MinTTY
Ken Brown
kbrown@cornell.edu
Fri Mar 18 11:34:00 GMT 2016
On 3/17/2016 7:40 AM, Ken Brown wrote:
> On 3/16/2016 6:11 PM, Thomas Wolff wrote:
>> Am 16.03.2016 um 16:07 schrieb Ken Brown:
>>> On 3/16/2016 10:00 AM, Adam Dinwoodie wrote:
>>>> On Wed, Mar 16, 2016 at 08:34:45AM -0400, Ken Brown wrote:
>>>>> On 3/16/2016 7:45 AM, Adam Dinwoodie wrote:
>>>>>> Here's an interesting bug: normally in a Bash session in MinTTY,
>>>>>> backspace and Ctrl+H both delete the previous character, as expected.
>>>>>> However, after running texconfig and returning to the shell, both the
>>>>>> backspace key and Ctrl+H appear to just print "^H" to the terminal.
>>>>>>
>>>>>> It looks like this is genuinely the terminal trying to render a
>>>>>> backspace character, rather than just backspacing, given the
>>>>>> following:
>>>>>>
>>>>>> $ printf ^H | xxd
>>>>>> 00000000: 08 .
>>>>>>
>>>>>> (To get that, I typed "printf {backspace} | xxd".)
>>>>>>
>>>>>> It's not clear to me whether this is Bash, MinTTY or texconfig that's
>>>>>> misbehaving. Ctrl+W to delete a word, Ctrl+R to get (for me) fzf's
>>>>>> history search, and using the up and down arrows to navigate
>>>>>> history all
>>>>>> work. Running Vim, opening a new Bash shell from within the duff
>>>>>> one,
>>>>>> or SSHing to another box has Ctrl+H working just fine within that
>>>>>> process, but the bugged behaviour resumes when I return to the
>>>>>> original
>>>>>> Bash shell.
>>>>>
>>>>> I can't reproduce this on my system. I tried 'texconfig --help' and
>>>>> 'texconfig conf'. What's the precise texconfig command that you
>>>>> used?
>>>>
>>>> I'm just running `texconfig`, with no arguments. There's a warning
>>>> prompt, that you press Enter to clear, then there's an interactive menu
>>>> that appears -- I'm assuming it's something about that interactive menu
>>>> that's causing the problem.
>>>
>>> In the interactive case, texconfig calls texconfig-dialog, which calls
>>> dialog.
>>>
>>>> Turns out, after some digging, MinTTY's "Keys" > "Backspace sends ^H"
>>>> setting is critical here -- my .minttyrc has `BackspaceSendsBS=yes`,
>>>> but
>>>> if I remove that line and restart MinTTY, everything works fine. If I
>>>> add that setting to a fresh Cygwin install that contains only the Base
>>>> packages, texlive-collection-basic, and their dependencies, I can
>>>> reproduce the issue.
>>>>
>>>> That probably explains why you can't reproduce it, but it still seems
>>>> like a bug -- I wouldn't expect backspace behaviour to change in that
>>>> fashion regardless of that bit of configuration.
>>>
>>> So it appears to be a MinTTY/dialog issue.
>> Checking stty -a before and after texconfig reveals that texconfig
>> mangles the stty erase setting and does not restore it.
>> That is clearly a bug of texconfig.
>
> I'm not sure how you ruled out dialog as the culprit, but in fact you're
> right. texconfig-dialog calls 'reset' and 'stty sane' at various places,
> and that seems to be the problem. I'll report this upstream.
I've done this in http://tug.org/pipermail/tex-live/2016-March/037852.html, where you can also see responses by two of the TeX Live developers.
The best long-term solution is to get rid of the need for texconfig by making tlmgr work on Cygwin[*]. In the meantime, upstream TeX Live will consider patches that make texconfig stop messing with terminal settings. [If it turns out that dialog also messes with terminal settings, then we'll have to find a different workaround.]
Here's one possibility:
--- /usr/share/texmf-dist/scripts/texlive/texconfig-dialog.sh.orig 2015-10-08 16:04:18.000000000 -0400
+++ /usr/share/texmf-dist/scripts/texlive/texconfig-dialog.sh 2016-03-18 07:26:50.708149300 -0400
@@ -43,7 +43,7 @@
rc=$1
$needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
&& { cd / && rm -rf "$tmpdir"; }
- termCtl reset
+ termCtl clear
(exit $rc); exit $rc
}
Adam, please give this a try and let me know if it solves the problem without creating new ones.
Ken
[*] tlmgr is currently incompatible with the Cygwin packaging of TeX Live. I'll look into fixing this for TeX Live 2016. I should be able to simply disable some features of tlmgr, while retaining those that replace the functionality of texconfig.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list