blob: 6174ea162e043a6c34815a15dee09e85503816a0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
* Shell
** Add faces instead of reusing font-lock-{comment,string}.
** Understand ~autocd~ and ~cd !$~.
** Use Bash completions.
E.g. in most terminals, typing ~ls TAB~ in a folder with a single file
expands to ~ls that-file~.
See [[https://debbugs.gnu.org/26661][bug#26661]], and [[https://github.com/szermatt/emacs-bash-completion/issues/45][szermatt/emacs-bash-completion!45]].
** Handle DECSC, DECRC, CUU, ED, HVP and DECSTBM console codes.
Used for APT's "Dpkg::Progress-Fancy" option, enabled by default with
the high-level apt(8) command. Silly script emulating what APT does:
#+begin_src bash
#!/bin/bash
set -eu
if ! test "${LINES:-}" -a "${COLUMNS:-}"
then
echo Please export LINES and COLUMNS.
exit 1
fi
# Adapted from apt/apt-pkg/install-progress.cc.
backup=$'\e7' # DECSC: backup cursor position.
restore=$'\e8' # DECRC: restore cursor position.
setup ()
{
echo -n ${backup}
# DECSTBM: restrict scrolling below command, and above progress
# bar. Side-effect: move the cursor to position 1:1,
# hence the backup/restore.
echo -n $'\e[0;'$((LINES-1))'r'
echo -n ${restore}
}
teardown ()
{
# ED: clear everything from current position to end of screen.
# Dixit Michael Vogt: "sledgehammer".
echo -n $'\e[J'
}
# APT surrounds this setup phase with \n and \e[1A (CUU). I don't
# know why; the comments say that this is to "avoid visual glitch when
# the screen area shrinks by one row". No further explanation is
# given in commit messages.
setup
for ((i=1;i<COLUMNS-1;i++))
do
if ! ((i%10))
then
echo "installing stuff"
fi
echo -n ${backup}
# HVP: move cursor to last line, first column.
echo -n $'\e['${LINES}';1f'
# Draw progress bar.
progress='['
for ((j=1;j<=i;j++))
do
progress+='#'
done
for ((j=i+1;j<COLUMNS-1;j++))
do
progress+='.'
done
progress+=']'
echo -n ${progress}
echo -n ${restore}
sleep 0.1
done
teardown
#+end_src
* Eshell
** ~ls --group-directories-first~ does not color folders.
* Python shell
** Handle ~completion-prefix-display-length~
Setting this variable in an inputrc file causes the Python interpreter
to elide common prefixes when showing completion candidates. This
seems to confuse python-shell-completion-native-get-completions (at
best hitting TAB yields "No match", at worst it makes Emacs hang).
|