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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658
|
------------------------
-- vile:txtmode
------------------------
vile bug/enhancement/wish list (mostly wishes ;-)
------------------------
$Id: buglist,v 1.419 2020/01/17 23:24:30 tom Exp $
----------------------
(E means enhancement, L,M,H are low, medium, high priority)
E add ":n file"
(:n means go to the next file in a series of files.
:n file means go to that specific file - one can specify a
+<cmd> before file to indicate the vi command which should be
executed when entering the command.)
E :k, to set a mark, won't work as ":ka" or ":kb". Must use ":k a"
E patterns as addresses do not work, e.g. ":/str1/,/str2/d". They're
hard to parse the way things are set up right now. We could accumulate
the whole commandline, and then parse it, the way real vi does, but we'd
lose the "prompt and display last response" behavior.
E should add an option to support file locking, rather than the current
ifdef stuff. (this is only useful if we match the GNU locking
protocol.) And it's not clear that in an NFS'ed environment that
it's all that easy to get that style of locking right anyway.
E the scrsearch functions could become region based -- as in "search for
the next occurrence of the region", which would usually be a word. And
the ^A/ version could become "a/ (search for the contents of buffer a),
if you know what I mean.
E g should become a region command. Then it could take ranges, as
it should, and could also become an operator command.
E collapse command execution code to as few places as possible.
Its currently spread through execute(), operator(),
docmd(), and usekreg().
E I haven't even come close to testing vile for
memory-full conditions. Some malloc() packages give 95%
warnings -- perhaps something like that should be done for
safety.
E marks should perhaps be linked onto lines. this would make a lot
of things a lot easier, since a mark would travel with the
line, instead of having to be moved when the line is
reallocated etc. the U line could be treated as a special
mark. The "copied" flag needed by undo could be a special
sort of mark as well. Implementation of the "tag stack"
would be aided by this as well.
E ":e" and ":e!" should share the same prompt data, which should be
editable / history. They both should default (like vi!) to the
current buffer.
E for consistency, 'execute-macro-nn' should be 'execute-macro nn';
doing this would allow modification to eliminate a fixed number of
macro-buffers.
--------------
The ed 'transfer' and 'move' commands don't work.
(to copy and move text around. e.g., :'a,'bt$.)
--------------------------------
Though I use it, I'm still not quite satisfied with the qident stuff. It
needs to be more flexible. That is, I'd like to make it user defined.
For example
find-tag $qidentifier
should be expressible as a character class like
find-tag &anyof "a-zA-Z_0-9:"
in a macro. Or even more generally, as a regular expression:
find-tag &scan "[a-zA-Z_][a-zA-Z_0-9:]\\*"
A leading ^ would root the search at the current cursor position.
Absence of a leading ^ would start at the current cursor position but would
scan ahead until it found a match. That way I can redefine ^] to pick
up the next word even if the cursor is before the start of the word (thus
better mimicking vi's behavior).
[ This can almost be done with the $match variable, e.g.
7 store-macro
search-forward "[a-zA-Z_][a-zA-Z_0-9:]*"
find-tag $match
~endm
bind-key execute-macro-7 ^A-g
- pgf ]
----------------------------------------------------------------------
Also, I encountered the following problem: I am editing foo.tex and
call latex using ^X!latex foo.tex. There is an error, so latex waits for
input -> vile sits waiting and nothing helps. I think this should
be interruptible. I will agree with you that the ^X! command was not
intended for this, but still...
But ok, the real problem is that after I kill latex and
vile comes back to life I can no longer filter parts of text using
!fmt. The text just gets deleted.
----------------------------------------------------------------------
I just grabbed a copy of xvi. I noted some interesting tidbits while
reading the "differences between vi and xvi" document. Some of these would
be nice in vile.
As well as the normal named (conjugate) buffers, and the default
one named @, several extra buffers named :, /, ? and ! contain
the last command lines entered for each of the command types. So
for instance, @: will re-execute the last colon command, or you
can insert it into your buffer, edit it and then re-execute it
(e.g. with dd@@).
+ In insert and replace modes, ^A has the same meaning as ^@
in vi, except that it works at any time, not just for the
first character. Also, typing ^Bx, where x is the name of a
conjugate buffer, inserts the contents of that buffer into
the input stream at that point. The buffer named < always
contains the last thing inserted, so that ^B< is the same as
^A.
------------------------
I wish ^X-! could execute shell commands async'ly, i.e. I should not have
to wait/do nothing while waiting for the output of compiling. I should be
able to edit stuff in other buffers or even ^X-^X to edit src codes
while compilation is still going on.
------------
similar to above -- sub-commands run from ^X-! or ":[erw] !cmd" should be
"interactive" to the extent that user's input should be sent to the cmd
at least on a line-by-line basis (i.e. we can't send raw keystrokes -- we
have to do canonical processing. of course, we should really use pty's, and
reconnect input and capture output.) some commands like latex prompt for
more input when partway done.
========(VMS-VILE)=============================================================
Unfinished items on vax/vms [tom]
+ if the current directory has changed, offer to restore it on exit.
(Note that if the _device_ portion has changed, the original
directory should be restored anyway!).
+ add key bindings and other support to make the vt100 keypad work for
me (e.g., like EDT).
+ see if I can decode ".dia" files, if so connect it to finderr.c
+ catch exception/signals, and restore terminal settings.
+ make write-pipes work (actually, flesh out to use 'npopen' coding
scheme, like the MSDOS stuff).
+ I had a case in which I wanted to read the contents of one file into
another; they had the same buffer name; the target buffer got the
filename for the source, e.g.,
:e []foo - read and determined version # ok
:r [-.temp]foo - current filename reset to [-.temp]foo
------------------------------------------------------------
it would be nice if vile would fold text...
This feature appeared in uEmacs version 3.10.23 and you can
use archie/xarchie to file fue.tar.Z (fue - folding-micro-emacs).
[ someone said they were going to fold this in, so to speak. i'm not
real comfortable with the idea, since the uemacs code causes the LINE
struct to grow _enormously_ ]
-----------
When I execute a keyboard macro using ^X-& I cannot repeat this
using the dot command. Instead, the last command in the macro
is repeated.
[ this is because '.' doesn't do @ macros either...]
------------------------------
Can you add the '>' character to the list of comment chars for paragraph
reformatting? I would live to be able to reformat mail quotes (like shown
above).
[ pgf notes: I did this, as chris suggested, but formatregion should use
the comments regexp to match a comment delimiter at the beginning of
line, and should insert the comment delimiter of the _second_ line (so
that boxed C comments work right)in subsequent reformatted lines,
including leading but not trailing whitespace. indentlen should be
counted _after_ the width of such a comment delimiter. this would make
paragraphs that are indented way after the delimiter keep their indent.
commented paragraphs should end when exp->mlen for the comment regexp is
equal to llength(DOT), i.e. it's the whole line. (we'll need to take
the $ off the end of the comment regexp). ]
------------------------------
Another enhancement.
How about a history file. say I have been using vile and
quit and come back in later I can use the history file.
--------------------------
In a xterm window the down arrow (which sends ESC-O-B) works for individual
presses. If you hold down the key then letter Bs get peppered through out
the file. It appears that the ESC is occasionally being missed so that the
following OB puts a B in the file.
In my case I'm on a workstation running 4.1.3 and xterm using rlogin to
connect to a 690 server (lightly loaded) running 4.1.3 and running vile
on the 690.
I just ran vile locally and didn't see the problem.
-------------------------------
I found a bug (new with 3.59) on our Pyramid SVR4 (but not Pyramid SVR3,
SunOS 4.1.1, AIX 3.2) where
xvile tmp &
pops up the xvile window briefly, the window dies, the xterm I started
xvile from says
[1] + suspended (tty input) xvile3.59 tmp
and then after a couple seconds the xterm itself vanishes! However,
xvile tmp
works fine, except that the process is in the foreground.
> The bug on the Pyramid SVR4 machine with xvile & suspending itself,
> committing suicide, and then blowing away the xterm still exists.
> For the time being I just remember to run xvile on a different
> machine.
-------------------------------------------------------------------------
With vim 1.27 you can configure its behaviour regarding backspace using
the 'backspace' variable. From the help file:
backspace (bs) number 0 0 standard Vi, 1 delete NL, 2 delete all
i.e. if bs is non-zero, you can backup to the previous line, and if it's
a 2, you can backup past the insertion point.
i don't think this is optimal -- i think you should be able to choose
independently whether you backup past the newline or past the insertion point.
in any case, vile won't let you back up past the newline during an insert.
when _not_ in insert, you can rebind ^H to backward-character.
---------------------------
When you do a :b you should have line completion for the name.
---------------------------
How can I read the status of a shell command when I execute a
shell-command? Although the shell command has a $STATUS=1 the
status of the status variable is TRUE.
---------------------------
you can't use ! as a regular expression delimiter, as in:
:s!pat!replace!g
because the parser treats ":s!" as if it's ":q!" or ":w!".
-------------------------
width of a region is kept in units of offset, not of columns.
i think this will break rectangular inserts of non-rectangular regions,
where the longest line may not extend to the furthest column, due to
tabs in other lines.
---------------------------
the borland console driver won't display the cursor on blank lines until
after you've refreshed the screen at least once, e.g. with ^L. must
be something to do with color initialization, or something like that...
---------------------------
running a SunOS4.1.3 binary of vile on Solaris2.3 causes the "interrupted
system call" problem, no doubt due to the differing BSD/SysV signal()
semantics. [ probable workaround: ":set noworking" ]
----------------------
Another thing that would be really helpful would be a description of the
$debug variable, and what it does, how it works.
-------------------------------
there should be better support in vile for reading bits of shell output
into a buffer -- ":r !foo" is a little primitive when trying to insert a
single word into a line.
---------------------------------
autoindent skips blank lines when looking for the
indent value. apparently real vi doesn't?
----------------------
currently can't pop/untag from within macro
[really? why is this?]
------------------
are there still reentrancy problems in xvile when mousing around during
long-running operations.
----------------------
could the attribute selection logic be used to emulate vi's behavior
of replacing the last char of a change operation to '$'? (but only for
text which does not span a line)
-------------------------
there should be a way to reference buffer attributes of the currently-
executing macro (or stack of macros).
-------------------------
[ how do i test this? ]
In xvile, when the load is high and the machine stalls for a while
and I key in several keystrokes ahead, it takes the first of those keystrokes
and replaces the later keys by it i.e. when several events simultaneously
arrive, it doesn't do the right thing (process them in order).
-----------------
when motion keys or pasting is used during an insertion, we should
break the insertion into multiple undoable chunks.
-----------------
pasting to a view-only buffer does not generate an error message.
----------------------------
XVILE BUG:
- If I click on the "maximize" gadget, it gets _really_ big.
Like, many times bigger than the screen big; I suspect that
it is maximizing to a number of *characters* equal to the number
of *pixels* available or something. If I click on the same
gadget (after dragging that part of the window onto the screen),
which does a normalize, it crashes.
I am use vile 4.5 and xvile on HP/UX 9.01.
I use vuewm as my window manager (a motif variant).
[I would guess that the suspicion of the person reporting the bug
is correct concerning the behavior of the window manager during
maximization. I don't have this problem with fvwm. pgf's changes
to eliminate the hardcoded maximum width and height will probably
fix the core dumps. I'll look into seeing if there is some protocol
which we're not observing with regard to maximization. -kev]
----------------------
if you have lines like
123
1234
12
it's impossible to select them as a rectangle, since the middle line is
longest.
----------------
It would be useful to have a search that is constrained to a certain
movement. For example, I might want to look for the string "foo" over the
next paragraph, not the whole document. This would really be useful to
programmers who want to look for the instance of a variable or a function
call only within the current scope (or #if).
----------------
xvile:
Is it possible to have an optional horizontal scrollbars ?
(just for maniac users)
----------------------------
under DOS, ^P character turns on the printer. argh.
actually, this only happens if compiled with borland. it uses getch()
instead of intdos() to get the char. (see ttgetc()) that's probably
at least part of the answer.
[I also see this with djgpp, which uses borland.c - tom]
---------------
how about a mode that supports autosaving to the backup-file,
instead of to the original file -- useful for system crashes.
-----------------
rectangular operations don't work right if there are control characters
to the left of the rectangle. (physically they work, but the visual
effect is wrong. i'm not sure what the right thing to do is.)
-------------------------
double quote characters (and probably other special chars) are interpreted
incorrectly on the lhs of a map command. for instance:
map ^K" WBi"^[Ea"^[
will result in
^K WBi
as the lhs, leaving
^[Ea"^[
as the rhs. the workaround is to escape the " in the lhs:
map ^K\" WBi"^[Ea"^[
(this map surrounds the current word in double quotes)
-----------------------------
Would you please add another hook: modify-hook. I thought this is useful,
for example, if I attempt to insert, delete (in general, modify) text
in a read-only file, I like it to prompt if the user wants to PVCS-lock it.
A message would look something like this:
File is read-only, check out?
-----------------------------
contrary to the vile.hlp text, binding to the interrupt{} terminal
character does not fully change intrc and the user's interrupt character.
-----------------------------------------------------------------
DOS: wildcarding in the top directory:
c:
cd \
vile a*.bat (will not open autoexec.bat)
does not work, because Watcom's opendir() routine only succeeds on the root
directory if it is specified as '\'. no other name for it seems to work.
stat won't work on it either. (we try to open it as ".", not an unreasonable
thing to do.)
sigh. i hate DOS.
-----------------------------------------------------------------
Mips RISCos5.0 machines:
Error: random.c, line 625: 'SIG_BLOCK' undefined, ...
Error: random.c, line 637: 'SIG_SETMASK' undefined, ...
[ i thought i could provide fallback definitions of those, but
the values are different on sunos and linux, and are probably
different again on Mips RISCos5.0, bless it's broken little heart. ]
-----------------------------------------------------------------
we should consider adding user-customizable menu or button support to
xvile:
"Right now, you have most of the major functions as strings that can be
called from the macro language. Suppose you made icons or something
for those strings, and then let the user string the icons (or maybe
have icons trigger macros and have a set of macros for most of the
basic stuff as a default package) together to form new icons they could
put in some sort of icon bar. The windows (boo! Hiss!) users would go
nuts! Also, put some of this into the pull down menus, and people
would stand to cheer and applaud. "
-----------------------------------------------------------------
I think I found a couple of very minor bugs in vile.
Possible bug #1)
I'm using xvile right now because ^S doesn't seem to work correctly in
regular vile yet (must be an HP 9.05 thing, I'm not sure yet). I had
thought you turned flow control off in vile, but I want to do more testing
before I call this a bug.
Anyway, do this:
On a page with several lines of text, do this operation on the first one:
:s/^/> /
Now, using the mouse (or 'q'), sweep the next couple of lines. To make
things interesting, sweep to the end of the second to last line, but
not the last line itself, so the highlighted text looks like this:
xxxxxxxx
xxxxxxxx
xxxxxxxx
instead of
xxxxxxxx
xxxxxxxx
xxxxxxxx
x
Now, do a
^A-&-^S
On my machine, the last line of the highlighted text isn't touched. I'm
thinking it should be...
-----------------------------------------------------------------
the command ":r !ls" should not require the space.
-----------------------------------------------------------
when using wrapmargin, it is impossible to break
up long lines consisting of a single word.
[vi doesn't do this]
-----------------------------------------------------------
- the layering of the map code with respect to the record/replay
code that implements '.', the keyboard macros, and the '@'
command execution is severely broken. if you have a :map
that executes a '@a' command in the middle, the contents
of register a are readied for replay, but input continues
to come from the :map string until it is ended, and only then
so we dip down to the lower level and start getting the result
of '@a'. a similar thing happens with '.' used in a :map, only
it seems even worse, since recording isn't started/stopped
correctly.
[this has been fixed for the @a case, but in a sloppy fashion.
it should be cleaned up. -pgf ]
-----------------------------
Using xvile, if I [oO]pen a
new line or do insert at the beginning of a line, and then paste in
some text using the mouse, xvile inserts an extra blank line. that is,
if I have
foo
bar
and I try to paste in 'hi' under the foo, I get
foo
hi
bar
this only seems to happen in autoindent mode at the very beginning of
the line. it does *not* happen if the preceding line is indented, or
if I type a space before pasting.
----------------
only "reverse" works as a visual-match hilite under DOS.
---------------
a newly entered search string (even an identical one) should turn visual-match
highlighting back on. this is surprisingly hard, due to the layering of
readpattern() and kbd_reply.
---------------
While we're on the subject of bugs, let me tell you about another one that
I've long noticed when I try to insert such text. I would like to do
:unsetl ai before pasting in the text (since I normally have auotindent
on). But that has no effect. Even :setall shows that autoindent is still
on. Instead I have to do :setl noai. Annoying.
[ i agree -- shouldn't "setl nonumber" and "unsetl number" be synonymous? -pgf]
[ I've gotten used to it as a quirk: "unsetl" deletes a flag that shadows the
global setting. I wish (however) that there were a nice way to highlight the
flags that are shadowed -dickey]
---------------
running a shell command from xvile should arguably spawn a new xterm. it
should certainly do it in a new window.
---------------
vile trims all trailing whitespace when user inserts a space that triggers
wrapmargin, vi trims only the whitespace inserted during the current command.
[ i'm not sure i consider this a bug. vile plays loose with whitespace
in many such situations. if you're using wrapmargin, you're probably
not worried about trailing whitespace anyway. -- pgf ]
--------------------------
This is a report against vile v5.4 built using djgpp. Vile is running
in raw DOS (not in a Windows DOS box).
This command:
vile -4
gives me 50 lines (not 43). The only two screen resolutions that seem
to work are vile -2 and vile -5 .
[ This is a result of the borland screen library. 43 lines are available
under OS/2... ]
---------------------------------
.. you can't use the mouse to select text from the command input line, I often
use this after Ctrl+G to get the filename for a UNIX command elsewhere.
---------------------------------
.. button 1 selection doesn't work it quite the same way as other apps. e.g.
in xterm, double click on a word (don't release button after second click)
and drag along a sentence - first word is selected and so are subsequent
words in the sentence as you drag. Just the first word is selected in xvile.
---------------------------------
vile 5.5 almost passed my macro test with only small cosmetic problem:
; !@ --mapto--> replace "Unixcommand!@" with "Unixcommand" output
map! !@ ^V^M^[bi:r !^[F:"adt@mm@ais^["bd$dd`m@b
; #@ --mapto--> replace "@Unixcommand args#@" with "Unixcommand" output
map! #@ ^V^M^[F@s:r !^[F:"adt@mm@ais^["bd$dd`m@b
Both now produce correct results. But the final status message doesn't
make sense: Delete operation pending... when it actually in insert
mode. Fortunately, there is a workaround, set terse. it would be nice
if vile can temporary set terse before executing macros and reset back
to original mode afterwards. Sounds easy?
------------------------
there are two conflicting wordwrap mechanisms in vile --
- the historical wrapwords setting, inherited from
microemacs, will wrap words in input mode when you type a
space character after you've passed the "fillcol" column.
- the vi-like "wrapmargin" setting sets the column past which
entering more input will cause a line break.
i think we should eliminate the historical mechanism in favor of the vi-ish
one, and i've marked it [deprecated] in vile.hlp. (as of version 5.6)
vim has a "textwidth" mode, which functions exactly like wrapmargin, except
that it is measured from the left. this prevents line length from changing
when the screen is resized, a drawback of wrapmargin. i propose eliminating
fillcol, and introducing textwidth.
--------------------------------------
It would be nice to have a 'smart' shiftwidth, that would jump back
to the indent level of the first previous line with a different
indent level. What I mean is:
aaa aa aa aaa aaa a
- bb bbb bb bb bb b
ccc cc cc cc c
<control-d>
where <control-d> would jump back to the indent level of the minus sign.
I encountered this behaviour with the 'EDIT' program on MS-DOS with
the backspace key. It's really quite convenient, although I am not so
sure it is smart to put both the 'shift-back' and 'backspace' behaviour
under the same key.
------------------------
The 'qsort' function in Watcom 10.0a for MS-DOS is broken (file-completion
hangs, probably due to stack overflow).
OS/2 version built with Watcom 10.0a does not open pipes successfully. Also it
does not do function keys.
------------------------
when a buffer is out of date wrt its file (i.e. you have been warned but
you answered 'n') it should say something like [out-of-date] on the modeline.
this should be true whether or not "check-modtimes" is on. in fact, in
retrospect, "check-modtimes" should really be "warn-out-of-date", or
something like that, and we should _always_ check modification times.
---------------------
Not sure if this will be generally useful, but I changed the tags.c
module to use "_qident" instead of "_ident" in the gototag() function.
This allows a user to goto C++ functions when the tag is a C++
class::function reference.
-----------------------------
add a copyright to the binary
------------------
The configure script returns the wrong value for HAVE_SYS_FILIO_H on
OSF/1-Alpha; termio.c doesn't compile with that problem.
also, the configure script returns the wrong value for GETPGRP_HAS_ARG on the
OSF/1-Alpha.
The test in configure compiles ok with "cc" but not with gcc.
ac_compile in configure uses cc as a default. This may be able
to be worked around by setting $CC to gcc before running
configure.
The install program is also much touchier about argument order; the
directory must follow -c argument.
Here's a partial diff which I think shows part of what must be done:
*** makefile.orig Thu Feb 15 11:56:40 1996
--- makefile Thu Feb 15 11:56:41 1996
***************
*** 404,410 ****
# dependency-rules for install/installdirs
$(bindir)/$(TARGET): $(TARGET)
! $(INSTALL_PROGRAM) $(TARGET) $@
$(bindir)/vile-manfilt: vile-manfilt
$(INSTALL_PROGRAM) vile-manfilt $@
$(bindir)/vile-c-filt: vile-c-filt
--- 404,410 ----
# dependency-rules for install/installdirs
$(bindir)/$(TARGET): $(TARGET)
! $(INSTALL_PROGRAM) $@ $(TARGET)
$(bindir)/vile-manfilt: vile-manfilt
$(INSTALL_PROGRAM) vile-manfilt $@
$(bindir)/vile-c-filt: vile-c-filt
But on the other hand, it also doesn't want the final name of the
binary in the path mentioned (bad: /usr/local/bin/vile; good: /usr/local/bin/);
I don't know enough make magic to get the basename stripped off. Perhaps
the "$@" should just be $(bindir).
----------------------
Another point of irritation is the autoindent behavior when inserting
blank lines; where vi will continue with a reduced indent after typing a
CTRL-D, vile insists on keeping the indent on par with the last non-empty
line. (^^D is intended to be temporary, 0^D should be permanent, even if
what you've entered is a blank line. don't know about simple ^D.)
----------------------
file completion doesn't work in the presence of directories which match
a substring of other files or directories. that is:
:!mkdir foo
:!mkdir food
:!mkdir fool
:e foo<TAB>
yields:
:e foo/
instead of also providing "food" and "fool" as choices. with the same
setup, the following:
:e food<TAB>
yields:
:e food/
instead of also providing "fool".
------------------------
When the various DOS/Windoze) .zip files are created, it would be nice if
they included a formatted version of the man page ('cuz DOS/Windoze doesn't
have nroff :-) ).
-----------
I'm using vile 5.6 on Unix and I'm wondering if you could add to
the next release of vile a method of bringing up a permanent list of
buffers automatically on startup i.e. execute the show-buffers command on
startup. [I realise that you haven't fully implemented the + command line
option in vile ]
------------
using '&' in pc-vile as the word-expansion replacement for ':' in regular
vile may someday conflict if we want to spawn stuff in the background
in VMS or win32 vile. clearly the expansion chars should be made
selectable. not a big deal yet....
------------------
"visual-matches" mode should be conditional on file size, or perhaps
on time taken to do the search...
-----------------
> It seems that some files were in the zipfile vil60dos.zip with the read
> only parameter set. I unzipped them with infozip's unzipper instead
> of pkunzip, and this became a read-only attribute on the vile.hlp
> file. If this is set, vile.exe can't find it.
----------------- (tom)
These are old wishes/bugs:
not every system declares the struct-type for utime/utimes.
make partial-completion in [History] set DOT to the current line
we're matching from, if [History] is visible.
make vile know about different types of tags-files (ctags -s, etags),
These date back to 5.4:
+ should next_column() use HIGHBIT test?
+ ':' expansion doesn't work with ":write-file" because DOT is
commandeered for use in a region.
+ should allow '$' in identifiers (or make it an option), and modify
'tags' to correspond
These are pre-6.0 (undated)
use CSet C/C++ to flush out unsigned stuff, especially flags that
ought to be.
add configure-test for 'ospeed'
implement gpm
vi sets '#' on attempted write; vile doesn't
--------------------------------------------------------------------------------
-- 96-09-27 (Lance Heller <lance.heller@wcom.com>)
If I start an aixterm:
aixterm -bd Wheat -fg Wheat -bg MidnightBlue -ms grey90
the problem does NOT occur.
However, if I start it as:
aixterm -geometry 90x70+110+1
it does.
The appropriate section from my .Xdefaults is:
aixterm*background: lightsalmon
aixterm*foreground: black
aixterm*saveLines: 1024
aixterm*scrollPosition: left
aixterm*pointerColor: black
aixterm*fullCursor: true
!aixterm.geometry: 90x73+448+0
aixterm*jumpScroll: true
aixterm*font: -ibm-serf-medium-r-normal-iso9241-10-100-75-75-*-*:
aixterm*scrollBar: true
aixterm*multiScroll: false
aixterm*iconName: aixterm
aixterm*pointerShape: pirate
-- 96-10-02 (tom)
add state (variables) to allow a macro to pick up the beginning/ending of a
selected area.
-- 96-10-14 (tom)
add 'mouse-hook' command (maybe generalize with "on" command)
-- 96-10-16 (tom)
implement $title for tcap.c
-- 96-10-19 (tom)
getting an error in $buffer-hook can blow away the buffer that's being hooked
(e.g., if it's a temporary file).
-- 96-10-25 (Anand Mandapati <anand@ibmoto.com>)
The behavior of 'yq' doesn't seem to match the behavior of other quoted
motion operations. Here are some sample scenarios:
I) Yank a single line NOT including the eol, ie, like 'y$'
1. I type 'yq$q' to yank the line all the way to the eol but
don't want to include the eol.
2. I then do a 'P' to put this yanked text before the cursor.
3. It behaves as 'y$P' would.
II) Yank a single line including the eol, ie, like 'yy'
1. I type 'yqjq' to yank the line all the way to the eol and
want to include the eol in the selection.
2. I then do a 'P' to put this yanked text before the cursor.
3. It behaves as 'y$P' would, not as 'yyp' would.
At first I thought maybe this is the expected behavior, but if I use
'c' to change the same selections instead of yank, the behavior seems
different. Let me clarify:
I) Change a single line NOT including the eol, ie, like 'c$'
1. I type 'cq$q' to change the line all the way to the eol but
don't want to include the eol.
2. This deletes all the way to the end of the line and I can
now type like normal.
II) Change a single line including the eol (no equiv. in vi?)
1. I type 'cqjq' to change the line all the way to the eol and
want to include the eol in the deletion.
2. This deletes the entire line including the eol, shifts the
next line up to the cursor and I can now type the replacement
text.
The behavior for 'd' and other quoted-motion operations is similar.
The 'yq' behavior doesn't seem logical. Do I just not understand it
correctly?
[I've seen a case of off-by-one on end of selections, possibly related - tom]
-- 96-11-09 (tom)
modify xvile blink_interval to use 2/3 duty-cycle
-- 96-11-22 (tom)
it should be possible to recode the tcap.c mouse-motion to use 'select()' to
check for the user holding down the mouse button, and use _that_ to control a
fake scrolling in the general direction of the mouse.
-- 97-01-17 (tom)
probably should use WINMARK logic, but it's too late (pre-7.0) to do this now.
-- 97-01-17 (tom)
mouse-clicking should set the position so I can use ` or ' to jump back.
-- 97-01-18 (Paul Fox <pgf@foxharp.boston.ma.us>)
another one i saw this afternoon: i got into a state where typing
":!rm append"
in an attempt to remove a file named "append" gave me
"[Improper line range]"
i was able to clear the condition with
":! ^H^Hrm append"
i haven't been able to reproduce this one.
-- 97-01-19 (Abraham V. George" <ageorge@ERC.MsState.Edu>)
While working with huge src files I find it very convenient to keep
bookmarks. If I use markers, i would loose them if I were to re-open
the file. One way I get through it is to make a book mark file of
'tags' file format. I can then get to that src line the same way I use
ctags reference.
-- 97-01-23 (Clayton Weaver <cgweav@eskimo.com>)
reports problem running a curses application within a shell buffer, wants
documentation clarified. Shell buffers, since they are the output from
redirecting stdout and stderr, won't look like the curses application intended.
(And since they don't accept interactive input, the curses application won't
work well, even when stdin is reconnected to /dev/tty).
-- 97-01-25 (tom)
when filtering, etc., via a pipe, we're interruptible and may be killed (at
least when running in gdb).
-- 97-02-09 (tom)
should add gcc's -Wwrite-strings warnings
-- 97-02-10 (tom)
on VMS, we don't get filename completion with "~", since that's not processed
in glob.c
-- 97-02-26 (Andy Harper <A.HARPER@kcl.ac.uk>)
Under VMS, the location of the package should be in a rooted directory
tree, let's say VILE_ROOT:[000000], with subdirectories for VAX
executables [BIN_VAX], Alpha executables [BIN_ALPHA], documentation
[DOC] and configuration [CONFIG].
[I believe he's suggesting it be installed this way - tom]
-- 97-03-08 (Otto Lind <otto.lind@softwire.com>)
I've been a user of vile since vile-3.33, and have noticed an obnoxious
bug which has appeared in later versions (I'm at 7.0). If you try and
execute the vi sequence:
1,$s:/:_:
it reports "[No pattern.]" when pressing the first ':'. The following
does work:
1,$s^/^_^
But my fingers are hardwired to use : as the substitution delimiter.
-- 97-04-02 (Clark Morgan <cmorgan@aracnet.com>)
Write pipes are broken on DOS.
-- 97-04-23 (Ron Olsen <ronolsen@lucent.com>)
I recently built version 7.0h of vile and xvile on my UnixWare 2.03 system.
vile and xvile (X11 version) seem to work well, but I'm having a problem with
filename completion with the MOTIF/menu version of xvile:
I have to hit TAB three times to get the list of possible completions, and then
when I enter the completion and hit Enter, xvile ignores the Enter key until I
use the mouse to scroll a window, and then hit Enter again. It looks as if
there are circumstances in which keyboard input is being ignored.
I also have minor pixelization problem with the MOTIF version: a thin red
border gets drawn around my window the second time I hit TAB during filename
completion.
-- 97-05-16 (Richard A Ward <wardra@nb.rockwell.com>)
I just started using vile 7.1 and I think there may be a new bug. When I
delete a large number of lines and try to undo, vile seems to hang.
-- 97-05-25 (Guido Socher <eedgus@aken104>)
Quoted motion should be usable as ranges for the colon commands. I.e., you
type "q: motion-command q" and only complete lines are marked. The cursor
jumps to the command input line as soon as you type the final q and prints the
range (e.g., 3,28).
-- 97-06-05 (tom)
The 'map' functions should allow mappings with embedded nulls.
-- 97-06-24 (Peter Gallasch <gal@adv.magwien.gv.at>)
No core dump was made, and no file in /tmp/ was created
[Reports a problem where xvile 7.1 exited with SIGIOT, no apparent reason. I
tried duplicating it, with limited success: after running several hours with
Purify, xvile exited (I think the linewrap logic is involved, he uses it in his
.vilerc). However, I'd not told Purify to follow child processed (which is
needed for X). Doing that, I had no repeat of the problem. - tom]
-- 97-06-27 (Curt Smith <csmith@ATLANTA.ViewCall.net>)
One xvile problem that only manifests itself on svr4 boxes is that when
exec'ing a shell via: ^x! or reading in a new file with wild cards, xvile is
sent a SIGSTP due to an attempt to fool with stdout/stderr or some such?
This problem has come and gone and doesn't exist on non-SVR4 systems like
Linux, DEC Unix that I've issued. Does exist on UnixWare, NCR Unix and
Solaris.
I had version of 6.x xvile that did not have this problem but had other X
problems. I compiled 7.0 and now this problem is back.
[the fix for this is to use the +fork option, or use the forkOnStartup resource
since spawning a new xvile process establishes a new process group - tom]
-- 97-07-07 (Larry Gensch <gensch@zk3.dec.com>)
I have noticed another oddity in the 7.1 version of vile: I use the window
manager fvwm2.0.45, and use the following focus policies:
Style "*" ClickToFocus, RandomPlacement, SmartPlacement
GlobalOpts ClickToFocusPassesClick,ClickToFocusRases
When xvile is launched from an xterm, it occasionally doesn't auto-focus like
it used to. In other words, I have always expected xvile to become the window
with the focus when it pops up (even if the cursor isn't in the window). Has
something changed between the last 6.x version and version 7 that would cause
this behavior?
-- 97-08-26 (Ed Henderson <Ed.Henderson@micron.com>)
I have been using vile for quite some time now. I use the file/function
name completion a lot.
Recently I started using Solaris. Now when I press Tab the vile (xvile)
window enters some sort of selected state. The border changes to include
a thin highlighted region around the inside perimeter, and further keystrokes
have no effect. A second press of the tab key clears this condition.
When completing a filename, I must press tab once, which completes the name
and enters the selected state, then press tab again to clear the selected
state. I generally hit tab one too many/few times and am already typing the
next 10 commands :-), so I get really screwed up.
-- 97-09-02 (tom)
The majormode code leaks memory in the qualifiers (e.g., suffixes and
preamble).
-- 97-09-04 (tom)
format-til does not work on rectangular regions (it should also take
into account the comment-prefix).
-- 97-09-11 (Keith Williams <kurris@hotmail.com>)
In xvile, do the following:
- select a word with the mouse (double-click)
- move the cursor to a line above the selection (ie: type "kkk")
- open a line (either 'o' or 'O')
- note that the text and selection behave correctly
- press ESC and then undo the line opening
- note that the text moves up, but the selection does not!
-- 97-09-16 (lar3ry gensch <lar3ry@tiac.net>)
The new menu code puts a tiny bar across the top of the screen even if no menus
are defined. That is, if I do not create menus but the menuing code is enabled
in xvile, it will still put up a tiny (5- or so- pixel) menubar without any
menu buttons in it. This is visually distracting and wastes some screen
real-estate.
-- 97-09-17 (Robert Chady <chady@concentric.net>)
There is one feature that I have not been able to find in vile. Was wondering
if you could tell me if I'm missing it, or if it really isn't there. If it
isn't there, maybe you could put it in :)
The feature is the ability to have reverse wraparound. This is for when you
backspace to the beginning of the line, rather than have to exit edit mode, go
into command mode, move up a line, and continue erasing the line, have it
automatically reverse wraparound. This is similar to emacs/joe/etc/etc and is
a very nice feature when you are trying to edit part of a sentence that is on
multiple lines.
[the arrow keys and others that generate escape sequences such as home/end
can move the cursor around in edit mode, though this is not exactly what
he's asking for - tom]
-- 97-11-12 (Scott Waldon <waldon@engineous.com>)
I was introduced to vile about 2 years ago and am really enjoying using it.
However, there is one little but very annoying bug that I am experiencing. I
switched to using vile about the same time that I switched to CDE and dtterms
(instead of xterms). In a dtterm the status line on the bottom is constantly
overwritten by some arbitrary line from the file forcing me to ^L constantly to
keep from being confused by stray "}" or other statements...
...Essentially, open any file, goto the bottom such that the last line lines up
just above the message line. Then <Shift>H and <k> which should scroll the
screen down by one and overwrite the message line. When I was capturing the
script output it also did it on the scroll down as well.
[this is a bug in dtterm: for example, scrolling lines 1-22 will cause line 23
to be written to line 22 rather than clearing line 22. The fix is to disable
scrolling regions (csr) in the terminfo description - tom]
-- 97-11-27 (tom)
should make tags-stack based on a buffer rather than its struct so I could
simply kill it.
-- 97-12-03 (tom)
The --without-shell configure option is experimental; note that a genuinely
secure editor should not allow directory names to be specified (but I think
that's the only omission).
-- 97-12-03 (tom)
EMX configuration looks ok (function keys, pipes, name-completion, color),
except that there's nothing to allow changing to a different device (e.g.,
"c:"). Must check/see if EMX supports that. The termcap files distributed
with EMX are incomplete & incorrect (should we distribute our own?).
-- 97-12-03 (tom)
Recently investigated two "POSIX" layers for WinNT: gnu-win32 b18 and UWIN
1.33 Neither is suitable for production use (both are still in alpha), so I'll
only make notes. I ran both of these on a longname filesystem:
gnu-win32
+ bash was reluctant to run the configure script (and inconsistent;
sometimes "sh configure" worked, other times "./configure").
+ configure script had to be "helped" since the tests for killpg,
etc., broke (process never returned).
+ the fcntl(0, F_SETFL, kbd_flags|O_NDELAY) call for tttypahead()
returns success though it does nothing. I stubbed it out to
get a workable program.
+ the "vt100" terminal emulator is limited-functionality (less, even,
than ANSI.SYS).
+ server pathnames begin with "//". There is some old code to support
Apollo (one of the sources that M$ copied), which seems to work for
this purpose.
UWIN:
+ the configure script mostly ran (though the previous version could
not run sed for constructing config.h).
+ 'environ' did not seem to be present (there's no configure test for
that yet).
+ the isready_c macro has to be tweaked (it doesn't correspond to any
of the other flavors).
+ appears to be same "vt100" emulator as gnu-win32 (perhaps it is).
-- 97-12-08 (paul)
as far as i can tell, procedures now share a namespace with built-in
functions, is that right? i see that if i "source pictmode.rc" i no longer
have to type "run pic". i can just type ":pic" instead. this is neat.
questions:
- can i bind a key to the new command "pic" at this point? i don't
seem to be able to. it seems like macros would be obsolete if
i could do this.
- can i define a procedure which acts as an "operator"? i.e. can i
define a procedure which should be named "xxx-til"? i can imagine
that with the perl hooks, it will be very tempting to write new
buffer-filtering stuff in perl (like sean's enhanced paragraph
formatter), and it would be really nice to define those as
operators (even if only line-oriented operations were supported, that
would be a big win), and bind them to a key.
-- 97-12-10 (Ilya Zakharevich <ilya@math.ohio-state.edu>)
In article <199712091406.JAA18712@postman.opengroup.org> you write:
> Highlights since 7.2:
> + beginnings of perl interface
Perl needs (to make the debugger visual) a file viewer which can be accessible
both by user, and by the *driver* program (say, via a pipe). Is it possible to
use vile for this (start it with an option to read commands from a pipe)?
An ability to highlight current line and use different colors for breakable
lines and lines with breakpoints would be also welcome.
-- 97-12-15 (Billy Little <billy_little@hso.link.com>)
is there any way to get the highlighting behavior when the highlighting begins
with a mouse double-click to behave the same way it does when in an xterm?
Specifically, if I double-click on some text in an xterm window, and without
releasing the mouse button after the second click, begin moving the pointer,
the xterm will highlight only the text associated with whole words.
-- 98-01-30 (Matthias Buelow <token@wicx50.informatik.uni-wuerzburg.de>)
things about vile that would be nice...
Backspacing over the beginning of line (at least when a newline has been
inserted in the current insertion/append command, like in vi) and something
like a jump-scroll (scrolling not one line but a couple of lines when going
over the last line of the current page, like in emacs) are imho a good idea.
...yanking text (for example, yanking to mark) could move the cursor to the
mark instead of keeping it at the current location (that would be like vi does
it).
-- 98-02-08 (tom)
Two users report a problem with xvile linked with Motif 2.0 on Linux.
(John Gotts <jgotts@engin.umich.edu> and Gary Ross <gdr@hooked.net>).
I am unable to reproduce the bug, but did find a bug in Purify which caused
realloc to clear its argument when invoked immediately after a fork.
According to these reports, the x_open function is being invoked twice, which
is incorrect; it breaks initialization, causing the scrollbar data to be null,
resulting in a core dump.
On the basis of earlier reports (and from reading news groups) I suggested that
it might be a conflict with glibc2 vs libc5 (no), that the OPT_WORKING code
might be a problem (no), and that forking xvile might be a problem with Motif
(no). Compiler optimization level may be related (both reports were for -O2
and up).
[98-05-27]
Revisiting this, another possibility is that the x_preparse_args(), which
initializes the display causes a ConfigureWindow event, which is initializing
the scrollbar arrays before x_open is actually called - but only for some
systems (e.g., Motif 2.x).
[98-06-16]
After upgrading to gcc 2.7.2.3, I found that it is due to a bug in gcc; when
optimizing it loses some code. Turning off optimization makes the problem go
away (tom).
-- 98-03-11 (Richard A Ward <wardra@rss.rockwell.com>)
I sometimes use a global command like
:g/LtADI/.-1,.+1d
to delete a multiple line groups. A file segment follows that I would use such
a command on. Vile doesn't allow this command. Vi does.
-- 98-04-12 (tom)
OS/2 pipes hang in a write-to-pipe (nothing to do with recent changes for
Win32). The EMX configuration can read/write pipes.
OS/2 mouse code probably eats too many CPU cycles; since coding that, I've
noticed that OS/2 is sometimes reluctant to switch windows vs EMX windows.
-- 98-05-25 (tom)
if I edit a :<number>, it doesn't necessarily get interpreted as a jump to line
<number>.
[98-07-27] checking this, I don't see that aspect, but do see that I cannot
edit a :<number> with an arrow key, since the arrow causes the <number> state
to be terminated, and start on the name. There'll always be the seam, but I
might be able to fix this by tinkering with eol_range so it would accept
left/right arrows.
-- 98-06-16 (Jim Crigler <crigler@seo.com>)
This may be specific to the fonts I'm using. When I compiled xvile
with
./configure --prefix=/usr/local --with-perl --with-screen=Xaw
make
on Linux (RH5), I can't see the decenders from g, q, y, etc. This happens with
both lucidatypewriter and courier in various sizes. On Solaris 2.4 at work
(same configure), it only happens with certain fonts. In both cases I use only
"real" fonts. Sizes:
10/12/14/18 (18 is almost too big to be unusable)
Actually, here's some more data: It seems to happen when the window gets
resized, either via the window manager or by setting the $font variable. (I
have some font sizes preset in a pseudo-menu I bring up in the command line via
a key mapping. It helps when someone else needs to look at code over my
shoulder to bump up to 18pt.) I frequently resize xvile via the window manager.
[I cannot reproduce this - tom]
-- 98-06-17 (Abigail <abigail@fnx.com>)
If you just typed a line of indented text, and have autoindent on, and you hit
return, the cursor goes to the next line, and is lined up with the previous
line. Just as it should be. Now I use backspace because I want to stop
indentation - or at least have less indentation. However, if I hit return
after hitting the backspace key a few times (and no other character in
between), the cursor lines up again with the original indented line - not with
the backspaced one.
Wouldn't it be nice to have an option of "aligning" with the blank line? Such
that if you backspace away indentation, then hit return, vile remembers you
wanted to decrease indentation?
-- 98-06-18 (Brian Moore <bem@news.cmc.net>)
I want to be able to do:
define-mode mail
define-submode mail suffixes \\(^\\(/tmp/mutt-[a-z]\\+-[0-9]\\+-[0-9]\\+\\)\\|\\(.followup\\|.letter\\)\\)$
define-submode mail wm 8
define-submode mail read-hook "del-sig"
In short, it'd be cool to be able to set hooks based on suffixes or other
signs-o-mode.
It'd be a bit cleaner than hacking '~if ¬ &seq $majormode "mail"'
stuff at the start of a procedure.
-- 98-06-24 (Clark Morgan)
If a vile user changes the value of a universal string mode (e.g.,
backup-style), the old value is carefully saved away in set_mode_value(), but
NOT _freed_ after the change.
-- 98-06-25 (Paul Fox)
officemate ... used to have his palette string set to:
set palette "7 4 2 14 1 5 3 0"
somehow this in combination with his desktop colors gave him white on
white with vile.exe
[the number of colors increased to 16, making the palette too short. we
should repeat the palette to fill out the number of colors, or set $ncolors
to match the palette - tom]
-- 98-08-21 (tom)
the [Registers] buffer "should" update '<' after each keystroke, but doesn't
seem to unless I do something call calls update(TRUE).
-- 98-09-01 (Otavio Exel <oexel@economatica.com.br>)
3) again, from inside a store-macro, how do I find out if there's a
region defined in the current buffer and, if possible, where the
region is?
-- 98-09-03 (tom)
wishlist:
implement ~foreach iterator. Add CMDFUNC flags to macro definition
and to describe-bindings view.
-- 98-09-09 (tom)
xvile doesn't build with unproto on SunOS because I get a -B option from
the imake configuration that K&R cc doesn't grok.
-- 99-02-11 (tom)
Steen Savstrup Kristensen <steen@saturn.emi.dtu.dk> reports that he needs to
use "EXTRA_CFLAGS = -n32 -mips4" to get xvile to build properly on IRIX.
SGI (IRIX's vendor) is transitioning from an old (-o32) 32-bit architecture
to 64-bit (with -n32 used for compatibility). I do not yet know how to write
a configure test that will set this properly.
Also, from examining config.log, the 64-bit compiler complains about casts
of addresses to 'int'. This may be a problem (i.e., cause configure tests
to go awry).
-- 99-02-12 (tom)
The lex filters will not build with old versions of lex, since those do not
support %x. We can support new versions of lex, but really recommend using
flex, since even the newer versions of lex apparently have more bugs.
-- 99-03-31 (tom)
The configure script should search for -lcrypt. It doesn't work on FreeBSD
anyway, since it's a stub of some sort.
-- 99-06-27 (tom)
add a pattern to ignore (strip) before checking suffix, e.g., .orig|~
-- 99-07-07 (tom)
down-row and up-row don't work properly with binary files.
(it's using the offset rather than the screen-column)
-- 99-08-29 (tom)
In timode, it would be nice to make '#' insert in column 1 like vile's cmode
does for preprocessor lines (indeed, make this work with the autoindent).
-- 99-10-03 (tom)
There's a remaining problem where re-reading a buffer does not repaint syntax
highlighting. That happens when it is not the current buffer, e.g., after
running a shell command.
-- 99-11-06 (tom)
The logic I'm using to detach a subprocess for $xshell works properly on
Linux (tested with libc5 and glibc2) and FreeBSD, but has problems on
Solaris (tested with 2.7) and SCO OpenServer. On both the latter, the
parent process will hang until all of the subprocess xterms are closed.
Also, on Solaris, the 'read' used in /bin/sh to hold the process on
completion does not work. (One can use XFree86 xterm's -hold option
to work around the last problem).
-- 99-12-06 (tom)
While fixing a file-descriptor leak in npflush for win32 (now32pipe), I
was running winvile.exe from a .bat script which ran nmake and then winvile.
The script itself I ran from vile.exe, which used w32pipe on WinNT. While
the leak was present, I could "use" ^X-q on the third try of the .bat script.
It appears that the inherited file-descriptor from vile.exe for the w32pipe
was "usable" for the winvile.exe process, when it coincided with the one that
winvile.exe was using.
-- 99-12-23 (tom)
even if I remove the -B option that imake provides, the SunOS unproto
wrapper does not build xvile because the compiler does not understand
#include VILE_ICON
-- 00-01-12 (tom)
Users can change $ncolors from its initial value, i.e., the maximum number of
colors that the terminal can display. However, not all windows (e.g., those
that are syntax-highlighted) will be repainted to restrict them to the limited
number of colors.
Even on a monochrome terminal, users can set the fcolor and bcolor modes
to black and white if vile is able to use color. The actual screen colors
are not updated.
-- 00-01-15 (paul)
... there's the vile-with-perl-on-solaris-with-gcc problem, where
"-B/usr/ccs/bin" needs to be added to LDFLAGS to make it work. i guess
it might be too late to change configure (though if solaris, and CC ==
gcc and perl is included, it would probably be a safe change -- i
think it's benign if /usr/ccs/bin doesn't exist), but we should at least
have it in a README/Install/ or something.
-- 00-03-24 (brendan)
Perl 5.6.0 is now out.
The simple change is that now all perl globals need a PL_ prefix (which
affects `errgv', `na' and `sv_undef' in perl.xs/ptypemap). The change
is backward compatible to 5.005 and *should* be to 5.004 although I've
been unable to test that version.
A bigger problem is that the tied filehandle mechanism appears to have
changed to some extent, and shell.pm no longer works.
The problem appears to be that Vile::Buffer does not implement an OPEN
method, and the re-opens of STDIN/STDOUT/STDERR to the pty in the child
appear to be calling it for some reason I've not yet had a chance to
track down.
-- 00-10-15 (tom)
The curses.c driver is still experimental. It has really only been tested
with ncurses on Linux. There are some problems displaying on backgrounds
other than black. The chief problem however is that under some circumstances
the terminal modes are not properly saved/restored when executing a shell
command (and a staircase effect results).
-- 01-01-22 (tom)
I did the bounds implementation in January 1998, but did not finish it at
that point. It does not (yet) handle limits on an expression delineated
by \( and \).
Considered making a configure option to use Henry Spencer's more up-to-date
regex library, but see that it requires null-terminated strings.
-- 01-06-13 (tom)
win32 (both), os/2 and even tcap could use a thread for the 'working' message.
-- 01-06-18 (tom)
spell checker should flag a repeated word if there's no intervening
punctuation.
-- 01-09-01 (tom)
from discussion with Clark Morgan, it would be nice to accept name-completion
on motion-operators as a special case for some interactive commands that now
accept just a few hardcoded items.
-- 01-12-07 (tom)
vile hits diskdrive too much when writing a file under cygwin (recommend
disabling resolve-links). It doesn't do that when I run an empty vile.rc (and
one user complains that win95 vile.exe does something similar.
-- 01-12-30 (tom)
modify hooks so I can pass parameters to them, adding logic to support an
$open-hook
-- 02-01-16 (tom)
The undo-dos-trim mode allows undo of the changes made to the buffer, but does
not restore the original recordseparator mode when an undo is made.
-- 02-02-03 (tom)
It would be nice to allow 'p' command in a [p-lines] buffer to generate a new
buffer such as [p-lines-2]. Also, it would be nice to allow reread of a given
[p-lines] buffer by remembering the buffer from which it was extracted, and the
corresponding command which generated it.
-- 02-02-08 (tom)
if we don't have HAVE_ACCESS defined, ffaccess() doesn't handle OR'd bits,
treats them as existence check.
-- 02-02-15 (tom)
if I have a [Tags x] buffer, and cd to another directory, vile does not pick up
the tags file from the new directory.
-- 02-02-23 (tom)
nrmode should be able to handle \fRxx\fByy\fIaa\fR
-- 02-05-01 (tom)
:error-buffer doesn't allow us to use finderr pointing into an internal buffer
such as the <manpage> stuff, since the patterns for buffer names include
characters that normally aren't part of filenames.
-- 03-03-18 (tom)
Recent improvements allow search/replace for strings with null characters, but
the related variables $search and $replacepat assume strings are terminated by
nulls. It would be nice to reimplement those - doing this is a little
complicated since it may impact the use of error_val for propagating error
conditions in expression evaluation.
-- 03-06-29 (tom)
The screen cannot be resized while doing a multimotion command initiated by the
mouse (because of the beginDisplay/endofDisplay in tcap.c interacting with the
check in newscreensize). When the command ends, vile will update the
screensize.
-- 07-11-26 (tom)
filters using fltstack.h won't build with OSF/1 4.0D since its native flex
declares yy_start (used in BEGIN) after the first code segment - looks like
it's in preparation for the pattern definitions. I cannot work around that
(use flex 2.54a).
-- 08-01-13 (tom)
lex/flex (all known versions) have no real localization support, using only
a POSIX table for the character classes. I have in mind that this could be
done by a new variant of flex which does the following:
a) optionally uses a localized table for character classes. Reading
flex's source, it appears that this was part of its initial design,
though it does not behave that way.
b) optionally provides for reparsing the patterns, generating localized
tables at runtime. That would be doable if the lex program uses
exactly the same code (a common library) for building the stubbed
lexer/tables and for the runtime analysis.
so-called "new flex" 2.5.34 does not accept lexers written for POSIX lex.
(2.5.31 did accept most POSIX lexers...).
-- 08-03-09 (tom)
spell.pm requires a fairly recent Perl, since it uses File::Temp
That does not work with very old Perl, such as 5.05.002 - a workaround in
that case would be to comment out the "use spell" in vileperl.rc
-- 08-03-24 (tom)
Rendering UTF-8 with the curses driver is less reliable than using the
terminfo/termcap driver. That is because the curses library has its own
sense of locale which can interfere with vile's locale translations.
Taking that into account, vile will use only the current locale rather
than setting up a narrow locale to correspond to the wide locale when
using the curses driver.
There are two types of curses library against which vile could be linked.
Those are the "narrow" SVr4 curses and the "wide" X/Open curses. For the
latter, vile will assume that the curses library can actually display
wide characters. Not all implementations work well (ncursesw is preferred).
-- 08-04-10 (tom)
Select/paste in winvile works transparently for 8-bit (ASCII and ISO-8859-1)
data. It is possible to copy UTF-8 data from a buffer which stores UTF-8 (or
-16, -32), but the target must expect UTF-8, since winvile is not converting it
to the CF_UNICODETEXT type.
-- 08-07-12 (tom)
'@'command-line option with DJGPP (in a plain W2K cmd.exe shell) is interpreted
by cmd.exe to source the file into the command-line. Use vile.rc or use
environment variables.
-- 08-07-12 (tom)
The non-ASCII function key bindings in DJGPP do not work with the locale
configuration since the codes above 127 are filtered out, e.g., "\0\215"
becomes "\0".
-- 08-10-19 (tom)
mcolor shows only one part of the modeline extended-colors, due to limitations
of the normal color enumeration.
xvile doesn't allow modeline to be colored using extended-colors.
-- 08-11-30 (tom)
The scriptable vilemenu.rc relies on vile's scripting, which is not fully
available when xvile sets up the display. To work around this limitation,
xvile creates a fallback menu with just the About/Version entry initially, and
then fills in the complete menu - after the screen is first displayed.
It does this when it sees that the menu file contains directive lines, e.g.,
"~with". If no directives are found, xvile assumes the file is (as originally)
unscripted, and will initialize the menus before the screen is displayed.
-- 09-06-05 (tom)
The HTML syntax filter uses more start conditions than are supported in some
very old lex programs such as that bundled with HPUX. That refers to the list
on lines beginning with "%x", which is not adjustable in most lex
implementations (though the HPUX lex program suggests using the "-Xs" option
without actually accepting it). Use flex for those cases.
-- 10-04-11 (tom)
If editing a mixture of UTF-8 and non-UTF-8 buffers, the [History] buffer
will get a mixture of encodings corresponding to searches, etc., in the various
buffers. vile does not automatically translate those commands into the same
encoding.
|