Compare commits

...

431 Commits

Author SHA1 Message Date
Bram Moolenaar
6a51606966 updated for version 7.1-020 2007-07-05 08:11:42 +00:00
Bram Moolenaar
3ebc1e5112 updated for version 7.1-019 2007-07-05 07:54:17 +00:00
Bram Moolenaar
e649ef0fdd updated for version 7.1-018 2007-06-28 20:18:51 +00:00
Bram Moolenaar
5386a123f5 updated for version 7.1-017 2007-06-28 20:02:32 +00:00
Bram Moolenaar
7f51474324 updated for version 7.1-016 2007-06-28 19:33:43 +00:00
Bram Moolenaar
f15f943e0c updated for version 7.1-015 2007-06-28 11:07:21 +00:00
Bram Moolenaar
3011815c8a updated for version 7.1-014 2007-06-28 10:49:22 +00:00
Bram Moolenaar
786b1dc2a4 updated for version 7.1-013 2007-06-28 10:03:45 +00:00
Bram Moolenaar
96bb621f25 updated for version 7.1-012 2007-06-19 18:52:53 +00:00
Bram Moolenaar
1ad2f13b37 updated for version 7.1-011 2007-06-19 18:27:18 +00:00
Bram Moolenaar
dc3213d855 updated for version 7.1-010 2007-06-19 16:03:50 +00:00
Bram Moolenaar
4b80a5179a updated for version 7.1-009 2007-06-19 15:44:58 +00:00
Bram Moolenaar
884aa898d4 updated for version 7.1-008 2007-06-19 15:31:05 +00:00
Bram Moolenaar
d827ada01c updated for version 7.1-008 2007-06-19 15:19:55 +00:00
Bram Moolenaar
e02d7b2a21 updated for version 7.1-007 2007-06-19 14:29:43 +00:00
Bram Moolenaar
512e6b838a updated for version 7.1-006 2007-06-19 13:36:52 +00:00
Bram Moolenaar
1864a4e0fd updated for version 7.1-005 2007-06-19 10:56:05 +00:00
Bram Moolenaar
b1269f1184 updated for version 7.1-004 2007-06-19 09:51:25 +00:00
Bram Moolenaar
2d8ab99d10 updated for version 7.1-003 2007-06-19 08:06:18 +00:00
Bram Moolenaar
1042527371 updated for version 7.1-002 2007-05-15 07:12:25 +00:00
Bram Moolenaar
a2dd900999 updated for version 7.1-001 2007-05-14 17:38:30 +00:00
Bram Moolenaar
29c34723d5 updated for version 7.1 2007-05-12 15:34:06 +00:00
Bram Moolenaar
049377ee0f updated for version 7.1 2007-05-12 15:32:12 +00:00
Bram Moolenaar
6446f25b44 updated for version 7.1 2007-05-12 15:26:47 +00:00
Bram Moolenaar
4b4dc64876 updated for version 7.1 2007-05-12 15:23:40 +00:00
Bram Moolenaar
994cd1237f updated for version 7.1 2007-05-12 15:19:41 +00:00
Bram Moolenaar
b2a460d564 updated for version 7.1 2007-05-12 15:16:37 +00:00
Bram Moolenaar
1b826e540c updated for version 7.1 2007-05-12 15:14:36 +00:00
Bram Moolenaar
d38c6c9aae updated for version 7.1 2007-05-12 15:12:15 +00:00
Bram Moolenaar
54143f4031 updated for version 7.1 2007-05-12 15:10:39 +00:00
Bram Moolenaar
dd2a0d8ad1 updated for version 7.1 2007-05-12 15:07:00 +00:00
Bram Moolenaar
784287abf4 updated for version 7.1 2007-05-12 15:05:26 +00:00
Bram Moolenaar
1887debd2c updated for version 7.1 2007-05-12 15:04:19 +00:00
Bram Moolenaar
f5fcea70bd updated for version 7.1 2007-05-12 15:00:32 +00:00
Bram Moolenaar
69c2f17e98 updated for version 7.1 2007-05-12 14:57:31 +00:00
Bram Moolenaar
00333faa4d updated for version 7.1 2007-05-12 14:50:38 +00:00
Bram Moolenaar
4e32e4bc5e updated for version 7.1 2007-05-12 14:46:25 +00:00
Bram Moolenaar
0168560264 updated for version 7.1 2007-05-12 14:42:48 +00:00
Bram Moolenaar
d46bbc7203 updated for version 7.1 2007-05-12 14:38:41 +00:00
Bram Moolenaar
d427d1e381 updated for version 7.1 2007-05-12 14:34:30 +00:00
Bram Moolenaar
9048f94031 updated for version 7.1 2007-05-12 14:32:25 +00:00
Bram Moolenaar
ebcbd022e6 updated for version 7.1 2007-05-12 14:28:25 +00:00
Bram Moolenaar
e24138beaf updated for version 7.1 2007-05-12 14:24:45 +00:00
Bram Moolenaar
e0d7b3c052 updated for version 7.1 2007-05-12 14:23:41 +00:00
Bram Moolenaar
52cda2b83e updated for version 7.1 2007-05-12 14:17:21 +00:00
Bram Moolenaar
29055eedf4 updated for version 7.1 2007-05-12 14:15:39 +00:00
Bram Moolenaar
f17897d288 updated for version 7.1 2007-05-12 14:13:37 +00:00
Bram Moolenaar
c1c566fb6c updated for version 7.1 2007-05-12 14:10:12 +00:00
Bram Moolenaar
381ffaefa2 updated for version 7.1 2007-05-12 14:06:39 +00:00
Bram Moolenaar
666771a83c updated for version 7.1 2007-05-12 14:03:30 +00:00
Bram Moolenaar
8c406603ae updated for version 7.1 2007-05-12 13:57:53 +00:00
Bram Moolenaar
33fa75c86e updated for version 7.1 2007-05-12 13:55:30 +00:00
Bram Moolenaar
8b57e2efc0 updated for version 7.1 2007-05-12 13:52:50 +00:00
Bram Moolenaar
5f29c338d7 updated for version 7.1 2007-05-12 13:51:35 +00:00
Bram Moolenaar
9fe9d16c38 updated for version 7.1 2007-05-12 13:47:10 +00:00
Bram Moolenaar
5c3e56a2f7 updated for version 7.1 2007-05-12 13:43:14 +00:00
Bram Moolenaar
03d42258db updated for version 7.1 2007-05-12 13:40:39 +00:00
Bram Moolenaar
8f6d679581 updated for version 7.1 2007-05-12 13:38:39 +00:00
Bram Moolenaar
f313d68274 updated for version 7.1 2007-05-12 13:36:14 +00:00
Bram Moolenaar
376b899ac0 updated for version 7.1 2007-05-12 13:28:48 +00:00
Bram Moolenaar
833dc52378 updated for version 7.1 2007-05-12 13:26:40 +00:00
Bram Moolenaar
9e368dba9d updated for version 7.1 2007-05-12 13:25:01 +00:00
Bram Moolenaar
5a91e34372 updated for version 7.1 2007-05-12 13:20:15 +00:00
Bram Moolenaar
a9d52b81cd updated for version 7.1 2007-05-12 13:16:04 +00:00
Bram Moolenaar
032b3cf620 updated for version 7.1 2007-05-12 13:13:51 +00:00
Bram Moolenaar
341621425b updated for version 7.1 2007-05-12 13:12:19 +00:00
Bram Moolenaar
b5ba002aab updated for version 7.1 2007-05-12 13:06:29 +00:00
Bram Moolenaar
895f2609de updated for version 7.1 2007-05-12 13:03:54 +00:00
Bram Moolenaar
cb635362cc updated for version 7.1 2007-05-12 13:02:42 +00:00
Bram Moolenaar
b4b6a567a3 updated for version 7.1 2007-05-12 13:00:40 +00:00
Bram Moolenaar
5cdd0df5a9 updated for version 7.1 2007-05-12 12:58:05 +00:00
Bram Moolenaar
fe265ff56f updated for version 7.1b-002 2007-05-11 18:15:45 +00:00
Bram Moolenaar
060f1f08b3 updated for version 7.1b-001 2007-05-10 20:17:29 +00:00
Bram Moolenaar
bae0c16cc4 updated for version 7.1b 2007-05-10 19:30:25 +00:00
Bram Moolenaar
45667517ba updated for version 7.1b 2007-05-10 19:24:43 +00:00
Bram Moolenaar
49325942f5 updated for version 7.1b 2007-05-10 19:19:59 +00:00
Bram Moolenaar
5f52cff1b3 updated for version 7.1b 2007-05-10 19:08:09 +00:00
Bram Moolenaar
25394022f2 updated for version 7.1b 2007-05-10 19:06:20 +00:00
Bram Moolenaar
3ad16f3fe6 updated for version 7.1b 2007-05-10 19:00:27 +00:00
Bram Moolenaar
b8017e7a03 updated for version 7.1b 2007-05-10 18:59:07 +00:00
Bram Moolenaar
cf0dfa2f18 updated for version 7.1b 2007-05-10 18:52:16 +00:00
Bram Moolenaar
e590119ea7 updated for version 7.1b 2007-05-10 18:46:18 +00:00
Bram Moolenaar
34e0bfaa80 updated for version 7.1b 2007-05-10 18:44:18 +00:00
Bram Moolenaar
b15c833222 updated for version 7.1b 2007-05-10 18:40:02 +00:00
Bram Moolenaar
10c56952d8 updated for version 7.1b 2007-05-10 18:38:52 +00:00
Bram Moolenaar
335437bb24 updated for version 7.1b 2007-05-10 18:32:52 +00:00
Bram Moolenaar
79166c430b updated for version 7.1b 2007-05-10 18:29:51 +00:00
Bram Moolenaar
ccc18222dd updated for version 7.1b 2007-05-10 18:25:20 +00:00
Bram Moolenaar
2c7a763832 updated for version 7.1b 2007-05-10 18:19:11 +00:00
Bram Moolenaar
720c710091 updated for version 7.1b 2007-05-10 18:07:50 +00:00
Bram Moolenaar
25bc63d168 updated for version 7.1b 2007-05-10 18:05:13 +00:00
Bram Moolenaar
035db9f0e1 updated for version 7.1b 2007-05-10 18:02:27 +00:00
Bram Moolenaar
7aa9f6a03a updated for version 7.1b 2007-05-10 18:00:30 +00:00
Bram Moolenaar
2b64440353 updated for version 7.1b 2007-05-10 17:56:19 +00:00
Bram Moolenaar
933eb39d67 updated for version 7.1b 2007-05-10 17:52:45 +00:00
Bram Moolenaar
a38edcde16 updated for version 7.1b 2007-05-10 17:46:55 +00:00
Bram Moolenaar
29466f2b4f updated for version 7.1b 2007-05-10 17:45:37 +00:00
Bram Moolenaar
3d27a45f9a updated for version 7.1b 2007-05-10 17:44:18 +00:00
Bram Moolenaar
044b68f42a updated for version 7.1b 2007-05-10 17:39:52 +00:00
Bram Moolenaar
7263a77b99 updated for version 7.1b 2007-05-10 17:35:54 +00:00
Bram Moolenaar
2bb8df23dc updated for version 7.1b 2007-05-10 17:26:28 +00:00
Bram Moolenaar
ff1d0d4cf5 updated for version 7.1b 2007-05-10 17:24:16 +00:00
Bram Moolenaar
4868726a3f updated for version 7.1b 2007-05-10 17:17:07 +00:00
Bram Moolenaar
82038d7312 updated for version 7.1b 2007-05-10 17:15:45 +00:00
Bram Moolenaar
e34bd1f502 updated for version 7.1b 2007-05-10 17:06:00 +00:00
Bram Moolenaar
ad5fd673c7 updated for version 7.1b 2007-05-10 17:04:44 +00:00
Bram Moolenaar
e531ce2c84 updated for version 7.1b 2007-05-10 17:03:39 +00:00
Bram Moolenaar
0c4b5bd38f updated for version 7.1b 2007-05-10 17:02:32 +00:00
Bram Moolenaar
80ec845282 updated for version 7.1b 2007-05-10 17:00:48 +00:00
Bram Moolenaar
8acbe168a8 updated for version 7.1b 2007-05-10 16:58:19 +00:00
Bram Moolenaar
c1762ccb6f updated for version 7.1b 2007-05-10 16:56:30 +00:00
Bram Moolenaar
f1dc4965b5 updated for version 7.1b 2007-05-10 16:50:23 +00:00
Bram Moolenaar
f711faf099 updated for version 7.1b 2007-05-10 16:48:19 +00:00
Bram Moolenaar
b6799acd2d updated for version 7.1b 2007-05-10 16:44:05 +00:00
Bram Moolenaar
143c38cd31 updated for version 7.1b 2007-05-10 16:41:10 +00:00
Bram Moolenaar
706cdebcf8 updated for version 7.1a-001 2007-05-06 21:55:31 +00:00
Bram Moolenaar
a022bb3567 updated for version 7.1a 2007-05-06 17:22:46 +00:00
Bram Moolenaar
2d0ed69d58 updated for version 7.1a 2007-05-06 17:19:06 +00:00
Bram Moolenaar
89cf6cf04c updated for version 7.1a 2007-05-06 16:50:15 +00:00
Bram Moolenaar
edfe968e1a updated for version 7.1a 2007-05-06 16:46:03 +00:00
Bram Moolenaar
ad44decbac updated for version 7.1a 2007-05-06 16:41:27 +00:00
Bram Moolenaar
fee049ad25 updated for version 7.1a 2007-05-06 16:39:48 +00:00
Bram Moolenaar
8da4467eb3 updated for version 7.1a 2007-05-06 16:33:11 +00:00
Bram Moolenaar
7b85141b84 updated for version 7.1a 2007-05-06 16:28:11 +00:00
Bram Moolenaar
b317167494 updated for version 7.1a 2007-05-06 16:19:19 +00:00
Bram Moolenaar
1f8ae7a083 updated for version 7.1a 2007-05-06 16:15:07 +00:00
Bram Moolenaar
b57bf7277b updated for version 7.1a 2007-05-06 15:48:14 +00:00
Bram Moolenaar
7ec09eeb83 updated for version 7.1a 2007-05-06 15:30:35 +00:00
Bram Moolenaar
15aa18172b updated for version 7.1a 2007-05-06 15:28:16 +00:00
Bram Moolenaar
24652c0005 updated for version 7.1a 2007-05-06 15:11:45 +00:00
Bram Moolenaar
d955be3f20 updated for version 7.1a 2007-05-06 14:33:06 +00:00
Bram Moolenaar
6b803a739f updated for version 7.1a 2007-05-06 14:25:46 +00:00
Bram Moolenaar
17e79197d5 updated for version 7.1a 2007-05-06 14:15:36 +00:00
Bram Moolenaar
8cfdc0df95 updated for version 7.1a 2007-05-06 14:12:36 +00:00
Bram Moolenaar
da65f156f3 updated for version 7.1a 2007-05-06 13:54:35 +00:00
Bram Moolenaar
8d1ab51e8f updated for version 7.1a 2007-05-06 13:49:21 +00:00
Bram Moolenaar
6519ac87d8 updated for version 7.1a 2007-05-06 13:45:52 +00:00
Bram Moolenaar
d55de224a0 updated for version 7.1a 2007-05-06 13:38:48 +00:00
Bram Moolenaar
ef2f6569ce updated for version 7.1a 2007-05-06 13:32:59 +00:00
Bram Moolenaar
c3739303b0 updated for version 7.1a 2007-05-06 13:28:50 +00:00
Bram Moolenaar
d7afed3753 updated for version 7.1a 2007-05-06 13:26:41 +00:00
Bram Moolenaar
9fc8c24ef8 updated for version 7.1a 2007-05-06 13:23:02 +00:00
Bram Moolenaar
024678745b updated for version 7.1a 2007-05-06 13:22:01 +00:00
Bram Moolenaar
ff4a37e325 updated for version 7.1a 2007-05-06 13:18:29 +00:00
Bram Moolenaar
ea430ea7d5 updated for version 7.1a 2007-05-06 13:10:49 +00:00
Bram Moolenaar
e9400a45da updated for version 7.1a 2007-05-06 13:04:32 +00:00
Bram Moolenaar
24b231793e updated for version 7.1a 2007-05-06 12:54:06 +00:00
Bram Moolenaar
9e1d2839c6 updated for version 7.1a 2007-05-06 12:51:41 +00:00
Bram Moolenaar
a9af0e6a0a updated for version 7.1a 2007-05-06 12:48:13 +00:00
Bram Moolenaar
1f5c517296 updated for version 7.1a 2007-05-06 12:46:22 +00:00
Bram Moolenaar
36f5ac0859 updated for version 7.1a 2007-05-06 12:40:34 +00:00
Bram Moolenaar
623fe606ae updated for version 7.1a 2007-05-06 12:39:05 +00:00
Bram Moolenaar
7bff313a94 updated for version 7.1a 2007-05-06 12:34:30 +00:00
Bram Moolenaar
7528dd68a7 updated for version 7.1a 2007-05-06 12:32:12 +00:00
Bram Moolenaar
b5dd424dc3 updated for version 7.1a 2007-05-06 12:28:24 +00:00
Bram Moolenaar
8bc7847e20 updated for version 7.1a 2007-05-06 12:26:25 +00:00
Bram Moolenaar
82de0d760b updated for version 7.1a 2007-05-06 12:18:31 +00:00
Bram Moolenaar
5c5b0941ca updated for version 7.1a 2007-05-06 12:07:59 +00:00
Bram Moolenaar
c980de3382 updated for version 7.1a 2007-05-06 11:59:04 +00:00
Bram Moolenaar
4e86cbab27 updated for version 7.1a 2007-05-06 11:56:32 +00:00
Bram Moolenaar
044defef06 updated for version 7.1a 2007-05-06 11:55:00 +00:00
Bram Moolenaar
be860d34dd updated for version 7.1a 2007-05-06 11:53:06 +00:00
Bram Moolenaar
7b98ce07ce updated for version 7.1a 2007-05-06 11:29:37 +00:00
Bram Moolenaar
83e138c606 updated for version 7.1a 2007-05-05 18:27:07 +00:00
Bram Moolenaar
c81e5e79a0 updated for version 7.1a 2007-05-05 18:24:42 +00:00
Bram Moolenaar
9aae141a6b updated for version 7.1a 2007-05-05 18:01:06 +00:00
Bram Moolenaar
756ec0f3c9 updated for version 7.1a 2007-05-05 17:59:48 +00:00
Bram Moolenaar
313b7237ad updated for version 7.1a 2007-05-05 17:56:55 +00:00
Bram Moolenaar
9964e468c0 updated for version 7.1a 2007-05-05 17:54:07 +00:00
Bram Moolenaar
d5ab34bd5e updated for version 7.1a 2007-05-05 17:15:44 +00:00
Bram Moolenaar
0630b8d96d updated for version 7.1a 2007-05-05 17:11:56 +00:00
Bram Moolenaar
dd2a3cda55 updated for version 7.1a 2007-05-05 17:10:09 +00:00
Bram Moolenaar
3ed4447ed7 updated for version 7.0-243 2007-05-05 10:52:16 +00:00
Bram Moolenaar
aea02fa475 updated for version 7.0-242 2007-05-04 20:29:09 +00:00
Bram Moolenaar
4142324d25 updated for version 7.0-241 2007-05-03 20:11:13 +00:00
Bram Moolenaar
ee79cbc7af updated for version 7.0-240 2007-05-02 19:50:14 +00:00
Bram Moolenaar
eeefcc7723 updated for version 7.0-239 2007-05-01 21:21:21 +00:00
Bram Moolenaar
0ddf0a7df0 updated for version 7.0-238 2007-05-01 20:04:53 +00:00
Bram Moolenaar
8243a7928b updated for version 7.0-237 2007-05-01 17:05:03 +00:00
Bram Moolenaar
914572aba4 updated for version 7.0-236 2007-05-01 11:37:47 +00:00
Bram Moolenaar
d9fe7c4bb8 updated for version 7.0-235 2007-04-29 11:53:56 +00:00
Bram Moolenaar
3d43a6658c updated for version 7.0-234 2007-04-27 20:15:55 +00:00
Bram Moolenaar
bbe8c3f735 updated for version 7.0-233 2007-04-26 16:40:56 +00:00
Bram Moolenaar
79ee315b72 updated for version 7.0-232 2007-04-26 16:20:50 +00:00
Bram Moolenaar
1c53628518 updated for version 7.0-231 2007-04-26 15:21:56 +00:00
Bram Moolenaar
d267b9c167 updated for version 7.0-230 2007-04-26 15:06:45 +00:00
Bram Moolenaar
4076b79afd updated for version 7.0-229 2007-04-26 14:48:01 +00:00
Bram Moolenaar
a24424370c updated for version 7.0-228 2007-04-26 14:26:37 +00:00
Bram Moolenaar
053b9fa9c2 updated for version 7.0-227 2007-04-26 14:09:42 +00:00
Bram Moolenaar
97006f1ce8 updated for version 7.0-226 2007-04-26 09:04:31 +00:00
Bram Moolenaar
87c1996491 updated for version 7.0-225 2007-04-26 08:54:21 +00:00
Bram Moolenaar
63b9254b8e updated for version 7.0-224 2007-03-27 14:57:09 +00:00
Bram Moolenaar
7cc36e9402 updated for version 7.0-223 2007-03-27 10:42:05 +00:00
Bram Moolenaar
39353fdbec updated for version 7.0-222 2007-03-27 09:02:11 +00:00
Bram Moolenaar
5b6b1cae34 updated for version 7.0-221 2007-03-27 08:19:43 +00:00
Bram Moolenaar
4940e3f2c3 updated for version 7.0-220 2007-03-25 15:49:08 +00:00
Bram Moolenaar
867a4b7630 updated for version 7.0-219 2007-03-18 20:51:46 +00:00
Bram Moolenaar
49104e4038 updated for version 7.0-218 2007-03-15 21:54:01 +00:00
Bram Moolenaar
c432b50937 updated for version 7.0-217 2007-03-15 20:38:26 +00:00
Bram Moolenaar
d326ce83d5 updated for version 7.0-216 2007-03-11 14:48:29 +00:00
Bram Moolenaar
48c2c9a19a updated for version 7.0-215 2007-03-08 19:34:12 +00:00
Bram Moolenaar
552f8a1140 updated for version 7.0-214 2007-03-08 17:12:08 +00:00
Bram Moolenaar
6417da604d updated for version 7.0-213 2007-03-08 13:49:53 +00:00
Bram Moolenaar
c8da3119cf updated for version 7.0-212 2007-03-08 12:36:46 +00:00
Bram Moolenaar
9248e6e12e updated for version 7.0-211 2007-03-08 12:10:13 +00:00
Bram Moolenaar
6cbce9d0db updated for version 7.0-210 2007-03-08 10:01:03 +00:00
Bram Moolenaar
454ec05a47 updated for version 7.0-209 2007-03-08 09:20:28 +00:00
Bram Moolenaar
38323e4f4a updated for version 7.0-208 2007-03-06 19:22:53 +00:00
Bram Moolenaar
81b85876ad updated for version 7.0-207 2007-03-04 20:22:01 +00:00
Bram Moolenaar
733f0a286e updated for version 7.0-206 2007-03-02 18:56:27 +00:00
Bram Moolenaar
33c4fb68bf updated for version 7.0-205 2007-02-27 22:03:05 +00:00
Bram Moolenaar
f2a4e33ffb updated for version 7.0-204 2007-02-27 17:08:16 +00:00
Bram Moolenaar
7f6ca07606 updated for version 7.0-203 2007-02-27 16:21:38 +00:00
Bram Moolenaar
311d982b6f updated for version 7.0-202 2007-02-27 15:48:28 +00:00
Bram Moolenaar
602eb74de6 updated for version 7.0-201 2007-02-20 03:43:38 +00:00
Bram Moolenaar
fa3491a0e0 updated for version 7.0-200 2007-02-20 02:49:19 +00:00
Bram Moolenaar
09a16b5f09 updated for version 7.0-199 2007-02-20 02:31:20 +00:00
Bram Moolenaar
77f66d6c8d updated for version 7.0-198 2007-02-20 02:16:18 +00:00
Bram Moolenaar
85c79d30ff updated for version 7.0-197 2007-02-20 01:59:20 +00:00
Bram Moolenaar
0396ab0156 updated for version 7.0-196 2007-02-19 23:14:18 +00:00
Bram Moolenaar
373154b00c updated for version 7.0-195 2007-02-13 05:19:30 +00:00
Bram Moolenaar
ad40f02cd9 updated for version 7.0-194 2007-02-13 03:01:39 +00:00
Bram Moolenaar
b01a8b749b updated for version 7.0-193 2007-02-13 02:47:22 +00:00
Bram Moolenaar
47b8b15b5f updated for version 7.0-192 2007-02-07 02:41:57 +00:00
Bram Moolenaar
48b66fb5a7 updated for version 7.0-191 2007-02-04 01:58:18 +00:00
Bram Moolenaar
86ea76404e updated for version 7.0-190 2007-02-04 01:48:10 +00:00
Bram Moolenaar
0739a1e671 updated for version 7.0-189 2007-02-04 01:37:39 +00:00
Bram Moolenaar
8c471fa0b3 updated for version 7.0-188 2007-01-16 21:14:45 +00:00
Bram Moolenaar
8dd1aa58ad updated for version 7.0-187 2007-01-16 20:33:19 +00:00
Bram Moolenaar
fb7c90c0fa updated for version 7.0-186 2007-01-16 15:01:41 +00:00
Bram Moolenaar
56da797e6d updated for version 7.0-185 2007-01-16 14:46:32 +00:00
Bram Moolenaar
84c4d79ad4 updated for version 7.0-184 2007-01-16 14:18:41 +00:00
Bram Moolenaar
863b53b72e updated for version 7.0-183 2007-01-14 14:28:34 +00:00
Bram Moolenaar
89ed3dfd87 updated for version 7.0-182 2007-01-09 19:23:12 +00:00
Bram Moolenaar
9460b9d215 updated for version 7.0-181 2007-01-09 14:37:01 +00:00
Bram Moolenaar
d675e2c513 updated for version 7.0-180 2007-01-09 14:09:25 +00:00
Bram Moolenaar
df88dda91c updated for version 7.0-179 2007-01-09 13:34:50 +00:00
Bram Moolenaar
201863f75d updated for version 7.0-178 2006-12-05 21:06:46 +00:00
Bram Moolenaar
cf8e7d14aa updated for version 7.0-177 2006-12-05 20:43:17 +00:00
Bram Moolenaar
9c4b4ab3a6 updated for version 7.0-176 2006-12-05 20:29:56 +00:00
Bram Moolenaar
61b974b9ee updated for version 7.0-175 2006-12-05 09:32:29 +00:00
Bram Moolenaar
3b1b6c6259 updated for version 7.0-174 2006-11-28 20:40:00 +00:00
Bram Moolenaar
f278987c97 updated for version 7.0-173 2006-11-28 19:54:04 +00:00
Bram Moolenaar
4632d298ad updated for version 7.0-172 2006-11-28 17:36:37 +00:00
Bram Moolenaar
3d20ca1ad1 updated for version 7.0-171 2006-11-28 16:43:58 +00:00
Bram Moolenaar
85f868c3ae updated for version 7.0-170 2006-11-28 16:16:58 +00:00
Bram Moolenaar
b0c9a85bc8 updated for version 7.0-169 2006-11-28 15:14:56 +00:00
Bram Moolenaar
9334c3447a updated for version 7.0-168 2006-11-21 19:57:30 +00:00
Bram Moolenaar
b42dc236e9 updated for version 7.0-167 2006-11-21 18:36:05 +00:00
Bram Moolenaar
508b9e895d updated for version 7.0-166 2006-11-21 10:43:23 +00:00
Bram Moolenaar
93db975fa4 updated for version 7.0-165 2006-11-21 10:29:45 +00:00
Bram Moolenaar
9a51c6e35d updated for version 7.0-164 2006-11-14 19:25:02 +00:00
Bram Moolenaar
c65c491295 updated for version 7.0-163 2006-11-14 17:29:46 +00:00
Bram Moolenaar
84212825ed updated for version 7.0-162 2006-11-07 21:59:47 +00:00
Bram Moolenaar
908d53a230 updated for version 7.0-161 2006-11-07 18:05:31 +00:00
Bram Moolenaar
d333d1e086 updated for version 7.0-160 2006-11-07 17:43:47 +00:00
Bram Moolenaar
3f2d9814e5 updated for version 7.0-159 2006-11-07 17:02:30 +00:00
Bram Moolenaar
6ae133b915 updated for version 7.0-158 2006-11-01 20:25:45 +00:00
Bram Moolenaar
e9da72e482 updated for version 7.0-157 2006-11-01 17:34:40 +00:00
Bram Moolenaar
5a6404cff4 updated for version 7.0-156 2006-11-01 17:12:57 +00:00
Bram Moolenaar
219b87038a updated for version 7.0-155 2006-11-01 14:32:36 +00:00
Bram Moolenaar
74c596b5a8 updated for version 7.0-154 2006-11-01 11:44:31 +00:00
Bram Moolenaar
0cae847008 updated for version 7.0-153 2006-10-30 21:32:28 +00:00
Bram Moolenaar
8b610cfc7c updated for version 7.0-152 2006-10-24 20:29:10 +00:00
Bram Moolenaar
d13506289a updated for version 7.0-151 2006-10-24 20:01:06 +00:00
Bram Moolenaar
09ef47a32a updated for version 7.0-150 2006-10-24 19:36:02 +00:00
Bram Moolenaar
2647063968 updated for version 7.0-149 2006-10-24 19:12:40 +00:00
Bram Moolenaar
a2a31754a4 updated for version 7.0-148 2006-10-24 11:49:25 +00:00
Bram Moolenaar
cba2ae53a6 updated for version 7.0-147 2006-10-24 10:59:57 +00:00
Bram Moolenaar
38c0a6e6fa updated for version 7.0-146 2006-10-20 18:13:14 +00:00
Bram Moolenaar
2d8b2d8df9 updated for version 7.0-145 2006-10-17 20:38:28 +00:00
Bram Moolenaar
640009dca3 updated for version 7.0-144 2006-10-17 16:48:26 +00:00
Bram Moolenaar
5fc1a8b5d7 updated for version 7.0-143 2006-10-17 16:34:24 +00:00
Bram Moolenaar
a350f4a54f updated for version 7.0-142 2006-10-17 14:54:03 +00:00
Bram Moolenaar
1769d5a8c9 updated for version 7.0-141 2006-10-17 14:25:24 +00:00
Bram Moolenaar
8b402a0a87 updated for version 7.0-140 2006-10-17 13:16:39 +00:00
Bram Moolenaar
bc444827c2 updated for version 7.0-139 2006-10-17 11:37:50 +00:00
Bram Moolenaar
adcb9497e8 updated for version 7.0-138 2006-10-17 10:51:57 +00:00
Bram Moolenaar
b90daee952 updated for version 7.0-137 2006-10-17 09:49:09 +00:00
Bram Moolenaar
e163f1cb99 updated for version 7.0-136 2006-10-17 09:12:21 +00:00
Bram Moolenaar
685295c3c4 updated for version 7.0-135 2006-10-15 20:37:38 +00:00
Bram Moolenaar
b47a240593 updated for version 7.0-134 2006-10-15 13:09:12 +00:00
Bram Moolenaar
df40adfcf4 updated for version 7.0-133 2006-10-14 12:32:39 +00:00
Bram Moolenaar
c67764a705 updated for version 7.0-132 2006-10-12 19:14:26 +00:00
Bram Moolenaar
2cc9318401 updated for version 7.0-131 2006-10-10 19:56:03 +00:00
Bram Moolenaar
043545e0f6 updated for version 7.0-130 2006-10-10 16:44:07 +00:00
Bram Moolenaar
57ac3a2163 updated for version 7.0-129 2006-10-10 16:28:30 +00:00
Bram Moolenaar
da68cf33d8 updated for version 7.0-128 2006-10-10 15:35:57 +00:00
Bram Moolenaar
31e97bf0ee updated for version 7.0-127 2006-10-10 14:20:13 +00:00
Bram Moolenaar
f3442e7274 updated for version 7.0-126 2006-10-10 13:49:10 +00:00
Bram Moolenaar
6179c61827 updated for version 7.0-125 2006-10-10 11:26:53 +00:00
Bram Moolenaar
69a7e43028 updated for version 7.0-124 2006-10-10 10:55:47 +00:00
Bram Moolenaar
a1b5aa52c4 updated for version 7.0-123 2006-10-10 09:41:28 +00:00
Bram Moolenaar
9c69732279 updated for version 7.0-122 2006-10-09 20:11:17 +00:00
Bram Moolenaar
8838aeeea9 updated for version 7.0-121 2006-10-08 11:56:24 +00:00
Bram Moolenaar
21bffa7550 updated for version 7.0-120 2006-10-06 21:33:16 +00:00
Bram Moolenaar
c0a0ab5c54 updated for version 7.0-119 2006-10-06 18:39:58 +00:00
Bram Moolenaar
970cf12a3c updated for version 7.0-118 2006-10-03 15:21:42 +00:00
Bram Moolenaar
7bd2cd8d19 updated for version 7.0-117 2006-10-03 15:04:36 +00:00
Bram Moolenaar
d9b8733023 updated for version 7.0-116 2006-10-03 14:30:41 +00:00
Bram Moolenaar
5948a57702 updated for version 7.0-115 2006-10-03 13:49:29 +00:00
Bram Moolenaar
d9dfd57f4a updated for version 7.0-114 2006-10-03 13:36:13 +00:00
Bram Moolenaar
132283f943 updated for version 7.0-113 2006-10-03 13:22:23 +00:00
Bram Moolenaar
658ada69f4 updated for version 7.0-112 2006-10-03 13:02:36 +00:00
Bram Moolenaar
60a495f02e updated for version 7.0-111 2006-10-03 12:44:42 +00:00
Bram Moolenaar
89f3727bd9 updated for version 7.0-110 2006-09-26 11:48:34 +00:00
Bram Moolenaar
15ff6c1940 updated for version 7.0-109 2006-09-15 18:18:09 +00:00
Bram Moolenaar
e38536441c updated for version 7.0-108 2006-09-14 19:36:57 +00:00
Bram Moolenaar
bc1a7c32e3 updated for version 7.0-107 2006-09-14 19:04:14 +00:00
Bram Moolenaar
b38dea217f updated for version 7.0-106 2006-09-14 11:35:25 +00:00
Bram Moolenaar
27a2319183 updated for version 7.0-105 2006-09-14 09:27:26 +00:00
Bram Moolenaar
d29a9eefb6 updated for version 7.0-104 2006-09-14 09:07:34 +00:00
Bram Moolenaar
a391707d9f updated for version 7.0-103 2006-09-14 08:48:14 +00:00
Bram Moolenaar
494c82ae16 updated for version 7.0-102 2006-09-14 08:25:49 +00:00
Bram Moolenaar
ac2adc79f7 updated for version 7.0-101 2006-09-12 20:25:24 +00:00
Bram Moolenaar
2113a1d623 updated for version 7.0-100 2006-09-11 19:38:08 +00:00
Bram Moolenaar
05bb82f949 updated for version 7.0-099 2006-09-10 19:39:25 +00:00
Bram Moolenaar
29b2d2694d updated for version 7.0-098 2006-09-10 19:07:28 +00:00
Bram Moolenaar
7875acc373 updated for version 7.0-097 2006-09-10 13:51:17 +00:00
Bram Moolenaar
82ce8c7d0f updated for version 7.0-096 2006-09-10 11:56:59 +00:00
Bram Moolenaar
45125098b3 updated for version 7.0-095 2006-09-10 11:24:31 +00:00
Bram Moolenaar
55b7cf8ae2 updated for version 7.0-094 2006-09-09 12:52:42 +00:00
Bram Moolenaar
41e6cd5f2a updated for version 7.0-093 2006-09-09 11:37:51 +00:00
Bram Moolenaar
7ad753cf43 updated for version 7.0-092 2006-09-09 10:06:58 +00:00
Bram Moolenaar
6f11a4155c updated for version 7.0-091 2006-09-06 20:16:42 +00:00
Bram Moolenaar
4395a71d2c updated for version 7.0-090 2006-09-05 18:57:57 +00:00
Bram Moolenaar
1f788e7c43 updated for version 7.0-089 2006-09-05 16:30:40 +00:00
Bram Moolenaar
c218a2e9e3 updated for version 7.0-088 2006-09-05 15:32:11 +00:00
Bram Moolenaar
498efdb7f6 updated for version 7.0-087 2006-09-05 14:31:54 +00:00
Bram Moolenaar
53ed192b3c updated for version 7.0-086 2006-09-05 13:37:47 +00:00
Bram Moolenaar
6abf17bc7e updated for version 7.0-085 2006-09-05 11:36:02 +00:00
Bram Moolenaar
9fecb460fe updated for version 7.0-084 2006-09-05 10:59:47 +00:00
Bram Moolenaar
203335e4a9 updated for version 7.0-083 2006-09-03 14:35:42 +00:00
Bram Moolenaar
ac48dbff43 updated for version 7.0-082 2006-09-03 13:34:00 +00:00
Bram Moolenaar
68c3174108 updated for version 7.0-081 2006-09-02 15:54:18 +00:00
Bram Moolenaar
de94768cc7 updated for version 7.0-080 2006-09-02 14:32:22 +00:00
Bram Moolenaar
d9380f5c6d updated for version 7.0-079 2006-09-02 12:50:52 +00:00
Bram Moolenaar
42dd2a16bf updated for version 7.0-078 2006-09-02 12:04:57 +00:00
Bram Moolenaar
4e957aff02 updated for version 7.0-077 2006-09-02 11:41:07 +00:00
Bram Moolenaar
9526a543cc updated for version 7.0-076 2006-08-29 20:31:34 +00:00
Bram Moolenaar
9af1ba96e5 updated for version 7.0-075 2006-08-29 19:55:53 +00:00
Bram Moolenaar
8f2ff9fc86 updated for version 7.0-074 2006-08-29 19:26:50 +00:00
Bram Moolenaar
7073cc84bc updated for version 7.0-073 2006-08-29 16:33:06 +00:00
Bram Moolenaar
265e5074b5 updated for version 7.0-072 2006-08-29 16:13:22 +00:00
Bram Moolenaar
9160f30161 updated for version 7.0-071 2006-08-29 15:58:12 +00:00
Bram Moolenaar
89d4032cae updated for version 7.0-070 2006-08-29 15:30:07 +00:00
Bram Moolenaar
4100af7840 updated for version 7.0-069 2006-08-29 14:48:14 +00:00
Bram Moolenaar
e8c3a1408b updated for version 7.0-068 2006-08-29 14:30:35 +00:00
Bram Moolenaar
39fecab939 updated for version 7.0-067 2006-08-29 14:07:36 +00:00
Bram Moolenaar
2d694603c7 updated for version 7.0-066 2006-08-22 19:48:48 +00:00
Bram Moolenaar
621e2fdb5f updated for version 7.0-065 2006-08-22 19:36:17 +00:00
Bram Moolenaar
d7fd0c4a37 updated for version 7.0-064 2006-08-22 17:55:55 +00:00
Bram Moolenaar
0a5fd8badc updated for version 7.0-063 2006-08-16 20:02:22 +00:00
Bram Moolenaar
968bbbe436 updated for version 7.0-062 2006-08-16 19:41:08 +00:00
Bram Moolenaar
f83c5c0113 updated for version 7.0-061 2006-08-16 19:24:22 +00:00
Bram Moolenaar
f30e74c113 updated for version 7.0-060 2006-08-16 17:35:00 +00:00
Bram Moolenaar
a7ecc563e8 updated for version 7.0-059 2006-08-16 16:17:39 +00:00
Bram Moolenaar
0928caad1e updated for version 7.0-058 2006-08-16 16:03:34 +00:00
Bram Moolenaar
1c892474a8 updated for version 7.0-057 2006-08-16 15:34:57 +00:00
Bram Moolenaar
cbb37ad6fd updated for version 7.0-056 2006-08-16 15:04:21 +00:00
Bram Moolenaar
5495cc9fdf updated for version 7.0-055 2006-08-16 14:23:04 +00:00
Bram Moolenaar
18a0b1286b updated for version 7.0-054 2006-08-16 13:55:16 +00:00
Bram Moolenaar
b6baca5a63 updated for version 7.0-053 2006-08-15 20:24:14 +00:00
Bram Moolenaar
5f40231e5a updated for version 7.0-052 2006-08-15 19:40:35 +00:00
Bram Moolenaar
821d20a921 updated for version 7.0-051 2006-08-11 20:55:20 +00:00
Bram Moolenaar
8d60272ba8 updated for version 7.0-050 2006-08-08 19:34:19 +00:00
Bram Moolenaar
a8c4d5635c updated for version 7.0-049 2006-08-08 18:54:11 +00:00
Bram Moolenaar
c4c25bfd12 updated for version 7.0-048 2006-08-08 17:53:03 +00:00
Bram Moolenaar
7085ee750e updated for version 7.0-047 2006-08-08 17:08:52 +00:00
Bram Moolenaar
8ff38007cb updated for version 7.0-046 2006-08-08 16:07:03 +00:00
Bram Moolenaar
4666d50709 updated for version 7.0-045 2006-08-08 15:04:31 +00:00
Bram Moolenaar
334a3bfb0d updated for version 7.0-044 2006-08-08 14:45:44 +00:00
Bram Moolenaar
3709e7c885 updated for version 7.0-043 2006-08-08 14:29:16 +00:00
Bram Moolenaar
12dec75f71 updated for version 7.0-042 2006-07-23 20:37:09 +00:00
Bram Moolenaar
bde3526983 updated for version 7.0-041 2006-07-23 20:12:24 +00:00
Bram Moolenaar
412f7444ea updated for version 7.0-040 2006-07-23 19:51:57 +00:00
Bram Moolenaar
ecbaf5570a updated for version 7.0-039 2006-07-13 06:31:00 +00:00
Bram Moolenaar
ce6ef25cef updated for version 7.0-038 2006-07-12 19:49:41 +00:00
Bram Moolenaar
a3f2ecdecb updated for version 7.0-037 2006-07-11 21:01:01 +00:00
Bram Moolenaar
6c60ea21c2 updated for version 7.0-036 2006-07-11 20:36:45 +00:00
Bram Moolenaar
a260a9793b updated for version 7.0-035 2006-06-23 19:36:29 +00:00
Bram Moolenaar
b18e590647 updated for version 7.0-034 2006-06-23 15:59:09 +00:00
Bram Moolenaar
8aba950973 updated for version 7.0-033 2006-06-23 15:25:34 +00:00
Bram Moolenaar
d8a92d73e2 updated for version 7.0-032 2006-06-23 14:44:06 +00:00
Bram Moolenaar
149667adbb updated for version 7.0-031 2006-06-23 14:33:23 +00:00
Bram Moolenaar
400fe8804c updated for version 7.0-030 2006-06-22 19:15:58 +00:00
Bram Moolenaar
4015b2c0cb updated for version 7.0-029 2006-06-22 19:01:34 +00:00
Bram Moolenaar
654b5b5572 updated for version 7.0-028 2006-06-22 17:47:10 +00:00
Bram Moolenaar
35c9291be7 updated for version 7.0-027 2006-06-22 17:34:26 +00:00
Bram Moolenaar
b39ef128c8 updated for version 7.0-026 2006-06-22 16:19:31 +00:00
Bram Moolenaar
9dfb0f808f updated for version 7.0-025 2006-06-22 16:03:05 +00:00
Bram Moolenaar
5fcc3fead5 updated for version 7.0-024 2006-06-22 15:35:14 +00:00
Bram Moolenaar
be46a1eba6 updated for version 7.0-023 2006-06-22 15:13:21 +00:00
Bram Moolenaar
20ff79237a updated for version 7.0-022 2006-06-20 19:10:43 +00:00
Bram Moolenaar
4169da7845 updated for version 7.0-021 2006-06-20 18:49:32 +00:00
Bram Moolenaar
7b240600c5 updated for version 7.0-020 2006-06-20 18:39:51 +00:00
Bram Moolenaar
6a584dcea5 updated for version 7.0-019 2006-06-20 18:29:34 +00:00
Bram Moolenaar
c1cb78cb11 updated for version 7.0-018 2006-06-20 16:51:47 +00:00
Bram Moolenaar
5fffc13406 updated for version 7.0-017 2006-05-13 15:22:39 +00:00
Bram Moolenaar
ae177eb24f updated for version 7.0-016 2006-05-13 15:06:23 +00:00
Bram Moolenaar
9fb0e137ec updated for version 7.0-015 2006-05-13 13:51:38 +00:00
Bram Moolenaar
6a1a37028e updated for version 7.0-014 2006-05-13 13:41:03 +00:00
Bram Moolenaar
0440ca3371 updated for version 7.0-013 2006-05-13 13:24:33 +00:00
Bram Moolenaar
2347f062fb updated for version 7.0-012 2006-05-13 12:48:30 +00:00
Bram Moolenaar
2e97890d67 updated for version 7.0-011 2006-05-13 12:37:50 +00:00
Bram Moolenaar
c9a99918bd updated for version 7.0-010 2006-05-13 12:25:55 +00:00
Bram Moolenaar
5dd95a1058 updated for version 7.0-009 2006-05-13 12:09:24 +00:00
Bram Moolenaar
86c9ee2182 updated for version 7.0-008 2006-05-13 11:33:27 +00:00
Bram Moolenaar
223b4313c8 updated for version 7.0-007 2006-05-13 11:09:22 +00:00
Bram Moolenaar
70fc52750a updated for version 7.0-006 2006-05-13 10:55:25 +00:00
Bram Moolenaar
408b585732 updated for version 7.0-005 2006-05-13 10:44:07 +00:00
Bram Moolenaar
b4872945fd updated for version 7.0-004 2006-05-13 10:32:52 +00:00
Bram Moolenaar
8798be0e96 updated for version 7.0-003 2006-05-13 10:11:39 +00:00
Bram Moolenaar
862c27a03c updated for version 7.0-002 2006-05-13 09:09:15 +00:00
Bram Moolenaar
28e4c8d9f0 updated for version 7.0-001 2006-05-09 16:15:42 +00:00
Bram Moolenaar
1423b9d3b8 updated for version 7.0 2006-05-07 15:16:06 +00:00
Bram Moolenaar
2f567ab5c2 updated for version 7.0g05 2006-05-06 21:47:30 +00:00
Bram Moolenaar
56a907af93 updated for version 7.0g05 2006-05-06 21:44:30 +00:00
Bram Moolenaar
97e8f35600 updated for version 7.0g05 2006-05-06 21:40:45 +00:00
Bram Moolenaar
773560bc60 updated for version 7.0g05 2006-05-06 21:38:18 +00:00
Bram Moolenaar
7978344972 updated for version 7.0g04 2006-05-05 21:18:03 +00:00
Bram Moolenaar
9635157db0 updated for version 7.0g04 2006-05-05 21:16:59 +00:00
Bram Moolenaar
91170f8ae7 updated for version 7.0g04 2006-05-05 21:15:17 +00:00
Bram Moolenaar
f3a678875f updated for version 7.0g04 2006-05-05 21:09:41 +00:00
Bram Moolenaar
54a709eb08 updated for version 7.0g03 2006-05-04 21:57:11 +00:00
Bram Moolenaar
1471681726 updated for version 7.0g03 2006-05-04 21:54:08 +00:00
Bram Moolenaar
fdc9f4904e updated for version 7.0g03 2006-05-04 21:49:10 +00:00
Bram Moolenaar
a9587610f1 updated for version 7.0g03 2006-05-04 21:47:50 +00:00
Bram Moolenaar
3fb9eda7c9 updated for version 7.0g02 2006-05-03 21:29:58 +00:00
Bram Moolenaar
8b2d9c4318 updated for version 7.0g02 2006-05-03 21:28:47 +00:00
Bram Moolenaar
9c102387af updated for version 7.0g02 2006-05-03 21:26:49 +00:00
628 changed files with 45645 additions and 16968 deletions

View File

@@ -9,10 +9,10 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful
messages, shows current file name in window title, on-line messages, shows current file name in window title, on-line
help, rectangular cut/paste, etc., etc., etc... help, rectangular cut/paste, etc., etc., etc...
Version 7.0g. Also runs under UNIX, MSDOS and other systems. Version 7.1. Also runs under UNIX, MSDOS and other systems.
vim70grt.tgz contains the documentation and syntax files. vim71rt.tgz contains the documentation and syntax files.
vim70gbin.tgz contains the binaries. vim71bin.tgz contains the binaries.
vim70gsrc.tgz contains the sources. vim71src.tgz contains the sources.
Author: Bram Moolenaar et al. Author: Bram Moolenaar et al.

View File

@@ -568,7 +568,8 @@ RT_AMI = \
libs/arp.library \ libs/arp.library \
runtime/doc.info \ runtime/doc.info \
runtime/doc/*.info \ runtime/doc/*.info \
runtime/icons \ runtime/icons/README.txt \
runtime/icons/*.info \
runtime/icons.info \ runtime/icons.info \
runtime/macros.info \ runtime/macros.info \
runtime/macros/*.info \ runtime/macros/*.info \
@@ -644,7 +645,8 @@ EXTRA = \
$(SRC_EXTRA) \ $(SRC_EXTRA) \
README_extra.txt \ README_extra.txt \
src/VisVim/VisVim.dll \ src/VisVim/VisVim.dll \
farsi \ farsi/README.txt \
farsi/fonts/*/far-* \
runtime/vimlogo.xpm \ runtime/vimlogo.xpm \
src/swis.s \ src/swis.s \
src/tee/Makefile* \ src/tee/Makefile* \
@@ -669,12 +671,15 @@ LANG_GEN = \
runtime/tutor/README.*.txt \ runtime/tutor/README.*.txt \
runtime/tutor/Makefile \ runtime/tutor/Makefile \
runtime/tutor/tutor.?? \ runtime/tutor/tutor.?? \
runtime/tutor/tutor.cs.* \
runtime/tutor/tutor.gr.* \ runtime/tutor/tutor.gr.* \
runtime/tutor/tutor.hu.* \
runtime/tutor/tutor.ja.* \ runtime/tutor/tutor.ja.* \
runtime/tutor/tutor.ko.* \ runtime/tutor/tutor.ko.* \
runtime/tutor/tutor.pl.* \ runtime/tutor/tutor.pl.* \
runtime/tutor/tutor.ru.* \ runtime/tutor/tutor.ru.* \
runtime/tutor/tutor.sk.* \ runtime/tutor/tutor.sk.* \
runtime/tutor/tutor.tr.* \
runtime/tutor/tutor.zh.* \ runtime/tutor/tutor.zh.* \
runtime/spell/README.txt \ runtime/spell/README.txt \
runtime/spell/??/*.diff \ runtime/spell/??/*.diff \

View File

@@ -27,7 +27,7 @@ first:
# Some make programs use the last target for the $@ default; put the other # Some make programs use the last target for the $@ default; put the other
# targets separately to always let $@ expand to "first" by default. # targets separately to always let $@ expand to "first" by default.
all install uninstall tools config configure proto depend lint tags types test testclean clean distclean: all install uninstall tools config configure reconfig proto depend lint tags types test testclean clean distclean:
@echo "Starting make in the src directory." @echo "Starting make in the src directory."
@echo "If there are problems, cd to the src directory and run make there" @echo "If there are problems, cd to the src directory and run make there"
cd src && $(MAKE) $@ cd src && $(MAKE) $@
@@ -69,7 +69,7 @@ all install uninstall tools config configure proto depend lint tags types test t
# Before creating an archive first delete all backup files, *.orig, etc. # Before creating an archive first delete all backup files, *.orig, etc.
MAJOR = 7 MAJOR = 7
MINOR = 0g MINOR = 1
# Uncomment this line if the Win32s version is to be included. # Uncomment this line if the Win32s version is to be included.
DOSBIN_S = dosbin_s DOSBIN_S = dosbin_s
@@ -81,28 +81,29 @@ DOSBIN_S = dosbin_s
# runtime/doc/*.txt and nsis/gvim.nsi. Other things in README_os2.txt. For a # runtime/doc/*.txt and nsis/gvim.nsi. Other things in README_os2.txt. For a
# minor/major version: src/GvimExt/GvimExt.reg, src/vim.def, src/vim16.def. # minor/major version: src/GvimExt/GvimExt.reg, src/vim.def, src/vim16.def.
# - Correct included_patches[] in src/version.c. # - Correct included_patches[] in src/version.c.
# - Compile Vim with GTK, Perl, Python, TCL, Ruby, MZscheme, Cscope and "huge" # - Compile Vim with GTK, Perl, Python, TCL, Ruby, MZscheme (if you can make it
# features. Exclude workshop and SNiFF. # work), Cscope and "huge" features. Exclude workshop and SNiFF.
# - With these features: "make proto" (requires cproto and Motif installed; # - With these features: "make proto" (requires cproto and Motif installed;
# ignore warnings for missing include files, fix problems for syntax errors). # ignore warnings for missing include files, fix problems for syntax errors).
# - With these features: "make depend" (works best with gcc). # - With these features: "make depend" (works best with gcc).
# - "make lint" and check the output (ignore GTK warnings). # - "make lint" and check the output (ignore GTK warnings).
# - Enable the efence library in "src/Makefile" and run "make test". May # - Enable the efence library in "src/Makefile" and run "make test". May
# require disabling Python to avoid trouble with threads. # require disabling Python and Ruby to avoid trouble with threads.
# - Check for missing entries in runtime/makemenu.vim (with checkmenu script). # - Check for missing entries in runtime/makemenu.vim (with checkmenu script).
# - Check for missing options in runtime/optwin.vim et al. (with check.vim). # - Check for missing options in runtime/optwin.vim et al. (with check.vim).
# - Do "make menu" to update the runtime/synmenu.vim file. # - Do "make menu" to update the runtime/synmenu.vim file.
# - Add remarks for changes to runtime/doc/version7.txt. # - Add remarks for changes to runtime/doc/version7.txt.
# - Check that runtime/doc/help.txt doesn't contain entries in "LOCAL
# ADDITIONS".
# - In runtime/doc run "make" and "make html" to check for errors. # - In runtime/doc run "make" and "make html" to check for errors.
# - Check if src/Makefile and src/feature.h don't contain any personal # - Check if src/Makefile and src/feature.h don't contain any personal
# preferences or the GTK, Perl, etc. mentioned above. # preferences or the GTK, Perl, etc. mentioned above.
# - Check that runtime/doc/help.txt doesn't contain entries in "LOCAL
# ADDITIONS".
# - Check file protections to be "644" for text and "755" for executables (run # - Check file protections to be "644" for text and "755" for executables (run
# the "check" script). # the "check" script).
# - Check compiling on Amiga, MS-DOS and MS-Windows. # - Check compiling on Amiga, MS-DOS and MS-Windows.
# - Delete all *~, *.sw?, *.orig, *.rej files # - Delete all *~, *.sw?, *.orig, *.rej files
# - "make unixall", "make extra", "make lang", "make html" # - "make unixall", "make extra", "make lang", "make html"
# - Make diff files against the previous release: "makediff7 7.1 7.2"
# #
# Amiga: # Amiga:
# - "make amisrc", move the archive to the Amiga and compile: # - "make amisrc", move the archive to the Amiga and compile:
@@ -128,25 +129,26 @@ DOSBIN_S = dosbin_s
# - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and # - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
# "uninstald32.exe". # "uninstald32.exe".
# Win32 console version: # Win32 console version:
# - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat" # - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat" (adjust the
# paths when necessary).
# - "nmake -f Make_mvc.mak" # - "nmake -f Make_mvc.mak"
# - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output. # - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
# - Rename the executables to "vimw32.exe", "xxdw32.exe". # - Rename the executables to "vimw32.exe", "xxdw32.exe".
# - Rename ObjC/vim.pdb to vimw32.pdb. # - Rename vim.pdb to vimw32.pdb.
# - When building the Win32s version later, delete vimrun.exe, install.exe and # - When building the Win32s version later, delete vimrun.exe, install.exe and
# uninstal.exe. Otherwise rename executables to installw32.exe and # uninstal.exe. Otherwise rename executables to installw32.exe and
# uninstalw32.exe. # uninstalw32.exe.
# Win32 GUI version: # Win32 GUI version:
# - "nmake -f Make_mvc.mak GUI=yes. # - "nmake -f Make_mvc.mak GUI=yes.
# - move "gvim.exe" to here (otherwise the OLE version will overwrite it). # - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
# - Move ObjG/gvim.pdb to here. # - Move gvim.pdb to here.
# - Delete vimrun.exe, install.exe and uninstall.exe. # - Delete vimrun.exe, install.exe and uninstal.exe.
# - Copy "GvimExt/gvimext.dll" to here. # - Copy "GvimExt/gvimext.dll" to here.
# Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME: # Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME:
# - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...) # - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...)
# - Rename "gvim.exe" to "gvim_ole.exe". # - Rename "gvim.exe" to "gvim_ole.exe".
# - Rename ObjGOLYTR/gvim.pdb to "gvim_ole.pdb". # - Rename gvim.pdb to "gvim_ole.pdb".
# - Delete install.exe and uninstall.exe. # - Delete install.exe and uninstal.exe.
# - If building the Win32s version delete vimrun.exe. # - If building the Win32s version delete vimrun.exe.
# Win32s GUI version: # Win32s GUI version:
# - Set environment for Visual C++ 4.1 (requires a new console window) # - Set environment for Visual C++ 4.1 (requires a new console window)

View File

@@ -1,4 +1,4 @@
README.txt for version 7.0g of Vim: Vi IMproved. README.txt for version 7.1 of Vim: Vi IMproved.
WHAT IS VIM WHAT IS VIM

View File

@@ -1,4 +1,4 @@
README_ami.txt for version 7.0g of Vim: Vi IMproved. README_ami.txt for version 7.1 of Vim: Vi IMproved.
This file explains the installation of Vim on Amiga systems. This file explains the installation of Vim on Amiga systems.
See README.txt for general information about Vim. See README.txt for general information about Vim.

View File

@@ -1,4 +1,4 @@
README_amibin.txt for version 7.0g of Vim: Vi IMproved. README_amibin.txt for version 7.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga. See "README_ami.txt" for installation instructions for the Amiga.

View File

@@ -1,4 +1,4 @@
README_amisrc.txt for version 7.0g of Vim: Vi IMproved. README_amisrc.txt for version 7.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
See "README_ami.txt" for installation instructions for the Amiga. See "README_ami.txt" for installation instructions for the Amiga.

View File

@@ -1,19 +1,19 @@
README_bindos.txt for version 7.0g of Vim: Vi IMproved. README_bindos.txt for version 7.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows. See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
These files are in the runtime archive (vim60rt.zip). These files are in the runtime archive (vim70rt.zip).
There are several binary distributions of Vim for the PC. You would normally There are several binary distributions of Vim for the PC. You would normally
pick only one of them, but it's also possible to install several. pick only one of them, but it's also possible to install several.
These ones are available (the version number may differ): These ones are available (the version number may differ):
vim60d16.zip 16 bit DOS version vim70d16.zip 16 bit DOS version
vim60d32.zip 32 bit DOS version vim70d32.zip 32 bit DOS version
vim60w32.zip Windows 95/98/NT/etc. console version vim70w32.zip Windows 95/98/NT/etc. console version
gvim60.zip Windows 95/98/NT/etc. GUI version gvim70.zip Windows 95/98/NT/etc. GUI version
gvim60ole.zip Windows 95/98/NT/etc. GUI version with OLE gvim70ole.zip Windows 95/98/NT/etc. GUI version with OLE
gvim60_s.zip Windows 3.1 GUI version gvim70_s.zip Windows 3.1 GUI version
You MUST also get the runtime archive (vim60rt.zip). You MUST also get the runtime archive (vim70rt.zip).
The sources are also available (vim60src.zip). The sources are also available (vim70src.zip).

View File

@@ -1,4 +1,4 @@
README_dos.txt for version 7.0g of Vim: Vi IMproved. README_dos.txt for version 7.1 of Vim: Vi IMproved.
This file explains the installation of Vim on MS-DOS and MS-Windows systems. This file explains the installation of Vim on MS-DOS and MS-Windows systems.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
@@ -47,13 +47,13 @@ These are the normal steps to install Vim from the .zip archives:
Binary and runtime Vim archives are normally unpacked in the same location, Binary and runtime Vim archives are normally unpacked in the same location,
on top of each other. on top of each other.
2. Unpack the zip archives. This will create a new directory "vim\vim60", 2. Unpack the zip archives. This will create a new directory "vim\vim70",
in which all the distributed Vim files are placed. Since the directory in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite name includes the version number, it is unlikely that you overwrite
existing files. existing files.
Examples: Examples:
pkunzip -d gvim60.zip pkunzip -d gvim70.zip
unzip vim60w32.zip unzip vim70w32.zip
You need to unpack the runtime archive and at least one of the binary You need to unpack the runtime archive and at least one of the binary
archives. When using more than one binary version, be careful not to archives. When using more than one binary version, be careful not to
@@ -69,7 +69,7 @@ These are the normal steps to install Vim from the .zip archives:
archive and follow the instructions in the documentation. archive and follow the instructions in the documentation.
3. Change to the new directory: 3. Change to the new directory:
cd vim\vim60 cd vim\vim70
Run the "install.exe" program. It will ask you a number of questions about Run the "install.exe" program. It will ask you a number of questions about
how you would like to have your Vim setup. Among these are: how you would like to have your Vim setup. Among these are:
- You can tell it to write a "_vimrc" file with your preferences in the - You can tell it to write a "_vimrc" file with your preferences in the
@@ -80,8 +80,8 @@ These are the normal steps to install Vim from the .zip archives:
console or in a shell. You can select one of the directories in your console or in a shell. You can select one of the directories in your
$PATH. If you skip this, you can add Vim to the search path manually: $PATH. If you skip this, you can add Vim to the search path manually:
The simplest is to add a line to your autoexec.bat. Examples: The simplest is to add a line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim60 set path=%path%;C:\vim\vim70
set path=%path%;D:\editors\vim\vim60 set path=%path%;D:\editors\vim\vim70
- Create entries for Vim on the desktop and in the Start menu. - Create entries for Vim on the desktop and in the Start menu.
That's it! That's it!
@@ -94,7 +94,7 @@ Remarks:
point to the top directory of your Vim files. Example: point to the top directory of your Vim files. Example:
set VIM=C:\editors\vim set VIM=C:\editors\vim
Vim version 6.0 will look for your vimrc file in $VIM, and for the runtime Vim version 6.0 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim60. See ":help $VIM" for more information. files in $VIM/vim70. See ":help $VIM" for more information.
- To avoid confusion between distributed files of different versions and your - To avoid confusion between distributed files of different versions and your
own modified vim scripts, it is recommended to use this directory layout: own modified vim scripts, it is recommended to use this directory layout:
@@ -105,14 +105,14 @@ Remarks:
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
C:\vim\... Other files you made. C:\vim\... Other files you made.
Distributed files: Distributed files:
C:\vim\vim60\vim.exe The Vim version 6.0 executable. C:\vim\vim70\vim.exe The Vim version 6.0 executable.
C:\vim\vim60\doc\*.txt The version 6.0 documentation files. C:\vim\vim70\doc\*.txt The version 6.0 documentation files.
C:\vim\vim60\bugreport.vim A Vim version 6.0 script. C:\vim\vim70\bugreport.vim A Vim version 6.0 script.
C:\vim\vim60\... Other version 6.0 distributed files. C:\vim\vim70\... Other version 6.0 distributed files.
In this case the $VIM environment variable would be set like this: In this case the $VIM environment variable would be set like this:
set VIM=C:\vim set VIM=C:\vim
Then $VIMRUNTIME will automatically be set to "$VIM\vim60". Don't add Then $VIMRUNTIME will automatically be set to "$VIM\vim70". Don't add
"vim60" to $VIM, that won't work. "vim70" to $VIM, that won't work.
- You can put your Vim executable anywhere else. If the executable is not - You can put your Vim executable anywhere else. If the executable is not
with the other Vim files, you should set $VIM. The simplest is to add a line with the other Vim files, you should set $VIM. The simplest is to add a line
@@ -136,8 +136,8 @@ Remarks:
Select Properties. Select Properties.
5. In the Program tab, change the "Cmdline" to add "/c" and the name of the 5. In the Program tab, change the "Cmdline" to add "/c" and the name of the
Vim executable. Examples: Vim executable. Examples:
C:\command.com /c C:\vim\vim60\vim.exe C:\command.com /c C:\vim\vim70\vim.exe
C:\command.com /c D:\editors\vim\vim60\vim.exe C:\command.com /c D:\editors\vim\vim70\vim.exe
6. Select the font, window size, etc. that you like. If this isn't 6. Select the font, window size, etc. that you like. If this isn't
possible, select "Advanced" in the Program tab, and deselect "MS-DOS possible, select "Advanced" in the Program tab, and deselect "MS-DOS
mode". mode".

View File

@@ -1,17 +1,17 @@
README_extra.txt for version 7.0g of Vim: Vi IMproved. README_extra.txt for version 7.1 of Vim: Vi IMproved.
The extra archive of Vim is to be used in combination with the source archive The extra archive of Vim is to be used in combination with the source archive
(vim-6.0-src.tar.gz). The extra archive is useless without it. (vim-7.0-src.tar.gz). The extra archive is useless without it.
For more information, see the "README.txt" file that comes with the runtime For more information, see the "README.txt" file that comes with the runtime
archive (vim-6.0-rt.tar.gz). To be able to run Vim you MUST get the runtime archive (vim-7.0-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive too! archive too!
The extra archive plus the source and runtime achives make up the complete The extra archive plus the source and runtime achives make up the complete
sources of Vim for all systems. sources of Vim for all systems.
The extra archive contains: Some of the things that the extra archive contains:
Farsi Files for the Farsi (persian) language. If you don't know Farsi Files for the Farsi (persian) language. If you don't know
what Farsi is, this is not for you. what Farsi is, this is not for you.
@@ -19,7 +19,6 @@ Farsi Files for the Farsi (persian) language. If you don't know
if_sniff Interface to SNiFF. If you don't know what SNiFF is, this is if_sniff Interface to SNiFF. If you don't know what SNiFF is, this is
not for you. not for you.
gui_amiga
os_amiga Files for the Amiga port. os_amiga Files for the Amiga port.
gui_riscos gui_riscos
@@ -45,7 +44,8 @@ os_w32
os_win32 Files for the Win32 port. os_win32 Files for the Win32 port.
gui_w32 Files for the Win32 GUI. gui_w32 Files for the Win32 GUI.
Gvim_vc.mak MS Visual C++ makefile for the Win32 GUI. gui_w48 Files for the Win32 and Win16 GUI.
Make_mvc.mak MS Visual C++ makefile for the Win32 GUI.
rgb.txt File with color definitions for the Win32 GUI. rgb.txt File with color definitions for the Win32 GUI.
if_ole OLE automation interface, for MS Windows 95 and NT. if_ole OLE automation interface, for MS Windows 95 and NT.

View File

@@ -1,4 +1,4 @@
README_lang.txt for version 7.0g of Vim: Vi IMproved. README_lang.txt for version 7.1 of Vim: Vi IMproved.
This file contains files for non-English languages: This file contains files for non-English languages:
- Translated messages. - Translated messages.

View File

@@ -1,4 +1,4 @@
README_mac.txt for version 7.0g of Vim: Vi IMproved. README_mac.txt for version 7.1 of Vim: Vi IMproved.
This file explains the installation of Vim on Macintosh systems. This file explains the installation of Vim on Macintosh systems.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.

View File

@@ -1,4 +1,4 @@
README_ole.txt for version 7.0g of Vim: Vi IMproved. README_ole.txt for version 7.1 of Vim: Vi IMproved.
This archive contains gvim.exe with OLE interface and VisVim. This archive contains gvim.exe with OLE interface and VisVim.
This version of gvim.exe can also load a number of interface dynamically (you This version of gvim.exe can also load a number of interface dynamically (you

View File

@@ -1,32 +1,32 @@
README_os2.txt for version 7.0g of Vim: Vi IMproved. README_os2.txt for version 7.1 of Vim: Vi IMproved.
This file explains the installation of Vim on OS/2 systems. This file explains the installation of Vim on OS/2 systems.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
NOTE: You will need two archives: NOTE: You will need two archives:
vim70rt.zip contains the runtime files (same as for the PC version) vim71rt.zip contains the runtime files (same as for the PC version)
vim70os2.zip contains the OS/2 executables vim71os2.zip contains the OS/2 executables
1. Go to the directory where you want to put the Vim files. Examples: 1. Go to the directory where you want to put the Vim files. Examples:
cd C:\ cd C:\
cd D:\editors cd D:\editors
2. Unpack the zip archives. This will create a new directory "vim/vim70", 2. Unpack the zip archives. This will create a new directory "vim/vim71",
in which all the distributed Vim files are placed. Since the directory in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite name includes the version number, it is unlikely that you overwrite
existing files. existing files.
Examples: Examples:
pkunzip -d vim70os2.zip pkunzip -d vim71os2.zip
unzip vim70os2.zip unzip vim71os2.zip
After you unpacked the files, you can still move the whole directory tree After you unpacked the files, you can still move the whole directory tree
to another location. to another location.
3. Add the directory where vim.exe is to your path. The simplest is to add a 3. Add the directory where vim.exe is to your path. The simplest is to add a
line to your autoexec.bat. Examples: line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim70 set path=%path%;C:\vim\vim71
set path=%path%;D:\editors\vim\vim70 set path=%path%;D:\editors\vim\vim71
That's it! That's it!
@@ -41,10 +41,10 @@ Extra remarks:
C:\vim\_viminfo Dynamic info for 'viminfo'. C:\vim\_viminfo Dynamic info for 'viminfo'.
C:\vim\... Other files you made. C:\vim\... Other files you made.
Distributed files: Distributed files:
C:\vim\vim70\vim.exe The Vim version 7.0 executable. C:\vim\vim71\vim.exe The Vim version 7.1 executable.
C:\vim\vim70\doc\*.txt The version 7.0 documentation files. C:\vim\vim71\doc\*.txt The version 7.1 documentation files.
C:\vim\vim70\bugreport.vim A Vim version 7.0 script. C:\vim\vim71\bugreport.vim A Vim version 7.1 script.
C:\vim\vim70\... Other version 7.0 distributed files. C:\vim\vim71\... Other version 7.1 distributed files.
In this case the $VIM environment variable would be set like this: In this case the $VIM environment variable would be set like this:
set VIM=C:\vim set VIM=C:\vim

View File

@@ -1,4 +1,4 @@
README_os_390.txt for version 7.0g of Vim: Vi IMproved. README_os_390.txt for version 7.1 of Vim: Vi IMproved.
Welcome to the OS/390 Unix port of VIM. Welcome to the OS/390 Unix port of VIM.

View File

@@ -1,10 +1,10 @@
README_src.txt for version 7.0g of Vim: Vi IMproved. README_src.txt for version 7.1 of Vim: Vi IMproved.
The source archive contains the files needed to compile Vim on Unix systems. The source archive contains the files needed to compile Vim on Unix systems.
It is packed for Unix systems (NL line separator). It is also used for other It is packed for Unix systems (NL line separator). It is also used for other
systems in combination with the extra archive (vim-6.0-extra.tar.gz, in the systems in combination with the extra archive (vim-7.0-extra.tar.gz, in the
"extra" directory of ftp.vim.org). "extra" directory of ftp.vim.org).
For more information, see the README.txt file that comes with the runtime For more information, see the README.txt file that comes with the runtime
archive (vim-6.0-rt.tar.gz). To be able to run Vim you MUST get the runtime archive (vim-7.0-rt.tar.gz). To be able to run Vim you MUST get the runtime
archive too! archive too!

View File

@@ -1,8 +1,8 @@
README_srcdos.txt for version 7.0g of Vim: Vi IMproved. README_srcdos.txt for version 7.1 of Vim: Vi IMproved.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.
See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows. See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
These files are in the runtime archive (vim60rt.zip). These files are in the runtime archive (vim70rt.zip).
The DOS source archive contains the files needed to compile Vim on MS-DOS or The DOS source archive contains the files needed to compile Vim on MS-DOS or

View File

@@ -1,4 +1,4 @@
README_unix.txt for version 7.0g of Vim: Vi IMproved. README_unix.txt for version 7.1 of Vim: Vi IMproved.
This file explains the installation of Vim on Unix systems. This file explains the installation of Vim on Unix systems.
See "README.txt" for general information about Vim. See "README.txt" for general information about Vim.

View File

@@ -1,4 +1,4 @@
README_vms.txt for version 7.0g of Vim: Vi IMproved. README_vms.txt for version 7.1 of Vim: Vi IMproved.
This file explains the installation of Vim on VMS systems. This file explains the installation of Vim on VMS systems.
See "README.txt" in the runtime archive for information about Vim. See "README.txt" in the runtime archive for information about Vim.

View File

@@ -1,4 +1,4 @@
README_w32s.txt for version 7.0g of Vim: Vi IMproved. README_w32s.txt for version 7.1 of Vim: Vi IMproved.
This archive contains the gvim.exe that was specifically compiled for use in This archive contains the gvim.exe that was specifically compiled for use in
the Win32s subsystem in MS-Windows 3.1 and 3.11. the Win32s subsystem in MS-Windows 3.1 and 3.11.

2
configure vendored
View File

@@ -3,4 +3,4 @@
# This is just a stub for the Unix configure script, to provide support for # This is just a stub for the Unix configure script, to provide support for
# doing "./configure" in the top Vim directory. # doing "./configure" in the top Vim directory.
cd src && ./configure "$@" cd src && exec ./configure "$@"

2
farsi/README.txt Normal file
View File

@@ -0,0 +1,2 @@
For information about installation of Farsi fonts and Vim usage in Farsi mode,
refer to the Farsi help file by typing ":help farsi" in Vim.

BIN
farsi/fonts/DOS/far-a01.com Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -22,7 +22,7 @@
!define HAVE_NLS !define HAVE_NLS
!define VER_MAJOR 7 !define VER_MAJOR 7
!define VER_MINOR 0g !define VER_MINOR 1
# ----------- No configurable settings below this line ----------- # ----------- No configurable settings below this line -----------
@@ -391,6 +391,7 @@ Section Uninstall
ClearErrors ClearErrors
# Remove everything but *.dll files. Avoids that # Remove everything but *.dll files. Avoids that
# a lot remains when gvimext.dll cannot be deleted. # a lot remains when gvimext.dll cannot be deleted.
RMDir /r $0\autoload
RMDir /r $0\colors RMDir /r $0\colors
RMDir /r $0\compiler RMDir /r $0\compiler
RMDir /r $0\doc RMDir /r $0\doc
@@ -398,6 +399,7 @@ Section Uninstall
RMDir /r $0\indent RMDir /r $0\indent
RMDir /r $0\macros RMDir /r $0\macros
RMDir /r $0\plugin RMDir /r $0\plugin
RMDir /r $0\spell
RMDir /r $0\syntax RMDir /r $0\syntax
RMDir /r $0\tools RMDir /r $0\tools
RMDir /r $0\tutor RMDir /r $0\tutor

595
runtime/autoload/ada.vim Normal file
View File

@@ -0,0 +1,595 @@
"------------------------------------------------------------------------------
" Description: Perform Ada specific completion & tagging.
" Language: Ada (2005)
" $Id$
" Maintainer: Martin Krischik
" Neil Bird <neil@fnxweb.com>
" $Author$
" $Date$
" Version: 4.2
" $Revision$
" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $
" History: 24.05.2006 MK Unified Headers
" 26.05.2006 MK ' should not be in iskeyword.
" 16.07.2006 MK Ada-Mode as vim-ball
" 02.10.2006 MK Better folding.
" 15.10.2006 MK Bram's suggestion for runtime integration
" 05.11.2006 MK Bram suggested not to use include protection for
" autoload
" 05.11.2006 MK Bram suggested to save on spaces
" Help Page: ft-ada-functions
"------------------------------------------------------------------------------
if version < 700
finish
endif
" Section: Constants {{{1
"
let g:ada#DotWordRegex = '\a\w*\(\_s*\.\_s*\a\w*\)*'
let g:ada#WordRegex = '\a\w*'
let g:ada#Comment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*"
let g:ada#Keywords = []
" Section: g:ada#Keywords {{{1
"
" Section: add Ada keywords {{{2
"
for Item in ['abort', 'else', 'new', 'return', 'abs', 'elsif', 'not', 'reverse', 'abstract', 'end', 'null', 'accept', 'entry', 'select', 'access', 'exception', 'of', 'separate', 'aliased', 'exit', 'or', 'subtype', 'all', 'others', 'synchronized', 'and', 'for', 'out', 'array', 'function', 'overriding', 'tagged', 'at', 'task', 'generic', 'package', 'terminate', 'begin', 'goto', 'pragma', 'then', 'body', 'private', 'type', 'if', 'procedure', 'case', 'in', 'protected', 'until', 'constant', 'interface', 'use', 'is', 'raise', 'declare', 'range', 'when', 'delay', 'limited', 'record', 'while', 'delta', 'loop', 'rem', 'with', 'digits', 'renames', 'do', 'mod', 'requeue', 'xor']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'keyword',
\ 'info': 'Ada keyword.',
\ 'kind': 'k',
\ 'icase': 1}]
endfor
" Section: GNAT Project Files {{{3
"
if exists ('g:ada_with_gnat_project_files')
for Item in ['project']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'keyword',
\ 'info': 'GNAT projectfile keyword.',
\ 'kind': 'k',
\ 'icase': 1}]
endfor
endif
" Section: add standart exception {{{2
"
for Item in ['Constraint_Error', 'Program_Error', 'Storage_Error', 'Tasking_Error', 'Status_Error', 'Mode_Error', 'Name_Error', 'Use_Error', 'Device_Error', 'End_Error', 'Data_Error', 'Layout_Error', 'Length_Error', 'Pattern_Error', 'Index_Error', 'Translation_Error', 'Time_Error', 'Argument_Error', 'Tag_Error', 'Picture_Error', 'Terminator_Error', 'Conversion_Error', 'Pointer_Error', 'Dereference_Error', 'Update_Error']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'exception',
\ 'info': 'Ada standart exception.',
\ 'kind': 'x',
\ 'icase': 1}]
endfor
" Section: add GNAT exception {{{3
"
if exists ('g:ada_gnat_extensions')
for Item in ['Assert_Failure']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'exception',
\ 'info': 'GNAT exception.',
\ 'kind': 'x',
\ 'icase': 1}]
endfor
endif
" Section: add Ada buildin types {{{2
"
for Item in ['Boolean', 'Integer', 'Natural', 'Positive', 'Float', 'Character', 'Wide_Character', 'Wide_Wide_Character', 'String', 'Wide_String', 'Wide_Wide_String', 'Duration']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'type',
\ 'info': 'Ada buildin type.',
\ 'kind': 't',
\ 'icase': 1}]
endfor
" Section: add GNAT buildin types {{{3
"
if exists ('g:ada_gnat_extensions')
for Item in ['Short_Integer', 'Short_Short_Integer', 'Long_Integer', 'Long_Long_Integer', 'Short_Float', 'Short_Short_Float', 'Long_Float', 'Long_Long_Float']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'type',
\ 'info': 'GNAT buildin type.',
\ 'kind': 't',
\ 'icase': 1}]
endfor
endif
" Section: add Ada Attributes {{{2
"
for Item in ['''Access', '''Address', '''Adjacent', '''Aft', '''Alignment', '''Base', '''Bit_Order', '''Body_Version', '''Callable', '''Caller', '''Ceiling', '''Class', '''Component_Size', '''Compose', '''Constrained', '''Copy_Sign', '''Count', '''Definite', '''Delta', '''Denorm', '''Digits', '''Emax', '''Exponent', '''External_Tag', '''Epsilon', '''First', '''First_Bit', '''Floor', '''Fore', '''Fraction', '''Identity', '''Image', '''Input', '''Large', '''Last', '''Last_Bit', '''Leading_Part', '''Length', '''Machine', '''Machine_Emax', '''Machine_Emin', '''Machine_Mantissa', '''Machine_Overflows', '''Machine_Radix', '''Machine_Rounding', '''Machine_Rounds', '''Mantissa', '''Max', '''Max_Size_In_Storage_Elements', '''Min', '''Mod', '''Model', '''Model_Emin', '''Model_Epsilon', '''Model_Mantissa', '''Model_Small', '''Modulus', '''Output', '''Partition_ID', '''Pos', '''Position', '''Pred', '''Priority', '''Range', '''Read', '''Remainder', '''Round', '''Rounding', '''Safe_Emax', '''Safe_First', '''Safe_Large', '''Safe_Last', '''Safe_Small', '''Scale', '''Scaling', '''Signed_Zeros', '''Size', '''Small', '''Storage_Pool', '''Storage_Size', '''Stream_Size', '''Succ', '''Tag', '''Terminated', '''Truncation', '''Unbiased_Rounding', '''Unchecked_Access', '''Val', '''Valid', '''Value', '''Version', '''Wide_Image', '''Wide_Value', '''Wide_Wide_Image', '''Wide_Wide_Value', '''Wide_Wide_Width', '''Wide_Width', '''Width', '''Write']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'attribute',
\ 'info': 'Ada attribute.',
\ 'kind': 'a',
\ 'icase': 1}]
endfor
" Section: add GNAT Attributes {{{3
"
if exists ('g:ada_gnat_extensions')
for Item in ['''Abort_Signal', '''Address_Size', '''Asm_Input', '''Asm_Output', '''AST_Entry', '''Bit', '''Bit_Position', '''Code_Address', '''Default_Bit_Order', '''Elaborated', '''Elab_Body', '''Elab_Spec', '''Emax', '''Enum_Rep', '''Epsilon', '''Fixed_Value', '''Has_Access_Values', '''Has_Discriminants', '''Img', '''Integer_Value', '''Machine_Size', '''Max_Interrupt_Priority', '''Max_Priority', '''Maximum_Alignment', '''Mechanism_Code', '''Null_Parameter', '''Object_Size', '''Passed_By_Reference', '''Range_Length', '''Storage_Unit', '''Target_Name', '''Tick', '''To_Address', '''Type_Class', '''UET_Address', '''Unconstrained_Array', '''Universal_Literal_String', '''Unrestricted_Access', '''VADS_Size', '''Value_Size', '''Wchar_T_Size', '''Word_Size']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'attribute',
\ 'info': 'GNAT attribute.',
\ 'kind': 'a',
\ 'icase': 1}]
endfor
endif
" Section: add Ada Pragmas {{{2
"
for Item in ['All_Calls_Remote', 'Assert', 'Assertion_Policy', 'Asynchronous', 'Atomic', 'Atomic_Components', 'Attach_Handler', 'Controlled', 'Convention', 'Detect_Blocking', 'Discard_Names', 'Elaborate', 'Elaborate_All', 'Elaborate_Body', 'Export', 'Import', 'Inline', 'Inspection_Point', 'Interface (Obsolescent)', 'Interrupt_Handler', 'Interrupt_Priority', 'Linker_Options', 'List', 'Locking_Policy', 'Memory_Size (Obsolescent)', 'No_Return', 'Normalize_Scalars', 'Optimize', 'Pack', 'Page', 'Partition_Elaboration_Policy', 'Preelaborable_Initialization', 'Preelaborate', 'Priority', 'Priority_Specific_Dispatching', 'Profile', 'Pure', 'Queueing_Policy', 'Relative_Deadline', 'Remote_Call_Interface', 'Remote_Types', 'Restrictions', 'Reviewable', 'Shared (Obsolescent)', 'Shared_Passive', 'Storage_Size', 'Storage_Unit (Obsolescent)', 'Suppress', 'System_Name (Obsolescent)', 'Task_Dispatching_Policy', 'Unchecked_Union', 'Unsuppress', 'Volatile', 'Volatile_Components']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'pragma',
\ 'info': 'Ada pragma.',
\ 'kind': 'p',
\ 'icase': 1}]
endfor
" Section: add GNAT Pragmas {{{3
"
if exists ('g:ada_gnat_extensions')
for Item in ['Abort_Defer', 'Ada_83', 'Ada_95', 'Ada_05', 'Annotate', 'Ast_Entry', 'C_Pass_By_Copy', 'Comment', 'Common_Object', 'Compile_Time_Warning', 'Complex_Representation', 'Component_Alignment', 'Convention_Identifier', 'CPP_Class', 'CPP_Constructor', 'CPP_Virtual', 'CPP_Vtable', 'Debug', 'Elaboration_Checks', 'Eliminate', 'Export_Exception', 'Export_Function', 'Export_Object', 'Export_Procedure', 'Export_Value', 'Export_Valued_Procedure', 'Extend_System', 'External', 'External_Name_Casing', 'Finalize_Storage_Only', 'Float_Representation', 'Ident', 'Import_Exception', 'Import_Function', 'Import_Object', 'Import_Procedure', 'Import_Valued_Procedure', 'Initialize_Scalars', 'Inline_Always', 'Inline_Generic', 'Interface_Name', 'Interrupt_State', 'Keep_Names', 'License', 'Link_With', 'Linker_Alias', 'Linker_Section', 'Long_Float', 'Machine_Attribute', 'Main_Storage', 'Obsolescent', 'Passive', 'Polling', 'Profile_Warnings', 'Propagate_Exceptions', 'Psect_Object', 'Pure_Function', 'Restriction_Warnings', 'Source_File_Name', 'Source_File_Name_Project', 'Source_Reference', 'Stream_Convert', 'Style_Checks', 'Subtitle', 'Suppress_All', 'Suppress_Exception_Locations', 'Suppress_Initialization', 'Task_Info', 'Task_Name', 'Task_Storage', 'Thread_Body', 'Time_Slice', 'Title', 'Unimplemented_Unit', 'Universal_Data', 'Unreferenced', 'Unreserve_All_Interrupts', 'Use_VADS_Size', 'Validity_Checks', 'Warnings', 'Weak_External']
let g:ada#Keywords += [{
\ 'word': Item,
\ 'menu': 'pragma',
\ 'info': 'GNAT pragma.',
\ 'kind': 'p',
\ 'icase': 1}]
endfor
endif
" 1}}}
" Section: g:ada#Ctags_Kinds {{{1
"
let g:ada#Ctags_Kinds = {
\ 'P': ["packspec", "package specifications"],
\ 'p': ["package", "packages"],
\ 'T': ["typespec", "type specifications"],
\ 't': ["type", "types"],
\ 'U': ["subspec", "subtype specifications"],
\ 'u': ["subtype", "subtypes"],
\ 'c': ["component", "record type components"],
\ 'l': ["literal", "enum type literals"],
\ 'V': ["varspec", "variable specifications"],
\ 'v': ["variable", "variables"],
\ 'f': ["formal", "generic formal parameters"],
\ 'n': ["constant", "constants"],
\ 'x': ["exception", "user defined exceptions"],
\ 'R': ["subprogspec", "subprogram specifications"],
\ 'r': ["subprogram", "subprograms"],
\ 'K': ["taskspec", "task specifications"],
\ 'k': ["task", "tasks"],
\ 'O': ["protectspec", "protected data specifications"],
\ 'o': ["protected", "protected data"],
\ 'E': ["entryspec", "task/protected data entry specifications"],
\ 'e': ["entry", "task/protected data entries"],
\ 'b': ["label", "labels"],
\ 'i': ["identifier", "loop/declare identifiers"],
\ 'a': ["autovar", "automatic variables"],
\ 'y': ["annon", "loops and blocks with no identifier"]}
" Section: ada#Word (...) {{{1
"
" Extract current Ada word across multiple lines
" AdaWord ([line, column])\
"
function ada#Word (...)
if a:0 > 1
let l:Line_Nr = a:1
let l:Column_Nr = a:2 - 1
else
let l:Line_Nr = line('.')
let l:Column_Nr = col('.') - 1
endif
let l:Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' )
" Cope with tag searching for items in comments; if we are, don't loop
" backards looking for previous lines
if l:Column_Nr > strlen(l:Line)
" We were in a comment
let l:Line = getline(l:Line_Nr)
let l:Search_Prev_Lines = 0
else
let l:Search_Prev_Lines = 1
endif
" Go backwards until we find a match (Ada ID) that *doesn't* include our
" location - i.e., the previous ID. This is because the current 'correct'
" match will toggle matching/not matching as we traverse characters
" backwards. Thus, we have to find the previous unrelated match, exclude
" it, then use the next full match (ours).
" Remember to convert vim column 'l:Column_Nr' [1..n] to string offset [0..(n-1)]
" ... but start, here, one after the required char.
let l:New_Column = l:Column_Nr + 1
while 1
let l:New_Column = l:New_Column - 1
if l:New_Column < 0
" Have to include previous l:Line from file
let l:Line_Nr = l:Line_Nr - 1
if l:Line_Nr < 1 || !l:Search_Prev_Lines
" Start of file or matching in a comment
let l:Line_Nr = 1
let l:New_Column = 0
let l:Our_Match = match (l:Line, g:ada#WordRegex )
break
endif
" Get previous l:Line, and prepend it to our search string
let l:New_Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' )
let l:New_Column = strlen (l:New_Line) - 1
let l:Column_Nr = l:Column_Nr + l:New_Column
let l:Line = l:New_Line . l:Line
endif
" Check to see if this is a match excluding 'us'
let l:Match_End = l:New_Column +
\ matchend (strpart (l:Line,l:New_Column), g:ada#WordRegex ) - 1
if l:Match_End >= l:New_Column &&
\ l:Match_End < l:Column_Nr
" Yes
let l:Our_Match = l:Match_End+1 +
\ match (strpart (l:Line,l:Match_End+1), g:ada#WordRegex )
break
endif
endwhile
" Got anything?
if l:Our_Match < 0
return ''
else
let l:Line = strpart (l:Line, l:Our_Match)
endif
" Now simply add further lines until the match gets no bigger
let l:Match_String = matchstr (l:Line, g:ada#WordRegex)
let l:Last_Line = line ('$')
let l:Line_Nr = line ('.') + 1
while l:Line_Nr <= l:Last_Line
let l:Last_Match = l:Match_String
let l:Line = l:Line .
\ substitute (getline (l:Line_Nr), g:ada#Comment, '', '')
let l:Match_String = matchstr (l:Line, g:ada#WordRegex)
if l:Match_String == l:Last_Match
break
endif
endwhile
" Strip whitespace & return
return substitute (l:Match_String, '\s\+', '', 'g')
endfunction ada#Word
" Section: ada#List_Tag (...) {{{1
"
" List tags in quickfix window
"
function ada#List_Tag (...)
if a:0 > 1
let l:Tag_Word = ada#Word (a:1, a:2)
elseif a:0 > 0
let l:Tag_Word = a:1
else
let l:Tag_Word = ada#Word ()
endif
echo "Searching for" l:Tag_Word
let l:Pattern = '^' . l:Tag_Word . '$'
let l:Tag_List = taglist (l:Pattern)
let l:Error_List = []
"
" add symbols
"
for Tag_Item in l:Tag_List
if l:Tag_Item['kind'] == ''
let l:Tag_Item['kind'] = 's'
endif
let l:Error_List += [
\ l:Tag_Item['filename'] . '|' .
\ l:Tag_Item['cmd'] . '|' .
\ l:Tag_Item['kind'] . "\t" .
\ l:Tag_Item['name'] ]
endfor
set errorformat=%f\|%l\|%m
cexpr l:Error_List
cwindow
endfunction ada#List_Tag
" Section: ada#Jump_Tag (Word, Mode) {{{1
"
" Word tag - include '.' and if Ada make uppercase
"
function ada#Jump_Tag (Word, Mode)
if a:Word == ''
" Get current word
let l:Word = ada#Word()
if l:Word == ''
throw "NOT_FOUND: no identifier found."
endif
else
let l:Word = a:Word
endif
echo "Searching for " . l:Word
try
execute a:Mode l:Word
catch /.*:E426:.*/
let ignorecase = &ignorecase
set ignorecase
execute a:Mode l:Word
let &ignorecase = ignorecase
endtry
return
endfunction ada#Jump_Tag
" Section: ada#Insert_Backspace () {{{1
"
" Backspace at end of line after auto-inserted commentstring '-- ' wipes it
"
function ada#Insert_Backspace ()
let l:Line = getline ('.')
if col ('.') > strlen (l:Line) &&
\ match (l:Line, '-- $') != -1 &&
\ match (&comments,'--') != -1
return "\<bs>\<bs>\<bs>"
else
return "\<bs>"
endif
return
endfunction ada#InsertBackspace
" Section: Insert Completions {{{1
"
" Section: ada#User_Complete(findstart, base) {{{2
"
" This function is used for the 'complete' option.
"
function! ada#User_Complete(findstart, base)
if a:findstart == 1
"
" locate the start of the word
"
let line = getline ('.')
let start = col ('.') - 1
while start > 0 && line[start - 1] =~ '\i\|'''
let start -= 1
endwhile
return start
else
"
" look up matches
"
let l:Pattern = '^' . a:base . '.*$'
"
" add keywords
"
for Tag_Item in g:ada#Keywords
if l:Tag_Item['word'] =~? l:Pattern
if complete_add (l:Tag_Item) == 0
return []
endif
if complete_check ()
return []
endif
endif
endfor
return []
endif
endfunction ada#User_Complete
" Section: ada#Completion (cmd) {{{2
"
" Word completion (^N/^R/^X^]) - force '.' inclusion
function ada#Completion (cmd)
set iskeyword+=46
return a:cmd . "\<C-R>=ada#Completion_End ()\<CR>"
endfunction ada#Completion
" Section: ada#Completion_End () {{{2
"
function ada#Completion_End ()
set iskeyword-=46
return ''
endfunction ada#Completion_End
" Section: ada#Create_Tags {{{1
"
function ada#Create_Tags (option)
if a:option == 'file'
let l:Filename = fnamemodify (bufname ('%'), ':p')
elseif a:option == 'dir'
let l:Filename =
\ fnamemodify (bufname ('%'), ':p:h') . "*.ada " .
\ fnamemodify (bufname ('%'), ':p:h') . "*.adb " .
\ fnamemodify (bufname ('%'), ':p:h') . "*.ads"
else
let l:Filename = a:option
endif
execute '!ctags --excmd=number ' . l:Filename
endfunction ada#Create_Tags
function ada#Switch_Session (New_Session) "{{{1
if a:New_Session != v:this_session
"
" We actualy got a new session - otherwise there
" is nothing to do.
"
if strlen (v:this_session) > 0
execute 'mksession! ' . v:this_session
endif
let v:this_session = a:New_Session
if filereadable (v:this_session)
execute 'source ' . v:this_session
endif
augroup ada_session
autocmd!
autocmd VimLeavePre * execute 'mksession! ' . v:this_session
augroup END
endif
return
endfunction ada#Switch_Session "}}}1
" Section: GNAT Pretty Printer folding {{{1
"
if exists('g:ada_folding') && g:ada_folding[0] == 'g'
"
" Lines consisting only of ')' ';' are due to a gnat pretty bug and
" have the same level as the line above (can't happen in the first
" line).
"
let s:Fold_Collate = '^\([;)]*$\|'
"
" some lone statements are folded with the line above
"
if stridx (g:ada_folding, 'i') >= 0
let s:Fold_Collate .= '\s\+\<is\>$\|'
endif
if stridx (g:ada_folding, 'b') >= 0
let s:Fold_Collate .= '\s\+\<begin\>$\|'
endif
if stridx (g:ada_folding, 'p') >= 0
let s:Fold_Collate .= '\s\+\<private\>$\|'
endif
if stridx (g:ada_folding, 'x') >= 0
let s:Fold_Collate .= '\s\+\<exception\>$\|'
endif
" We also handle empty lines and
" comments here.
let s:Fold_Collate .= '--\)'
function ada#Pretty_Print_Folding (Line) " {{{2
let l:Text = getline (a:Line)
if l:Text =~ s:Fold_Collate
"
" fold with line above
"
let l:Level = "="
elseif l:Text =~ '^\s\+('
"
" gnat outdents a line which stards with a ( by one characters so
" that parameters which follow are aligned.
"
let l:Level = (indent (a:Line) + 1) / &shiftwidth
else
let l:Level = indent (a:Line) / &shiftwidth
endif
return l:Level
endfunction ada#Pretty_Print_Folding " }}}2
endif
" Section: Options and Menus {{{1
"
" Section: ada#Switch_Syntax_Options {{{2
"
function ada#Switch_Syntax_Option (option)
syntax off
if exists ('g:ada_' . a:option)
unlet g:ada_{a:option}
echo a:option . 'now off'
else
let g:ada_{a:option}=1
echo a:option . 'now on'
endif
syntax on
endfunction ada#Switch_Syntax_Option
" Section: ada#Map_Menu {{{2
"
function ada#Map_Menu (Text, Keys, Command)
if a:Keys[0] == ':'
execute
\ "50amenu " .
\ "Ada." . escape(a:Text, ' ') .
\ "<Tab>" . a:Keys .
\ " :" . a:Command . "<CR>"
execute
\ "command -buffer " .
\ a:Keys[1:] .
\" :" . a:Command . "<CR>"
elseif a:Keys[0] == '<'
execute
\ "50amenu " .
\ "Ada." . escape(a:Text, ' ') .
\ "<Tab>" . a:Keys .
\ " :" . a:Command . "<CR>"
execute
\ "nnoremap <buffer> " .
\ a:Keys .
\" :" . a:Command . "<CR>"
execute
\ "inoremap <buffer> " .
\ a:Keys .
\" <C-O>:" . a:Command . "<CR>"
else
execute
\ "50amenu " .
\ "Ada." . escape(a:Text, ' ') .
\ "<Tab>" . escape(g:mapleader . "a" . a:Keys , '\') .
\ " :" . a:Command . "<CR>"
execute
\ "nnoremap <buffer>" .
\ escape(g:mapleader . "a" . a:Keys , '\') .
\" :" . a:Command
execute
\ "inoremap <buffer>" .
\ escape(g:mapleader . "a" . a:Keys , '\') .
\" <C-O>:" . a:Command
endif
return
endfunction
" Section: ada#Map_Popup {{{2
"
function ada#Map_Popup (Text, Keys, Command)
execute
\ "50amenu " .
\ "PopUp." . escape(a:Text, ' ') .
\ "<Tab>" . escape(g:mapleader . "a" . a:Keys , '\') .
\ " :" . a:Command . "<CR>"
call ada#Map_Menu (a:Text, a:Keys, a:Command)
return
endfunction ada#Map_Popup
" }}}1
lockvar g:ada#WordRegex
lockvar g:ada#DotWordRegex
lockvar g:ada#Comment
lockvar! g:ada#Keywords
lockvar! g:ada#Ctags_Kinds
finish " 1}}}
"------------------------------------------------------------------------------
" Copyright (C) 2006 Martin Krischik
"
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
"------------------------------------------------------------------------------
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker

View File

@@ -0,0 +1,109 @@
"------------------------------------------------------------------------------
" Description: Vim Ada omnicompletion file
" Language: Ada (2005)
" $Id$
" Maintainer: Martin Krischik
" $Author$
" $Date$
" Version: 4.2
" $Revision$
" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
" History: 24.05.2006 MK Unified Headers
" 26.05.2006 MK improved search for begin of word.
" 16.07.2006 MK Ada-Mode as vim-ball
" 15.10.2006 MK Bram's suggestion for runtime integration
" 05.11.2006 MK Bram suggested not to use include protection for
" autoload
" 05.11.2006 MK Bram suggested agaist using setlocal omnifunc
" 05.11.2006 MK Bram suggested to save on spaces
" Help Page: ft-ada-omni
"------------------------------------------------------------------------------
if version < 700
finish
endif
" Section: adacomplete#Complete () {{{1
"
" This function is used for the 'omnifunc' option.
"
function! adacomplete#Complete (findstart, base)
if a:findstart == 1
return ada#User_Complete (a:findstart, a:base)
else
"
" look up matches
"
if exists ("g:ada_omni_with_keywords")
call ada#User_Complete (a:findstart, a:base)
endif
"
" search tag file for matches
"
let l:Pattern = '^' . a:base . '.*$'
let l:Tag_List = taglist (l:Pattern)
"
" add symbols
"
for Tag_Item in l:Tag_List
if l:Tag_Item['kind'] == ''
"
" Tag created by gnat xref
"
let l:Match_Item = {
\ 'word': l:Tag_Item['name'],
\ 'menu': l:Tag_Item['filename'],
\ 'info': "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'],
\ 'kind': 's',
\ 'icase': 1}
else
"
" Tag created by ctags
"
let l:Info = 'Symbol : ' . l:Tag_Item['name'] . "\n"
let l:Info .= 'Of type : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1] . "\n"
let l:Info .= 'Defined in File : ' . l:Tag_Item['filename'] . "\n"
if has_key( l:Tag_Item, 'package')
let l:Info .= 'Package : ' . l:Tag_Item['package'] . "\n"
let l:Menu = l:Tag_Item['package']
elseif has_key( l:Tag_Item, 'separate')
let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n"
let l:Menu = l:Tag_Item['separate']
elseif has_key( l:Tag_Item, 'packspec')
let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n"
let l:Menu = l:Tag_Item['packspec']
elseif has_key( l:Tag_Item, 'type')
let l:Info .= 'Datetype : ' . l:Tag_Item['type'] . "\n"
let l:Menu = l:Tag_Item['type']
else
let l:Menu = l:Tag_Item['filename']
endif
let l:Match_Item = {
\ 'word': l:Tag_Item['name'],
\ 'menu': l:Menu,
\ 'info': l:Info,
\ 'kind': l:Tag_Item['kind'],
\ 'icase': 1}
endif
if complete_add (l:Match_Item) == 0
return []
endif
if complete_check ()
return []
endif
endfor
return []
endif
endfunction adacomplete#Complete
finish " 1}}}
"------------------------------------------------------------------------------
" Copyright (C) 2006 Martin Krischik
"
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
"------------------------------------------------------------------------------
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker

View File

@@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: C " Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Mar 24 " Last Change: 2006 May 08
" This function is used for the 'omnifunc' option. " This function is used for the 'omnifunc' option.
@@ -379,7 +379,9 @@ function! s:Nextitem(lead, items, depth, all)
endif endif
" Recognize "struct foobar" and "union foobar". " Recognize "struct foobar" and "union foobar".
if (tokens[tidx] == 'struct' || tokens[tidx] == 'union') && tidx + 1 < len(tokens) " Also do "class foobar" when it's C++ after all (doesn't work very well
" though).
if (tokens[tidx] == 'struct' || tokens[tidx] == 'union' || tokens[tidx] == 'class') && tidx + 1 < len(tokens)
let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all) let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all)
break break
endif endif
@@ -421,7 +423,7 @@ function! s:Nextitem(lead, items, depth, all)
if ei > 1 if ei > 1
let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<') let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<')
if len(cmdtokens) > 1 if len(cmdtokens) > 1
if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union' if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union' || cmdtokens[0] == 'class'
let name = '' let name = ''
" Use the first identifier after the "struct" or "union" " Use the first identifier after the "struct" or "union"
for ti in range(len(cmdtokens) - 1) for ti in range(len(cmdtokens) - 1)
@@ -456,7 +458,7 @@ endfunction
" member. " member.
function! s:StructMembers(typename, items, all) function! s:StructMembers(typename, items, all)
" Todo: What about local structures? " Todo: What about local structures?
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
if fnames == '' if fnames == ''
return [] return []
endif endif

View File

@@ -1,430 +1,429 @@
" Vim completion script " Vim completion script
" Language: CSS 2.1 " Language: CSS 2.1
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Apr 30 " Last Change: 2007 May 5
let s:values = split("azimuth background background-attachment background-color background-image background-position background-repeat border bottom border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width caption-side clear clip color content counter-increment counter-reset cue cue-after cue-before cursor display direction elevation empty-cells float font font-family font-size font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-right margin-left margin-top margin-bottom max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes right richness speak speak-header speak-numeral speak-punctuation speech-rate stress table-layout text-align text-decoration text-indent text-transform top unicode-bidi vertical-align visibility voice-family volume white-space width widows word-spacing z-index")
function! csscomplete#CompleteCSS(findstart, base) function! csscomplete#CompleteCSS(findstart, base)
if a:findstart if a:findstart
" We need whole line to proper checking " We need whole line to proper checking
let line = getline('.') let line = getline('.')
let start = col('.') - 1 let start = col('.') - 1
let compl_begin = col('.') - 2 let compl_begin = col('.') - 2
while start >= 0 && line[start - 1] =~ '\(\k\|-\)' while start >= 0 && line[start - 1] =~ '\%(\k\|-\)'
let start -= 1 let start -= 1
endwhile endwhile
let b:compl_context = getline('.')[0:compl_begin] let b:compl_context = line[0:compl_begin]
return start return start
endif
" There are few chars important for context:
" ^ ; : { } /* */
" Where ^ is start of line and /* */ are comment borders
" Depending on their relative position to cursor we will know what should
" be completed.
" 1. if nearest are ^ or { or ; current word is property
" 2. if : it is value (with exception of pseudo things)
" 3. if } we are outside of css definitions
" 4. for comments ignoring is be the easiest but assume they are the same
" as 1.
" 5. if @ complete at-rule
" 6. if ! complete important
if exists("b:compl_context")
let line = b:compl_context
unlet! b:compl_context
else else
" There are few chars important for context: let line = a:base
" ^ ; : { } /* */ endif
" Where ^ is start of line and /* */ are comment borders
" Depending on their relative position to cursor we will now what should
" be completed.
" 1. if nearest are ^ or { or ; current word is property
" 2. if : it is value (with exception of pseudo things)
" 3. if } we are outside of css definitions
" 4. for comments ignoring is be the easiest but assume they are the same
" as 1.
" 5. if @ complete at-rule
" 6. if ! complete important
if exists("b:compl_context")
let line = b:compl_context
unlet! b:compl_context
else
let line = a:base
endif
let res = [] let res = []
let res2 = [] let res2 = []
let borders = {} let borders = {}
" We need the last occurrence of char so reverse line " Check last occurrence of sequence
let revline = join(reverse(split(line, '.\zs')), '')
let openbrace = stridx(revline, '{') let openbrace = strridx(line, '{')
let closebrace = stridx(revline, '}') let closebrace = strridx(line, '}')
let colon = stridx(revline, ':') let colon = strridx(line, ':')
let semicolon = stridx(revline, ';') let semicolon = strridx(line, ';')
let opencomm = stridx(revline, '*/') " Line was reversed let opencomm = strridx(line, '/*')
let closecomm = stridx(revline, '/*') " Line was reversed let closecomm = strridx(line, '*/')
let style = stridx(revline, '=\s*elyts') " Line was reversed let style = strridx(line, 'style\s*=')
let atrule = stridx(revline, '@') let atrule = strridx(line, '@')
let exclam = stridx(revline, '!') let exclam = strridx(line, '!')
if openbrace > -1 if openbrace > -1
let borders[openbrace] = "openbrace" let borders[openbrace] = "openbrace"
endif endif
if closebrace > -1 if closebrace > -1
let borders[closebrace] = "closebrace" let borders[closebrace] = "closebrace"
endif endif
if colon > -1 if colon > -1
let borders[colon] = "colon" let borders[colon] = "colon"
endif endif
if semicolon > -1 if semicolon > -1
let borders[semicolon] = "semicolon" let borders[semicolon] = "semicolon"
endif endif
if opencomm > -1 if opencomm > -1
let borders[opencomm] = "opencomm" let borders[opencomm] = "opencomm"
endif endif
if closecomm > -1 if closecomm > -1
let borders[closecomm] = "closecomm" let borders[closecomm] = "closecomm"
endif endif
if style > -1 if style > -1
let borders[style] = "style" let borders[style] = "style"
endif endif
if atrule > -1 if atrule > -1
let borders[atrule] = "atrule" let borders[atrule] = "atrule"
endif endif
if exclam > -1 if exclam > -1
let borders[exclam] = "exclam" let borders[exclam] = "exclam"
endif endif
if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$' if len(borders) == 0 || borders[max(keys(borders))] =~ '^\%(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
" Complete properties " Complete properties
let values = split("azimuth background background-attachment background-color background-image background-position background-repeat border bottom border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width caption-side clear clip color content counter-increment counter-reset cue cue-after cue-before cursor display direction elevation empty-cells float font font-family font-size font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-right margin-left margin-top margin-bottom max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes right richness speak speak-header speak-numeral speak-punctuation speech-rate stress table-layout text-align text-decoration text-indent text-transform top unicode-bidi vertical-align visibility voice-family volume white-space width widows word-spacing z-index")
let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$') let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$')
for m in values for m in s:values
if m =~? '^'.entered_property if m =~? '^'.entered_property
call add(res, m . ':') call add(res, m . ':')
elseif m =~? entered_property elseif m =~? entered_property
call add(res2, m . ':') call add(res2, m . ':')
endif endif
endfor endfor
return res + res2 return res + res2
elseif borders[min(keys(borders))] == 'colon' elseif borders[max(keys(borders))] == 'colon'
" Get name of property " Get name of property
let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$')) let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$'))
if prop == 'azimuth' if prop == 'azimuth'
let values = ["left-side", "far-left", "left", "center-left", "center", "center-right", "right", "far-right", "right-side", "behind", "leftwards", "rightwards"] let values = ["left-side", "far-left", "left", "center-left", "center", "center-right", "right", "far-right", "right-side", "behind", "leftwards", "rightwards"]
elseif prop == 'background-attachment' elseif prop == 'background-attachment'
let values = ["scroll", "fixed"] let values = ["scroll", "fixed"]
elseif prop == 'background-color' elseif prop == 'background-color'
let values = ["transparent", "rgb(", "#"] let values = ["transparent", "rgb(", "#"]
elseif prop == 'background-image' elseif prop == 'background-image'
let values = ["url(", "none"] let values = ["url(", "none"]
elseif prop == 'background-position' elseif prop == 'background-position'
let vals = matchstr(line, '.*:\s*\zs.*') let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z]\+\)\?$' if vals =~ '^\%([a-zA-Z]\+\)\?$'
let values = ["top", "center", "bottom"] let values = ["top", "center", "bottom"]
elseif vals =~ '^[a-zA-Z]\+\s\+\([a-zA-Z]\+\)\?$' elseif vals =~ '^[a-zA-Z]\+\s\+\%([a-zA-Z]\+\)\?$'
let values = ["left", "center", "right"] let values = ["left", "center", "right"]
else
return []
endif
elseif prop == 'background-repeat'
let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"]
elseif prop == 'background'
let values = ["url(", "scroll", "fixed", "transparent", "rgb(", "#", "none", "top", "center", "bottom" , "left", "right", "repeat", "repeat-x", "repeat-y", "no-repeat"]
elseif prop == 'border-collapse'
let values = ["collapse", "separate"]
elseif prop == 'border-color'
let values = ["rgb(", "#", "transparent"]
elseif prop == 'border-spacing'
return []
elseif prop == 'border-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop =~ 'border-\(top\|right\|bottom\|left\)$'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
let values = ["thin", "thick", "medium"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
let values = ["rgb(", "#", "transparent"]
else
return []
endif
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-color'
let values = ["rgb(", "#", "transparent"]
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'border-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'border'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
let values = ["thin", "thick", "medium"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
let values = ["rgb(", "#", "transparent"]
else
return []
endif
elseif prop == 'bottom'
let values = ["auto"]
elseif prop == 'caption-side'
let values = ["top", "bottom"]
elseif prop == 'clear'
let values = ["none", "left", "right", "both"]
elseif prop == 'clip'
let values = ["auto", "rect("]
elseif prop == 'color'
let values = ["rgb(", "#"]
elseif prop == 'content'
let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"]
elseif prop =~ 'counter-\(increment\|reset\)$'
let values = ["none"]
elseif prop =~ '^\(cue-after\|cue-before\|cue\)$'
let values = ["url(", "none"]
elseif prop == 'cursor'
let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"]
elseif prop == 'direction'
let values = ["ltr", "rtl"]
elseif prop == 'display'
let values = ["inline", "block", "list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"]
elseif prop == 'elevation'
let values = ["below", "level", "above", "higher", "lower"]
elseif prop == 'empty-cells'
let values = ["show", "hide"]
elseif prop == 'float'
let values = ["left", "right", "none"]
elseif prop == 'font-family'
let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]
elseif prop == 'font-size'
let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"]
elseif prop == 'font-style'
let values = ["normal", "italic", "oblique"]
elseif prop == 'font-variant'
let values = ["normal", "small-caps"]
elseif prop == 'font-weight'
let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"]
elseif prop == 'font'
let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"]
elseif prop =~ '^\(height\|width\)$'
let values = ["auto"]
elseif prop =~ '^\(left\|rigth\)$'
let values = ["auto"]
elseif prop == 'letter-spacing'
let values = ["normal"]
elseif prop == 'line-height'
let values = ["normal"]
elseif prop == 'list-style-image'
let values = ["url(", "none"]
elseif prop == 'list-style-position'
let values = ["inside", "outside"]
elseif prop == 'list-style-type'
let values = ["disc", "circle", "square", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin", "none"]
elseif prop == 'list-style'
return []
elseif prop == 'margin'
let values = ["auto"]
elseif prop =~ 'margin-\(right\|left\|top\|bottom\)$'
let values = ["auto"]
elseif prop == 'max-height'
let values = ["auto"]
elseif prop == 'max-width'
let values = ["none"]
elseif prop == 'min-height'
let values = ["none"]
elseif prop == 'min-width'
let values = ["none"]
elseif prop == 'orphans'
return []
elseif prop == 'outline-color'
let values = ["rgb(", "#"]
elseif prop == 'outline-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop == 'outline-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'outline'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z0-9,()#]\+\)\?$'
let values = ["rgb(", "#"]
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
let values = ["thin", "thick", "medium"]
else
return []
endif
elseif prop == 'overflow'
let values = ["visible", "hidden", "scroll", "auto"]
elseif prop == 'padding'
return []
elseif prop =~ 'padding-\(top\|right\|bottom\|left\)$'
return []
elseif prop =~ 'page-break-\(after\|before\)$'
let values = ["auto", "always", "avoid", "left", "right"]
elseif prop == 'page-break-inside'
let values = ["auto", "avoid"]
elseif prop =~ 'pause-\(after\|before\)$'
return []
elseif prop == 'pause'
return []
elseif prop == 'pitch-range'
return []
elseif prop == 'pitch'
let values = ["x-low", "low", "medium", "high", "x-high"]
elseif prop == 'play-during'
let values = ["url(", "mix", "repeat", "auto", "none"]
elseif prop == 'position'
let values = ["static", "relative", "absolute", "fixed"]
elseif prop == 'quotes'
let values = ["none"]
elseif prop == 'richness'
return []
elseif prop == 'speak-header'
let values = ["once", "always"]
elseif prop == 'speak-numeral'
let values = ["digits", "continuous"]
elseif prop == 'speak-punctuation'
let values = ["code", "none"]
elseif prop == 'speak'
let values = ["normal", "none", "spell-out"]
elseif prop == 'speech-rate'
let values = ["x-slow", "slow", "medium", "fast", "x-fast", "faster", "slower"]
elseif prop == 'stress'
return []
elseif prop == 'table-layout'
let values = ["auto", "fixed"]
elseif prop == 'text-align'
let values = ["left", "right", "center", "justify"]
elseif prop == 'text-decoration'
let values = ["none", "underline", "overline", "line-through", "blink"]
elseif prop == 'text-indent'
return []
elseif prop == 'text-transform'
let values = ["capitalize", "uppercase", "lowercase", "none"]
elseif prop == 'top'
let values = ["auto"]
elseif prop == 'unicode-bidi'
let values = ["normal", "embed", "bidi-override"]
elseif prop == 'vertical-align'
let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"]
elseif prop == 'visibility'
let values = ["visible", "hidden", "collapse"]
elseif prop == 'voice-family'
return []
elseif prop == 'volume'
let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"]
elseif prop == 'white-space'
let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"]
elseif prop == 'widows'
return []
elseif prop == 'word-spacing'
let values = ["normal"]
elseif prop == 'z-index'
let values = ["auto"]
else else
" If no property match it is possible we are outside of {} and return []
" trying to complete pseudo-(class|element) endif
let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$')) elseif prop == 'background-repeat'
if ",a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var," =~ ','.element.',' let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"]
let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"] elseif prop == 'background'
let values = ["url(", "scroll", "fixed", "transparent", "rgb(", "#", "none", "top", "center", "bottom" , "left", "right", "repeat", "repeat-x", "repeat-y", "no-repeat"]
elseif prop == 'border-collapse'
let values = ["collapse", "separate"]
elseif prop == 'border-color'
let values = ["rgb(", "#", "transparent"]
elseif prop == 'border-spacing'
return []
elseif prop == 'border-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop =~ 'border-\%(top\|right\|bottom\|left\)$'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\%([a-zA-Z0-9.]\+\)\?$'
let values = ["thin", "thick", "medium"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\%([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$'
let values = ["rgb(", "#", "transparent"]
else
return []
endif
elseif prop =~ 'border-\%(top\|right\|bottom\|left\)-color'
let values = ["rgb(", "#", "transparent"]
elseif prop =~ 'border-\%(top\|right\|bottom\|left\)-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop =~ 'border-\%(top\|right\|bottom\|left\)-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'border-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'border'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\%([a-zA-Z0-9.]\+\)\?$'
let values = ["thin", "thick", "medium"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\%([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$'
let values = ["rgb(", "#", "transparent"]
else
return []
endif
elseif prop == 'bottom'
let values = ["auto"]
elseif prop == 'caption-side'
let values = ["top", "bottom"]
elseif prop == 'clear'
let values = ["none", "left", "right", "both"]
elseif prop == 'clip'
let values = ["auto", "rect("]
elseif prop == 'color'
let values = ["rgb(", "#"]
elseif prop == 'content'
let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"]
elseif prop =~ 'counter-\%(increment\|reset\)$'
let values = ["none"]
elseif prop =~ '^\%(cue-after\|cue-before\|cue\)$'
let values = ["url(", "none"]
elseif prop == 'cursor'
let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"]
elseif prop == 'direction'
let values = ["ltr", "rtl"]
elseif prop == 'display'
let values = ["inline", "block", "list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"]
elseif prop == 'elevation'
let values = ["below", "level", "above", "higher", "lower"]
elseif prop == 'empty-cells'
let values = ["show", "hide"]
elseif prop == 'float'
let values = ["left", "right", "none"]
elseif prop == 'font-family'
let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]
elseif prop == 'font-size'
let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"]
elseif prop == 'font-style'
let values = ["normal", "italic", "oblique"]
elseif prop == 'font-variant'
let values = ["normal", "small-caps"]
elseif prop == 'font-weight'
let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"]
elseif prop == 'font'
let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"]
elseif prop =~ '^\%(height\|width\)$'
let values = ["auto"]
elseif prop =~ '^\%(left\|rigth\)$'
let values = ["auto"]
elseif prop == 'letter-spacing'
let values = ["normal"]
elseif prop == 'line-height'
let values = ["normal"]
elseif prop == 'list-style-image'
let values = ["url(", "none"]
elseif prop == 'list-style-position'
let values = ["inside", "outside"]
elseif prop == 'list-style-type'
let values = ["disc", "circle", "square", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin", "none"]
elseif prop == 'list-style'
return []
elseif prop == 'margin'
let values = ["auto"]
elseif prop =~ 'margin-\%(right\|left\|top\|bottom\)$'
let values = ["auto"]
elseif prop == 'max-height'
let values = ["auto"]
elseif prop == 'max-width'
let values = ["none"]
elseif prop == 'min-height'
let values = ["none"]
elseif prop == 'min-width'
let values = ["none"]
elseif prop == 'orphans'
return []
elseif prop == 'outline-color'
let values = ["rgb(", "#"]
elseif prop == 'outline-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop == 'outline-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'outline'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\%([a-zA-Z0-9,()#]\+\)\?$'
let values = ["rgb(", "#"]
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\%([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$'
let values = ["thin", "thick", "medium"]
else
return []
endif
elseif prop == 'overflow'
let values = ["visible", "hidden", "scroll", "auto"]
elseif prop == 'padding'
return []
elseif prop =~ 'padding-\%(top\|right\|bottom\|left\)$'
return []
elseif prop =~ 'page-break-\%(after\|before\)$'
let values = ["auto", "always", "avoid", "left", "right"]
elseif prop == 'page-break-inside'
let values = ["auto", "avoid"]
elseif prop =~ 'pause-\%(after\|before\)$'
return []
elseif prop == 'pause'
return []
elseif prop == 'pitch-range'
return []
elseif prop == 'pitch'
let values = ["x-low", "low", "medium", "high", "x-high"]
elseif prop == 'play-during'
let values = ["url(", "mix", "repeat", "auto", "none"]
elseif prop == 'position'
let values = ["static", "relative", "absolute", "fixed"]
elseif prop == 'quotes'
let values = ["none"]
elseif prop == 'richness'
return []
elseif prop == 'speak-header'
let values = ["once", "always"]
elseif prop == 'speak-numeral'
let values = ["digits", "continuous"]
elseif prop == 'speak-punctuation'
let values = ["code", "none"]
elseif prop == 'speak'
let values = ["normal", "none", "spell-out"]
elseif prop == 'speech-rate'
let values = ["x-slow", "slow", "medium", "fast", "x-fast", "faster", "slower"]
elseif prop == 'stress'
return []
elseif prop == 'table-layout'
let values = ["auto", "fixed"]
elseif prop == 'text-align'
let values = ["left", "right", "center", "justify"]
elseif prop == 'text-decoration'
let values = ["none", "underline", "overline", "line-through", "blink"]
elseif prop == 'text-indent'
return []
elseif prop == 'text-transform'
let values = ["capitalize", "uppercase", "lowercase", "none"]
elseif prop == 'top'
let values = ["auto"]
elseif prop == 'unicode-bidi'
let values = ["normal", "embed", "bidi-override"]
elseif prop == 'vertical-align'
let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"]
elseif prop == 'visibility'
let values = ["visible", "hidden", "collapse"]
elseif prop == 'voice-family'
return []
elseif prop == 'volume'
let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"]
elseif prop == 'white-space'
let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"]
elseif prop == 'widows'
return []
elseif prop == 'word-spacing'
let values = ["normal"]
elseif prop == 'z-index'
let values = ["auto"]
else
" If no property match it is possible we are outside of {} and
" trying to complete pseudo-(class|element)
let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$'))
if stridx(',a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var,', ','.element.',') > -1
let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"]
else
return []
endif
endif
" Complete values
let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$')
for m in values
if m =~? '^'.entered_value
call add(res, m)
elseif m =~? entered_value
call add(res2, m)
endif
endfor
return res + res2
elseif borders[max(keys(borders))] == 'closebrace'
return []
elseif borders[max(keys(borders))] == 'exclam'
" Complete values
let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
let values = ["important"]
for m in values
if m =~? '^'.entered_imp
call add(res, m)
endif
endfor
return res
elseif borders[max(keys(borders))] == 'atrule'
let afterat = matchstr(line, '.*@\zs.*')
if afterat =~ '\s'
let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze')
if atrulename == 'media'
let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$')
elseif atrulename == 'import'
let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$')
if entered_atruleafter =~ "^[\"']"
let filestart = matchstr(entered_atruleafter, '^.\zs.*')
let files = split(glob(filestart.'*'), '\n')
let values = map(copy(files), '"\"".v:val')
elseif entered_atruleafter =~ "^url("
let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*")
let files = split(glob(filestart.'*'), '\n')
let values = map(copy(files), '"url(".v:val')
else else
return [] let values = ['"', 'url(']
endif endif
else
return []
endif endif
" Complete values
let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$')
for m in values for m in values
if m =~? '^'.entered_value if m =~? '^'.entered_atruleafter
call add(res, m) call add(res, m)
elseif m =~? entered_value elseif m =~? entered_atruleafter
call add(res2, m) call add(res2, m)
endif endif
endfor endfor
return res + res2 return res + res2
elseif borders[min(keys(borders))] == 'closebrace' endif
return [] let values = ["charset", "page", "media", "import", "font-face"]
elseif borders[min(keys(borders))] == 'exclam' let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')
" Complete values
let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
let values = ["important"]
for m in values
if m =~? '^'.entered_imp
call add(res, m)
endif
endfor
return res
elseif borders[min(keys(borders))] == 'atrule'
let afterat = matchstr(line, '.*@\zs.*')
if afterat =~ '\s'
let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze')
if atrulename == 'media'
let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
let atruleafterbase = matchstr(line, '.*@media\s\+\ze.*$')
let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$')
elseif atrulename == 'import'
let atruleafterbase = matchstr(line, '.*@import\s\+\ze.*$')
let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$')
if entered_atruleafter =~ "^[\"']"
let filestart = matchstr(entered_atruleafter, '^.\zs.*')
let files = split(glob(filestart.'*'), '\n')
let values = map(copy(files), '"\"".v:val')
elseif entered_atruleafter =~ "^url("
let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*")
let files = split(glob(filestart.'*'), '\n')
let values = map(copy(files), '"url(".v:val')
else
let values = ['"', 'url(']
endif
else
return []
endif
for m in values
if m =~? '^'.entered_atruleafter
call add(res, m)
elseif m =~? entered_atruleafter
call add(res2, m)
endif
endfor
return res + res2
for m in values
if m =~? '^'.entered_atrule
call add(res, m .' ')
elseif m =~? entered_atrule
call add(res2, m .' ')
endif endif
endfor
let values = ["charset", "page", "media", "import", "font-face"] return res + res2
let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$') endif
for m in values return []
if m =~? '^'.entered_atrule
call add(res, m .' ')
elseif m =~? entered_atrule
call add(res2, m .' ')
endif
endfor
return res + res2
endif
return []
endif
endfunction endfunction

View File

@@ -0,0 +1,75 @@
"------------------------------------------------------------------------------
" Description: Vim Ada/Dec Ada compiler file
" Language: Ada (Dec Ada)
" $Id$
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischik
" $Author$
" $Date$
" Version: 4.2
" $Revision$
" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $
" History: 21.07.2006 MK New Dec Ada
" 15.10.2006 MK Bram's suggestion for runtime integration
" 05.11.2006 MK Bram suggested not to use include protection for
" autoload
" 05.11.2006 MK Bram suggested to save on spaces
" Help Page: compiler-decada
"------------------------------------------------------------------------------
if version < 700
finish
endif
function decada#Unit_Name () dict " {{{1
" Convert filename into acs unit:
" 1: remove the file extenstion.
" 2: replace all double '_' or '-' with an dot (which denotes a separate)
" 3: remove a trailing '_' (wich denotes a specification)
return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '')
endfunction decada#Unit_Name " }}}1
function decada#Make () dict " {{{1
let l:make_prg = substitute (g:self.Make_Command, '%<', self.Unit_Name(), '')
let &errorformat = g:self.Error_Format
let &makeprg = l:make_prg
wall
make
copen
set wrap
wincmd W
endfunction decada#Build " }}}1
function decada#Set_Session (...) dict " {{{1
if a:0 > 0
call ada#Switch_Session (a:1)
elseif argc() == 0 && strlen (v:servername) > 0
call ada#Switch_Session (
\ expand('~')[0:-2] . ".vimfiles.session]" .
\ v:servername . ".vim")
endif
return
endfunction decada#Set_Session " }}}1
function decada#New () " }}}1
let Retval = {
\ 'Make' : function ('decada#Make'),
\ 'Unit_Name' : function ('decada#Unit_Name'),
\ 'Set_Session' : function ('decada#Set_Session'),
\ 'Project_Dir' : '',
\ 'Make_Command' : 'ACS COMPILE /Wait /Log /NoPreLoad /Optimize=Development /Debug %<',
\ 'Error_Format' : '%+A%%ADAC-%t-%m,%C %#%m,%Zat line number %l in file %f,' .
\ '%+I%%ada-I-%m,%C %#%m,%Zat line number %l in file %f'}
return Retval
endfunction decada#New " }}}1
finish " 1}}}
"------------------------------------------------------------------------------
" Copyright (C) 2006 Martin Krischik
"
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
"------------------------------------------------------------------------------
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker

View File

@@ -1,40 +1,56 @@
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" GetLatestVimScripts.vim " getscript.vim
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: Feb 15, 2006 " Date: May 11, 2007
" Version: 20 " Version: 27
" Installing: :help glvs-install " Installing: :help glvs-install
" Usage: :help glvs " Usage: :help glvs
" "
" GetLatestVimScripts: 642 1 :AutoInstall: GetLatestVimScripts.vim " GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
"redraw!|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Initialization: {{{1 " Initialization: {{{1
" if you're sourcing this file, surely you can't be " if you're sourcing this file, surely you can't be
" expecting vim to be in its vi-compatible mode " expecting vim to be in its vi-compatible mode
if &cp if &cp
if &verbose echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
echo "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
endif
finish finish
endif endif
let s:keepfo = &fo
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim
"DechoTabOn
if exists("loaded_GetLatestVimScripts") if exists("g:loaded_getscript")
finish finish
endif endif
let g:loaded_GetLatestVimScripts= "v20" let g:loaded_getscript= "v27"
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Global Variables: {{{1 " Global Variables: {{{1
" allow user to change the command for obtaining scripts (does fetch work?) " allow user to change the command for obtaining scripts (does fetch work?)
if !exists("g:GetLatestVimScripts_wget") if !exists("g:GetLatestVimScripts_wget")
let g:GetLatestVimScripts_wget= "wget" if executable("wget")
let g:GetLatestVimScripts_wget= "wget"
elseif executable("curl")
let g:GetLatestVimScripts_wget= "curl"
else
let g:GetLatestVimScripts_wget = 'echo "GetLatestVimScripts needs wget or curl"'
let g:GetLatestVimScripts_options = ""
endif
endif endif
" options that wget and curl require:
if !exists("g:GetLatestVimScripts_options") if !exists("g:GetLatestVimScripts_options")
let g:GetLatestVimScripts_options= "-q -O" if g:GetLatestVimScripts_wget == "wget"
let g:GetLatestVimScripts_options= "-q -O"
elseif g:GetLatestVimScripts_wget == "curl"
let g:GetLatestVimScripts_options= "-s -O"
else
let g:GetLatestVimScripts_options= ""
endif
endif endif
" by default, allow autoinstall lines to work
if !exists("g:GetLatestVimScripts_allowautoinstall") if !exists("g:GetLatestVimScripts_allowautoinstall")
let g:GetLatestVimScripts_allowautoinstall= 1 let g:GetLatestVimScripts_allowautoinstall= 1
endif endif
@@ -43,7 +59,8 @@ endif
"let g:GetLatestVimScripts_wget = "echo" "let g:GetLatestVimScripts_wget = "echo"
"let g:GetLatestVimScripts_options = "options" "let g:GetLatestVimScripts_options = "options"
" check if s:autoinstall is possible " ---------------------------------------------------------------------
" Check If AutoInstall Capable: {{{1
let s:autoinstall= "" let s:autoinstall= ""
if g:GetLatestVimScripts_allowautoinstall if g:GetLatestVimScripts_allowautoinstall
@@ -66,21 +83,22 @@ if g:GetLatestVimScripts_allowautoinstall
let s:autoinstall= $HOME."/".s:dotvim let s:autoinstall= $HOME."/".s:dotvim
endif endif
" call Decho("s:autoinstall<".s:autoinstall.">") " call Decho("s:autoinstall<".s:autoinstall.">")
else "else "Decho
" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled") " call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled")
endif endif
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Public Interface: {{{1 " Public Interface: {{{1
com! -nargs=0 GetLatestVimScripts call <SID>GetLatestVimScripts() com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts()
silent! com -nargs=0 GLVS call <SID>GetLatestVimScripts() com! -nargs=0 GetScript call getscript#GetLatestVimScripts()
silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts()
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" GetOneScript: (Get Latest Vim Script) this function operates {{{1 " GetOneScript: (Get Latest Vim Script) this function operates {{{1
" on the current line, interpreting two numbers and text as " on the current line, interpreting two numbers and text as
" ScriptID, SourceID, and Filename. " ScriptID, SourceID, and Filename.
" It downloads any scripts that have newer versions from vim.sf.net. " It downloads any scripts that have newer versions from vim.sf.net.
fun! <SID>GetOneScript(...) fun! s:GetOneScript(...)
" call Dfunc("GetOneScript()") " call Dfunc("GetOneScript()")
" set options to allow progress to be shown on screen " set options to allow progress to be shown on screen
@@ -96,33 +114,43 @@ fun! <SID>GetOneScript(...)
if a:0 >= 3 if a:0 >= 3
let scriptid = a:1 let scriptid = a:1
let srcid = a:2 let srcid = a:2
let cmmnt = a:3 let fname = a:3
let cmmnt = ""
" call Decho("scriptid<".scriptid.">") " call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">") " call Decho("srcid <".srcid.">")
" call Decho("cmmnt <".cmmnt.">") " call Decho("fname <".fname.">")
else else
let curline = getline(".") let curline = getline(".")
let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)$' if curline =~ '^\s*#'
" call Dret("GetOneScript : skipping a pure comment line")
return
endif
let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$'
try try
let scriptid = substitute(curline,parsepat,'\1','e') let scriptid = substitute(curline,parsepat,'\1','e')
catch /^Vim\%((\a\+)\)\=:E486/ catch /^Vim\%((\a\+)\)\=:E486/
let scriptid= 0 let scriptid= 0
endtry endtry
try try
let srcid = substitute(curline,parsepat,'\2','e') let srcid = substitute(curline,parsepat,'\2','e')
catch /^Vim\%((\a\+)\)\=:E486/ catch /^Vim\%((\a\+)\)\=:E486/
let srcid= 0 let srcid= 0
endtry endtry
try try
let cmmnt = substitute(curline,parsepat,'\3','e') let fname= substitute(curline,parsepat,'\3','e')
catch /^Vim\%((\a\+)\)\=:E486/ catch /^Vim\%((\a\+)\)\=:E486/
let cmmnt= "" let fname= ""
endtry
try
let cmmnt= substitute(curline,parsepat,'\4','e')
catch /^Vim\%((\a\+)\)\=:E486/
let cmmnt= ""
endtry endtry
" call Decho("curline <".curline.">") " call Decho("curline <".curline.">")
" call Decho("parsepat<".parsepat.">") " call Decho("parsepat<".parsepat.">")
" call Decho("scriptid<".scriptid.">") " call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">") " call Decho("srcid <".srcid.">")
" call Decho("cmmnt <".cmmnt.">") " call Decho("fname <".fname.">")
endif endif
if scriptid == 0 || srcid == 0 if scriptid == 0 || srcid == 0
@@ -133,15 +161,15 @@ fun! <SID>GetOneScript(...)
endif endif
let doautoinstall= 0 let doautoinstall= 0
if cmmnt =~ ":AutoInstall:" if fname =~ ":AutoInstall:"
" call Decho("cmmnt<".cmmnt."> has :AutoInstall:...") " call Decho("fname<".fname."> has :AutoInstall:...")
let aicmmnt= substitute(cmmnt,'\s\+:AutoInstall:\s\+',' ','') let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','')
" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall) " call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
if s:autoinstall != "" if s:autoinstall != ""
let doautoinstall = g:GetLatestVimScripts_allowautoinstall let doautoinstall = g:GetLatestVimScripts_allowautoinstall
endif endif
else else
let aicmmnt= cmmnt let aicmmnt= fname
endif endif
" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall) " call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
@@ -155,7 +183,7 @@ fun! <SID>GetOneScript(...)
let tmpfile = tempname() let tmpfile = tempname()
let v:errmsg = "" let v:errmsg = ""
" make three tries at downloading the description " make up to three tries at downloading the description
let itry= 1 let itry= 1
while itry <= 3 while itry <= 3
" call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) " call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
@@ -182,19 +210,19 @@ fun! <SID>GetOneScript(...)
endwhile endwhile
" call Decho(" --- end downloading tries while loop --- itry=".itry) " call Decho(" --- end downloading tries while loop --- itry=".itry)
" testing: did finding /Click on the package.../ fail? " testing: did finding "Click on the package..." fail?
if findpkg == 0 || itry >= 4 if findpkg == 0 || itry >= 4
silent q! silent q!
call delete(tmpfile) call delete(tmpfile)
" restore options " restore options
let &t_ti = t_ti let &t_ti = t_ti
let &t_te = t_te let &t_te = t_te
let &rs = rs let &rs = rs
let s:downerrors = s:downerrors + 1 let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">") " call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
" call Dret("GetOneScript : srch for /Click on the package/ failed") " call Dret("GetOneScript : srch for /Click on the package/ failed")
return return
endif endif
" call Decho('found "Click on the package to download"') " call Decho('found "Click on the package to download"')
@@ -216,74 +244,101 @@ fun! <SID>GetOneScript(...)
let srcidpat = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$' let srcidpat = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
let latestsrcid= substitute(getline("."),srcidpat,'\1','') let latestsrcid= substitute(getline("."),srcidpat,'\1','')
let fname = substitute(getline("."),srcidpat,'\2','') let sname = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded
" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> fname<".fname.">") " call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">")
silent q! silent q!
call delete(tmpfile) call delete(tmpfile)
" convert the strings-of-numbers into numbers " convert the strings-of-numbers into numbers
let srcid = srcid + 0 let srcid = srcid + 0
let latestsrcid = latestsrcid + 0 let latestsrcid = latestsrcid + 0
" call Decho("srcid=".srcid." latestsrcid=".latestsrcid." fname<".fname.">") " call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">")
" has the plugin's most-recent srcid increased, which indicates " has the plugin's most-recent srcid increased, which indicates
" that it has been updated " that it has been updated
if latestsrcid > srcid if latestsrcid > srcid
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
let s:downloads= s:downloads + 1 let s:downloads= s:downloads + 1
if fname == bufname("%") if sname == bufname("%")
" GetLatestVimScript has to be careful about downloading itself " GetLatestVimScript has to be careful about downloading itself
let fname= "NEW_".fname let sname= "NEW_".sname
endif endif
" the plugin has been updated since we last obtained it, so download a new copy " the plugin has been updated since we last obtained it, so download a new copy
" call Decho("...downloading new <".fname.">") " call Decho("...downloading new <".sname.">")
echomsg "...downloading new <".fname.">" echomsg "...downloading new <".sname.">"
if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95") if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")
" call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"') " call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"')
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"' exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"'
else else
" call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'") " call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'")
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'" exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'"
endif endif
" AutoInstall: only if doautoinstall is so indicating " AutoInstall: only if doautoinstall is so indicating
if doautoinstall if doautoinstall
" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".fname.")=".filereadable(fname)) " call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
if filereadable(fname) if filereadable(sname)
" call Decho("move <".fname."> to ".s:autoinstall) " call Decho("move <".sname."> to ".s:autoinstall)
" call Decho("DISABLED for testing") exe "silent !".g:GetLatestVimScripts_mv." ".sname." ".s:autoinstall
exe "silent !"g:GetLatestVimScripts_mv." ".fname." ".s:autoinstall let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") " call Decho("exe cd ".s:autoinstall)
exe "cd ".s:autoinstall exe "cd ".s:autoinstall
if fname =~ '\.bz2$'
" call Decho("attempt to bunzip2 ".fname) " decompress
exe "silent !bunzip2 ".fname if sname =~ '\.bz2$'
let fname= substitute(fname,'\.bz2$','','') " call Decho("decompress: attempt to bunzip2 ".sname)
elseif fname =~ '\.gz$' exe "silent !bunzip2 ".sname
" call Decho("attempt to gunzip ".fname) let sname= substitute(sname,'\.bz2$','','')
exe "silent !gunzip ".fname " call Decho("decompress: new sname<".sname."> after bunzip2")
let fname= substitute(fname,'\.gz$','','') elseif sname =~ '\.gz$'
endif " call Decho("decompress: attempt to gunzip ".sname)
if fname =~ '\.zip$' exe "silent !gunzip ".sname
" call Decho("attempt to unzip ".fname) let sname= substitute(sname,'\.gz$','','')
exe "silent !unzip -o".fname " call Decho("decompress: new sname<".sname."> after gunzip")
elseif fname =~ '\.tar$' endif
" call Decho("attempt to untar ".fname)
exe "silent !tar -oxvf ".fname " distribute archive(.zip, .tar, .vba) contents
endif if sname =~ '\.zip$'
if fname =~ '.vim$' " call Decho("dearchive: attempt to unzip ".sname)
" call Decho("attempt to simply move ".fname." to plugin") exe "silent !unzip -o ".sname
exe "silent !".g:GetLatestVimScripts_mv." ".fname." plugin" elseif sname =~ '\.tar$'
endif " call Decho("dearchive: attempt to untar ".sname)
exe "helptags ../".s:dotvim."/doc" exe "silent !tar -xvf ".sname
exe "cd ".curdir elseif sname =~ '\.vba$'
endif " call Decho("dearchive: attempt to handle a vimball: ".sname)
silent 1split
exe "silent e ".sname
silent so %
silent q
endif
if sname =~ '.vim$'
" call Decho("dearchive: attempt to simply move ".sname." to plugin")
exe "silent !".g:GetLatestVimScripts_mv." ".sname." plugin"
endif
" helptags step
let docdir= substitute(&rtp,',.*','','e')."/doc"
" call Decho("helptags: docdir<".docdir.">")
exe "helptags ".docdir
exe "cd ".curdir
endif
if fname !~ ':AutoInstall:'
let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt
else
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
endif
else
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
endif endif
" update the data in the <GetLatestVimScripts.dat> file " update the data in the <GetLatestVimScripts.dat> file
let modline=scriptid." ".latestsrcid." ".cmmnt
call setline(line("."),modline) call setline(line("."),modline)
" call Decho("modline<".modline."> (updated GetLatestVimScripts.dat file)") " call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
" else " Decho
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
endif endif
" restore options " restore options
@@ -296,10 +351,9 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" GetLatestVimScripts: this function gets the latest versions of {{{1 " GetLatestVimScripts: this function gets the latest versions of {{{1
" scripts based on the list in " scripts based on the list in
"
" (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat " (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat
fun! <SID>GetLatestVimScripts() fun! getscript#GetLatestVimScripts()
" call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">") " call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">")
" insure that wget is executable " insure that wget is executable
@@ -309,30 +363,28 @@ fun! <SID>GetLatestVimScripts()
return return
endif endif
" Find the .../GetLatest sudirectory under the runtimepath " Find the .../GetLatest subdirectory under the runtimepath
let rtplist= &rtp for datadir in split(&rtp,',') + ['']
while rtplist != "" if isdirectory(datadir."/GetLatest")
let datadir= substitute(rtplist,',.*$','','e')."/GetLatest" " call Decho("found directory<".datadir.">")
if isdirectory(datadir) let datadir= datadir . "/GetLatest"
" call Decho("found directory<".datadir.">")
break break
endif endif
unlet datadir if filereadable(datadir."GetLatestVimScripts.dat")
if rtplist =~ ',' " call Decho("found ".datadir."/GetLatestVimScripts.dat")
let rtplist= substitute(rtplist,'^.\{-},','','e') break
else
let rtplist= ""
endif endif
endwhile endfor
" Sanity checks: readability and writability " Sanity checks: readability and writability
if !exists("datadir") if datadir == ""
echoerr "Unable to find a GetLatest subdirectory on your runtimepath" echoerr 'Missing "GetLatest/" on your runtimepath - see :help glvs-dist-install'
" call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory") " call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory")
return return
endif endif
if filewritable(datadir) != 2 if filewritable(datadir) != 2
echoerr "Your ".datadir." isn't writable" echoerr "(getLatestVimScripts) Your ".datadir." isn't writable"
" call Dret("GetLatestVimScripts : non-writable directory<".datadir.">") " call Dret("GetLatestVimScripts : non-writable directory<".datadir.">")
return return
endif endif
@@ -368,63 +420,84 @@ fun! <SID>GetLatestVimScripts()
" call Decho(" ") " call Decho(" ")
" call Decho("searching plugins for GetLatestVimScripts dependencies") " call Decho("searching plugins for GetLatestVimScripts dependencies")
let lastline = line("$") let lastline = line("$")
let plugins = globpath(&rtp,"plugin/*.vim") " call Decho("lastline#".lastline)
let plugins = split(globpath(&rtp,"plugin/*.vim"))
let foundscript = 0 let foundscript = 0
let firstdir= ""
" call Decho("plugins<".plugins."> lastline#".lastline) for plugin in plugins
while plugins != ""
let plugin = substitute(plugins,'\n.*$','','e') " don't process plugins in system directories
let plugins= (plugins =~ '\n')? substitute(plugins,'^.\{-}\n\(.*\)$','\1','e') : "" if firstdir == ""
let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','')
" call Decho("firstdir<".firstdir.">")
else
let curdir= substitute(plugin,'[/\\][^/\\]\+$','','')
" call Decho("curdir<".curdir.">")
if curdir != firstdir
break
endif
endif
" read plugin in
$ $
" call Decho(" ")
" call Decho(".dependency checking<".plugin."> line$=".line("$")) " call Decho(".dependency checking<".plugin."> line$=".line("$"))
exe "silent r ".plugin exe "silent r ".plugin
while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
let llp1 = lastline+1 let llp1 = lastline+1
" call Decho("..newscript<".newscript.">")
if newscript !~ '^"' " don't process ""GetLatestVimScripts lines
" found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile if newscript !~ '^"'
let curline = line(".") " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e') let curline = line(".")
exe llp1 let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e')
let srchline = search('\<'.noai_script.'\>','bW') exe llp1
" call Decho("..newscript<".newscript."> noai_script<".noai_script."> srch=".srchline." lastline=".lastline) let srchline = search('\<'.noai_script.'\>','bW')
" call Decho("..noai_script<".noai_script."> srch=".srchline."curline#".line(".")." lastline#".lastline)
if srchline == 0 if srchline == 0
" found a new script to permanently include in the datafile " found a new script to permanently include in the datafile
let keep_rega = @a let keep_rega = @a
let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
exe lastline."put a" exe lastline."put a"
echomsg "Appending <".@a."> to ".datafile." for ".newscript echomsg "Appending <".@a."> to ".datafile." for ".newscript
" call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat") " call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat")
let @a = keep_rega let @a = keep_rega
let lastline = llp1 let lastline = llp1
let curline = curline + 1 let curline = curline + 1
let foundscript = foundscript + 1 let foundscript = foundscript + 1
" else " Decho " else " Decho
" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") " call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
endif endif
let curline = curline + 1
exe curline
endif
let curline = curline + 1
exe curline
endif
endwhile endwhile
let llp1= lastline + 1 let llp1= lastline + 1
" call Decho(".deleting lines: ".llp1.",$d") " call Decho(".deleting lines: ".llp1.",$d")
exe "silent! ".llp1.",$d" exe "silent! ".llp1.",$d"
endwhile endfor
" call Decho("--- end dependency checking loop --- foundscript=".foundscript)
" call Decho(" ")
if foundscript == 0 if foundscript == 0
set nomod set nomod
endif endif
" Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
" call Decho("begin: checking out-of-date scripts using datafile<".datafile.">")
set lz set lz
" call Decho(" --- end of dependency checking loop --- ")
" call Decho("call GetOneScript on lines at end of datafile<".datafile.">")
1 1
/^-----/,$g/^\s*\d/call <SID>GetOneScript() " /^-----/,$g/^\s*\d/call Decho(getline("."))
1
/^-----/,$g/^\s*\d/call s:GetOneScript()
" call Decho("--- end out-of-date checking --- ")
" Final report (an echomsg) " Final report (an echomsg)
try try
@@ -434,6 +507,7 @@ fun! <SID>GetLatestVimScripts()
return return
endtry endtry
exe "norm! kz\<CR>" exe "norm! kz\<CR>"
redraw!
let s:msg = "" let s:msg = ""
if s:downloads == 1 if s:downloads == 1
let s:msg = "Downloaded one updated script to <".datadir.">" let s:msg = "Downloaded one updated script to <".datadir.">"
@@ -450,10 +524,9 @@ fun! <SID>GetLatestVimScripts()
echomsg s:msg echomsg s:msg
" save the file " save the file
if &mod if &mod
wq silent! w!
else
q
endif endif
q
" restore events and current directory " restore events and current directory
exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #") exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #")
@@ -464,7 +537,6 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Restore Options: {{{1 " Restore Options: {{{1
let &fo = s:keepfo
let &cpo= s:keepcpo let &cpo= s:keepcpo
" vim: ts=8 sts=2 fdm=marker nowrap " vim: ts=8 sts=2 fdm=marker nowrap

139
runtime/autoload/gnat.vim Normal file
View File

@@ -0,0 +1,139 @@
"------------------------------------------------------------------------------
" Description: Vim Ada/GNAT compiler file
" Language: Ada (GNAT)
" $Id$
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischik
" $Author$
" $Date$
" Version: 4.2
" $Revision$
" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $
" History: 24.05.2006 MK Unified Headers
" 16.07.2006 MK Ada-Mode as vim-ball
" 05.08.2006 MK Add session support
" 15.10.2006 MK Bram's suggestion for runtime integration
" 05.11.2006 MK Bram suggested not to use include protection for
" autoload
" 05.11.2006 MK Bram suggested to save on spaces
" Help Page: compiler-gnat
"------------------------------------------------------------------------------
if version < 700
finish
endif
function gnat#Make () dict " {{{1
let &l:makeprg = self.Get_Command('Make')
let &l:errorformat = self.Error_Format
wall
make
copen
set wrap
wincmd W
endfunction gnat#Make " }}}1
function gnat#Pretty () dict " {{{1
execute "!" . self.Get_Command('Pretty')
endfunction gnat#Make " }}}1
function gnat#Find () dict " {{{1
execute "!" . self.Get_Command('Find')
endfunction gnat#Find " }}}1
function gnat#Tags () dict " {{{1
execute "!" . self.Get_Command('Tags')
edit tags
call gnat#Insert_Tags_Header ()
update
quit
endfunction gnat#Tags " }}}1
function gnat#Set_Project_File (...) dict " {{{1
if a:0 > 0
let self.Project_File = a:1
if ! filereadable (self.Project_File)
let self.Project_File = findfile (
\ fnamemodify (self.Project_File, ':r'),
\ $ADA_PROJECT_PATH,
\ 1)
endif
elseif strlen (self.Project_File) > 0
let self.Project_File = browse (0, 'GNAT Project File?', '', self.Project_File)
elseif expand ("%:e") == 'gpr'
let self.Project_File = browse (0, 'GNAT Project File?', '', expand ("%:e"))
else
let self.Project_File = browse (0, 'GNAT Project File?', '', 'default.gpr')
endif
if strlen (v:this_session) > 0
execute 'mksession! ' . v:this_session
endif
if strlen (self.Project_File) > 0
call ada#Switch_Session (
\ expand('~') . "/vimfiles/session/" .
\ fnamemodify (self.Project_File, ":t:r") . ".vim")
else
call ada#Switch_Session ('')
endif
return
endfunction gnat#Set_Project_File " }}}1
function gnat#Get_Command (Command) dict " {{{1
let l:Command = eval ('self.' . a:Command . '_Command')
return eval (l:Command)
endfunction gnat#Get_Command " }}}1
function gnat#Set_Session (...) dict " {{{1
if argc() == 1 && fnamemodify (argv(0), ':e') == 'gpr'
call self.Set_Project_File (argv(0))
elseif strlen (v:servername) > 0
call self.Set_Project_File (v:servername . '.gpr')
endif
endfunction gnat#Set_Session " }}}1
function gnat#New () " {{{1
let l:Retval = {
\ 'Make' : function ('gnat#Make'),
\ 'Pretty' : function ('gnat#Pretty'),
\ 'Find' : function ('gnat#Find'),
\ 'Tags' : function ('gnat#Tags'),
\ 'Set_Project_File' : function ('gnat#Set_Project_File'),
\ 'Set_Session' : function ('gnat#Set_Session'),
\ 'Get_Command' : function ('gnat#Get_Command'),
\ 'Project_File' : '',
\ 'Make_Command' : '"gnat make -P " . self.Project_File . " -F -gnatef "',
\ 'Pretty_Command' : '"gnat pretty -P " . self.Project_File . " "',
\ 'Find_Program' : '"gnat find -P " . self.Project_File . " -F "',
\ 'Tags_Command' : '"gnat xref -P " . self.Project_File . " -v *.AD*"',
\ 'Error_Format' : '%f:%l:%c: %trror: %m,' .
\ '%f:%l:%c: %tarning: %m,' .
\ '%f:%l:%c: (%ttyle) %m'}
return l:Retval
endfunction gnat#New " }}}1
function gnat#Insert_Tags_Header () " {{{1
1insert
!_TAG_FILE_FORMAT 1 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR AdaCore /info@adacore.com/
!_TAG_PROGRAM_NAME gnatxref //
!_TAG_PROGRAM_URL http://www.adacore.com /official site/
!_TAG_PROGRAM_VERSION 5.05w //
.
return
endfunction gnat#Insert_Tags_Header " }}}1
finish " 1}}}
"------------------------------------------------------------------------------
" Copyright (C) 2006 Martin Krischik
"
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
"------------------------------------------------------------------------------
" vim: textwidth=0 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker

View File

@@ -1,6 +1,6 @@
" Vim autoload file for editing compressed files. " Vim autoload file for editing compressed files.
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Mar 31 " Last Change: 2007 May 10
" These functions are used by the gzip plugin. " These functions are used by the gzip plugin.
@@ -63,53 +63,67 @@ fun gzip#read(cmd)
" set 'modifiable' " set 'modifiable'
let ma_save = &ma let ma_save = &ma
setlocal ma setlocal ma
" Reset 'foldenable', otherwise line numbers get adjusted.
if has("folding")
let fen_save = &fen
setlocal nofen
endif
" when filtering the whole buffer, it will become empty " when filtering the whole buffer, it will become empty
let empty = line("'[") == 1 && line("']") == line("$") let empty = line("'[") == 1 && line("']") == line("$")
let tmp = tempname() let tmp = tempname()
let tmpe = tmp . "." . expand("<afile>:e") let tmpe = tmp . "." . expand("<afile>:e")
" write the just read lines to a temp file "'[,']w tmp.gz" " write the just read lines to a temp file "'[,']w tmp.gz"
execute "silent '[,']w " . tmpe execute "silent '[,']w " . escape(tmpe, ' ')
" uncompress the temp file: call system("gzip -dn tmp.gz") " uncompress the temp file: call system("gzip -dn tmp.gz")
call system(a:cmd . " " . tmpe) call system(a:cmd . " " . s:escape(tmpe))
if !filereadable(tmp) if !filereadable(tmp)
" uncompress didn't work! Keep the compressed file then. " uncompress didn't work! Keep the compressed file then.
echoerr "Error: Could not read uncompressed file" echoerr "Error: Could not read uncompressed file"
return let ok = 0
endif
" delete the compressed lines; remember the line number
let l = line("'[") - 1
if exists(":lockmarks")
lockmarks '[,']d _
else else
'[,']d _ let ok = 1
endif " delete the compressed lines; remember the line number
" read in the uncompressed lines "'[-1r tmp" let l = line("'[") - 1
" Use ++edit if the buffer was empty, keep the 'ff' and 'fenc' options. if exists(":lockmarks")
setlocal nobin lockmarks '[,']d _
if exists(":lockmarks")
if empty
execute "silent lockmarks " . l . "r ++edit " . tmp
else else
execute "silent lockmarks " . l . "r " . tmp '[,']d _
endif endif
else " read in the uncompressed lines "'[-1r tmp"
execute "silent " . l . "r " . tmp " Use ++edit if the buffer was empty, keep the 'ff' and 'fenc' options.
setlocal nobin
if exists(":lockmarks")
if empty
execute "silent lockmarks " . l . "r ++edit " . tmp
else
execute "silent lockmarks " . l . "r " . tmp
endif
else
execute "silent " . l . "r " . tmp
endif
" if buffer became empty, delete trailing blank line
if empty
silent $delete _
1
endif
" delete the temp file and the used buffers
call delete(tmp)
silent! exe "bwipe " . tmp
silent! exe "bwipe " . tmpe
endif endif
" if buffer became empty, delete trailing blank line " Restore saved option values.
if empty
silent $delete _
1
endif
" delete the temp file and the used buffers
call delete(tmp)
silent! exe "bwipe " . tmp
silent! exe "bwipe " . tmpe
let &pm = pm_save let &pm = pm_save
let &cpo = cpo_save let &cpo = cpo_save
let &l:ma = ma_save let &l:ma = ma_save
if has("folding")
let &l:fen = fen_save
endif
" When uncompressed the whole buffer, do autocommands " When uncompressed the whole buffer, do autocommands
if empty if ok && empty
if &verbose >= 8 if &verbose >= 8
execute "doau BufReadPost " . expand("%:r") execute "doau BufReadPost " . expand("%:r")
else else
@@ -127,9 +141,9 @@ fun gzip#write(cmd)
let nmt = s:tempname(nm) let nmt = s:tempname(nm)
if rename(nm, nmt) == 0 if rename(nm, nmt) == 0
if exists("b:gzip_comp_arg") if exists("b:gzip_comp_arg")
call system(a:cmd . " " . b:gzip_comp_arg . " " . nmt) call system(a:cmd . " " . b:gzip_comp_arg . " " . s:escape(nmt))
else else
call system(a:cmd . " " . nmt) call system(a:cmd . " " . s:escape(nmt))
endif endif
call rename(nmt . "." . expand("<afile>:e"), nm) call rename(nmt . "." . expand("<afile>:e"), nm)
endif endif
@@ -154,10 +168,10 @@ fun gzip#appre(cmd)
if rename(nm, nmte) == 0 if rename(nm, nmte) == 0
if &patchmode != "" && getfsize(nm . &patchmode) == -1 if &patchmode != "" && getfsize(nm . &patchmode) == -1
" Create patchmode file by creating the decompressed file new " Create patchmode file by creating the decompressed file new
call system(a:cmd . " -c " . nmte . " > " . nmt) call system(a:cmd . " -c " . s:escape(nmte) . " > " . s:escape(nmt))
call rename(nmte, nm . &patchmode) call rename(nmte, nm . &patchmode)
else else
call system(a:cmd . " " . nmte) call system(a:cmd . " " . s:escape(nmte))
endif endif
call rename(nmt, nm) call rename(nmt, nm)
endif endif
@@ -175,4 +189,12 @@ fun s:tempname(name)
return fnamemodify(a:name, ":p:h") . "/X~=@l9q5" return fnamemodify(a:name, ":p:h") . "/X~=@l9q5"
endfun endfun
fun s:escape(name)
" shellescape() was added by patch 7.0.111
if exists("*shellescape")
return shellescape(a:name)
endif
return "'" . a:name . "'"
endfun
" vim: set sw=2 : " vim: set sw=2 :

View File

@@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: HTML and XHTML " Language: HTML and XHTML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Apr 30 " Last Change: 2006 Oct 19
function! htmlcomplete#CompleteTags(findstart, base) function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart if a:findstart
@@ -84,7 +84,7 @@ function! htmlcomplete#CompleteTags(findstart, base)
let context_line = getline(curline-i) let context_line = getline(curline-i)
if context_line =~ '<[^>]*$' if context_line =~ '<[^>]*$'
" Yep, this is this line " Yep, this is this line
let context_lines = getline(curline-i, curline) let context_lines = getline(curline-i, curline-1) + [b:compl_context]
let b:compl_context = join(context_lines, ' ') let b:compl_context = join(context_lines, ' ')
break break
elseif context_line =~ '>[^<]*$' || i == curline elseif context_line =~ '>[^<]*$' || i == curline
@@ -448,6 +448,15 @@ function! htmlcomplete#CompleteTags(findstart, base)
let attrname = matchstr(attr, '.*\ze\s*=') let attrname = matchstr(attr, '.*\ze\s*=')
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*") let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
let values = [] let values = []
" Load data {{{
if !exists("b:html_doctype")
call htmlcomplete#CheckDoctype()
endif
if !exists("b:html_omni")
"runtime! autoload/xml/xhtml10s.vim
call htmlcomplete#LoadData()
endif
" }}}
if attrname == 'href' if attrname == 'href'
" Now we are looking for local anchors defined by name or id " Now we are looking for local anchors defined by name or id
if entered_value =~ '^#' if entered_value =~ '^#'
@@ -604,21 +613,20 @@ function! htmlcomplete#CompleteTags(findstart, base)
if exists("uppercase_tag") && uppercase_tag == 1 if exists("uppercase_tag") && uppercase_tag == 1
let context = tolower(context) let context = tolower(context)
endif endif
" Handle XML keywords: DOCTYPE and CDATA. " Handle XML keywords: DOCTYPE
if opentag == '' if opentag == ''
let tags += [ let tags += [
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/1999/xhtml">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/1999/xhtml">'
\ '!CDATA'
\ ] \ ]
endif endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
" netrwFileHandlers: contains various extension-based file handlers for " netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher") " netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: May 01, 2006 " Date: May 30, 2006
" Version: 8 " Version: 9
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code, " Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright " with or without modifications, provided that this copyright
@@ -22,16 +22,41 @@ if exists("g:loaded_netrwFileHandlers") || &cp
endif endif
let s:keepcpo= &cpo let s:keepcpo= &cpo
set cpo&vim set cpo&vim
let g:loaded_netrwFileHandlers= "v8" let g:loaded_netrwFileHandlers= "v9"
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" netrwFileHandlers#Invoke: {{{1 " netrwFileHandlers#Invoke: {{{1
fun! netrwFileHandlers#Invoke(exten,fname) fun! netrwFileHandlers#Invoke(exten,fname)
" call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)") " call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)")
let fname= a:fname
" list of supported special characters. Consider rcs,v --- that can be
" supported with a NFH_rcsCOMMAv() handler
if a:fname =~ '[@:,$!=\-+%?;~]'
let specials= {
\ '@' : 'AT',
\ ':' : 'COLON',
\ ',' : 'COMMA',
\ '$' : 'DOLLAR',
\ '!' : 'EXCLAMATION',
\ '=' : 'EQUAL',
\ '-' : 'MINUS',
\ '+' : 'PLUS',
\ '%' : 'PERCENT',
\ '?' : 'QUESTION',
\ ';' : 'SEMICOLON',
\ '~' : 'TILDE'}
let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge')
" call Decho('fname<'.fname.'> done with dictionary')
endif
if a:exten != "" && exists("*s:NFH_".a:exten) if a:exten != "" && exists("*NFH_".a:exten)
" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.a:fname.'")') " support user NFH_*() functions
exe "let ret= s:NFH_".a:exten.'("'.a:fname.'")' " call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
exe "let ret= NFH_".a:exten.'("'.fname.'")'
elseif a:exten != "" && exists("*s:NFH_".a:exten)
" use builtin-NFH_*() functions
" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
exe "let ret= s:NFH_".a:exten.'("'.fname.'")'
endif endif
" call Dret("netrwFileHandlers#Invoke 0 : ret=".ret) " call Dret("netrwFileHandlers#Invoke 0 : ret=".ret)
@@ -48,10 +73,10 @@ fun! s:NFH_html(pagefile)
if executable("mozilla") if executable("mozilla")
" call Decho("executing !mozilla ".page) " call Decho("executing !mozilla ".page)
exe "!mozilla \"".page.'"' exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
elseif executable("netscape") elseif executable("netscape")
" call Decho("executing !netscape ".page) " call Decho("executing !netscape ".page)
exe "!netscape \"".page.'"' exe "!netscape ".g:netrw_shq..page.g:netrw_shq
else else
" call Dret("s:NFH_html 0") " call Dret("s:NFH_html 0")
return 0 return 0
@@ -71,10 +96,10 @@ fun! s:NFH_htm(pagefile)
if executable("mozilla") if executable("mozilla")
" call Decho("executing !mozilla ".page) " call Decho("executing !mozilla ".page)
exe "!mozilla \"".page.'"' exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
elseif executable("netscape") elseif executable("netscape")
" call Decho("executing !netscape ".page) " call Decho("executing !netscape ".page)
exe "!netscape \"".page.'"' exe "!netscape ".g:netrw_shq.page.g:netrw_shq
else else
" call Dret("s:NFH_htm 0") " call Dret("s:NFH_htm 0")
return 0 return 0
@@ -90,10 +115,10 @@ fun! s:NFH_jpg(jpgfile)
" call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)") " call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)")
if executable("gimp") if executable("gimp")
exe "silent! !gimp -s ".a:jpgfile exe "silent! !gimp -s ".g:netrw_shq.a:jpgfile.g:netrw_shq
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'")) " call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"' exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:jpgfile.g:netrw_shq
else else
" call Dret("s:NFH_jpg 0") " call Dret("s:NFH_jpg 0")
return 0 return 0
@@ -109,9 +134,9 @@ fun! s:NFH_gif(giffile)
" call Dfunc("s:NFH_gif(giffile<".a:giffile.">)") " call Dfunc("s:NFH_gif(giffile<".a:giffile.">)")
if executable("gimp") if executable("gimp")
exe "silent! !gimp -s ".a:giffile exe "silent! !gimp -s ".g:netrw_shq.a:giffile.g:netrw_shq
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"' exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:giffile.g:netrw_shq
else else
" call Dret("s:NFH_gif 0") " call Dret("s:NFH_gif 0")
return 0 return 0
@@ -127,9 +152,9 @@ fun! s:NFH_png(pngfile)
" call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)") " call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)")
if executable("gimp") if executable("gimp")
exe "silent! !gimp -s ".a:pngfile exe "silent! !gimp -s ".g:netrw_shq.a:pngfile.g:netrw_shq
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"' exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pngfile.g:netrw_shq
else else
" call Dret("s:NFH_png 0") " call Dret("s:NFH_png 0")
return 0 return 0
@@ -145,9 +170,9 @@ fun! s:NFH_pnm(pnmfile)
" call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)") " call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)")
if executable("gimp") if executable("gimp")
exe "silent! !gimp -s ".a:pnmfile exe "silent! !gimp -s ".g:netrw_shq.a:pnmfile.g:netrw_shq
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"' exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pnmfile.g:netrw_shq
else else
" call Dret("s:NFH_pnm 0") " call Dret("s:NFH_pnm 0")
return 0 return 0
@@ -165,7 +190,7 @@ fun! s:NFH_bmp(bmpfile)
if executable("gimp") if executable("gimp")
exe "silent! !gimp -s ".a:bmpfile exe "silent! !gimp -s ".a:bmpfile
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"' exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:bmpfile.g:netrw_shq
else else
" call Dret("s:NFH_bmp 0") " call Dret("s:NFH_bmp 0")
return 0 return 0
@@ -180,7 +205,9 @@ endfun
fun! s:NFH_pdf(pdf) fun! s:NFH_pdf(pdf)
" call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)") " call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)")
if executable("gs") if executable("gs")
exe 'silent! !gs "'.a:pdf.'"' exe 'silent! !gs '.g:netrw_shq.a:pdf.g:netrw_shq
elseif executable("pdftotext")
exe 'silent! pdftotext -nopgbrk '.g:netrw_shq.a:pdf.g:netrw_shq
else else
" call Dret("s:NFH_pdf 0") " call Dret("s:NFH_pdf 0")
return 0 return 0
@@ -196,7 +223,7 @@ fun! s:NFH_doc(doc)
" call Dfunc("s:NFH_doc(doc<".a:doc.">)") " call Dfunc("s:NFH_doc(doc<".a:doc.">)")
if executable("oowriter") if executable("oowriter")
exe 'silent! !oowriter "'.a:doc.'"' exe 'silent! !oowriter '.g:netrw_shq.a:doc.g:netrw_shq
redraw! redraw!
else else
" call Dret("s:NFH_doc 0") " call Dret("s:NFH_doc 0")
@@ -213,7 +240,7 @@ fun! s:NFH_sxw(sxw)
" call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)") " call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)")
if executable("oowriter") if executable("oowriter")
exe 'silent! !oowriter "'.a:sxw.'"' exe 'silent! !oowriter '.g:netrw_shq.a:sxw.g:netrw_shq
redraw! redraw!
else else
" call Dret("s:NFH_sxw 0") " call Dret("s:NFH_sxw 0")
@@ -230,7 +257,7 @@ fun! s:NFH_xls(xls)
" call Dfunc("s:NFH_xls(xls<".a:xls.">)") " call Dfunc("s:NFH_xls(xls<".a:xls.">)")
if executable("oocalc") if executable("oocalc")
exe 'silent! !oocalc "'.a:xls.'"' exe 'silent! !oocalc '.g:netrw_shq.a:xls.g:netrw_shq
redraw! redraw!
else else
" call Dret("s:NFH_xls 0") " call Dret("s:NFH_xls 0")
@@ -247,15 +274,15 @@ fun! s:NFH_ps(ps)
" call Dfunc("s:NFH_ps(ps<".a:ps.">)") " call Dfunc("s:NFH_ps(ps<".a:ps.">)")
if executable("gs") if executable("gs")
" call Decho("exe silent! !gs ".a:ps) " call Decho("exe silent! !gs ".a:ps)
exe "silent! !gs ".a:ps exe "silent! !gs ".g:netrw_shq.a:ps.g:netrw_shq
redraw! redraw!
elseif executable("ghostscript") elseif executable("ghostscript")
" call Decho("exe silent! !ghostscript ".a:ps) " call Decho("exe silent! !ghostscript ".a:ps)
exe "silent! !ghostscript ".a:ps exe "silent! !ghostscript ".g:netrw_shq.a:ps.g:netrw_shq
redraw! redraw!
elseif executable("gswin32") elseif executable("gswin32")
" call Decho("exe silent! !gswin32 \"".a:ps.'"') " call Decho("exe silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq)
exe "silent! !gswin32 \"".a:ps.'"' exe "silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq
redraw! redraw!
else else
" call Dret("s:NFH_ps 0") " call Dret("s:NFH_ps 0")
@@ -271,16 +298,16 @@ endfun
fun! s:NFH_eps(eps) fun! s:NFH_eps(eps)
" call Dfunc("s:NFH_eps()") " call Dfunc("s:NFH_eps()")
if executable("gs") if executable("gs")
exe "silent! !gs ".a:eps exe "silent! !gs ".g:netrw_shq.a:eps.g:netrw_shq
redraw! redraw!
elseif executable("ghostscript") elseif executable("ghostscript")
exe "silent! !ghostscript ".a:eps exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
redraw! redraw!
elseif executable("ghostscript") elseif executable("ghostscript")
exe "silent! !ghostscript ".a:eps exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
redraw! redraw!
elseif executable("gswin32") elseif executable("gswin32")
exe "silent! !gswin32 \"".a:eps.'"' exe "silent! !gswin32 ".g:netrw_shq.a:eps.g:netrw_shq
redraw! redraw!
else else
" call Dret("s:NFH_eps 0") " call Dret("s:NFH_eps 0")
@@ -325,4 +352,4 @@ endfun
let &cpo= s:keepcpo let &cpo= s:keepcpo
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Modelines: {{{1 " Modelines: {{{1
" vim: ts=4 fdm=marker " vim: fdm=marker

View File

@@ -1,8 +1,8 @@
" netrwSettings.vim: makes netrw settings simpler " netrwSettings.vim: makes netrw settings simpler
" Date: Mar 22, 2006 " Date: Mar 26, 2007
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 6 " Version: 9
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code, " Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright " with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free, " notice is copied with it. Like anything else that's free,
@@ -19,7 +19,7 @@
if exists("g:loaded_netrwSettings") || &cp if exists("g:loaded_netrwSettings") || &cp
finish finish
endif endif
let g:loaded_netrwSettings = "v6" let g:loaded_netrwSettings = "v9"
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" NetrwSettings: {{{1 " NetrwSettings: {{{1
@@ -39,8 +39,8 @@ fun! netrwSettings#NetrwSettings()
" these variables have the following default effects when they don't " these variables have the following default effects when they don't
" exist (ie. have not been set by the user in his/her .vimrc) " exist (ie. have not been set by the user in his/her .vimrc)
if !exists("g:netrw_longlist") if !exists("g:netrw_liststyle")
let g:netrw_longlist= 0 let g:netrw_liststyle= 0
let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa" let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
endif endif
if !exists("g:netrw_silent") if !exists("g:netrw_silent")
@@ -81,9 +81,15 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_ftp = '.g:netrw_ftp put = 'let g:netrw_ftp = '.g:netrw_ftp
put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode
put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc
put = 'let g:netrw_sshport = '.g:netrw_sshport
let shqline= line("$")
put = 'let g:netrw_shq...'
put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp
put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp
let s:netrw_xfer_stop= line(".") let s:netrw_xfer_stop= line(".")
put =''
put ='+ Netrw Messages'
put ='let g:netrw_use_errorwindow = '.g:netrw_use_errorwindow
put = '' put = ''
put ='+ Netrw Browser Control' put ='+ Netrw Browser Control'
@@ -99,14 +105,17 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_fastbrowse = '.g:netrw_fastbrowse put = 'let g:netrw_fastbrowse = '.g:netrw_fastbrowse
put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd
put = 'let g:netrw_ftp_sizelist_cmd = '.g:netrw_ftp_sizelist_cmd
put = 'let g:netrw_ftp_timelist_cmd = '.g:netrw_ftp_timelist_cmd
put = 'let g:netrw_hide = '.g:netrw_hide put = 'let g:netrw_hide = '.g:netrw_hide
put = 'let g:netrw_keepdir = '.g:netrw_keepdir put = 'let g:netrw_keepdir = '.g:netrw_keepdir
put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd
put = 'let g:netrw_list_hide = '.g:netrw_list_hide put = 'let g:netrw_list_hide = '.g:netrw_list_hide
put = 'let g:netrw_local_mkdir = '.g:netrw_local_mkdir put = 'let g:netrw_local_mkdir = '.g:netrw_local_mkdir
put = 'let g:netrw_local_rmdir = '.g:netrw_local_rmdir put = 'let g:netrw_local_rmdir = '.g:netrw_local_rmdir
put = 'let g:netrw_longlist = '.g:netrw_longlist put = 'let g:netrw_liststyle = '.g:netrw_liststyle
put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen
put = 'let g:netrw_menu = '.g:netrw_menu
put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd
put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd
put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd
@@ -117,11 +126,14 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction
put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence
put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
put = 'let g:netrw_scpport = '.g:netrw_scpport
put = 'let g:netrw_sshport = '.g:netrw_sshport
put = 'let g:netrw_timefmt = '.g:netrw_timefmt put = 'let g:netrw_timefmt = '.g:netrw_timefmt
put = 'let g:netrw_use_noswf = '.g:netrw_use_noswf
put = 'let g:netrw_winsize = '.g:netrw_winsize put = 'let g:netrw_winsize = '.g:netrw_winsize
put ='' put =''
put ='+ For help, place cursor on line and press ?' put ='+ For help, place cursor on line and press <F1>'
1d 1d
silent %s/^+/"/e silent %s/^+/"/e
@@ -130,9 +142,18 @@ fun! netrwSettings#NetrwSettings()
silent %s/= $/= ''/e silent %s/= $/= ''/e
1 1
" Put in shq setting.
" (deferred so as to avoid the quote manipulation just preceding)
if g:netrw_shq == "'"
call setline(shqline,'let g:netrw_shq = "'.g:netrw_shq.'"')
else
call setline(shqline,"let g:netrw_shq = '".g:netrw_shq."'")
endif
set nomod set nomod
map <buffer> <silent> <F1> :call NetrwSettingHelp()<cr> nmap <buffer> <silent> <F1> :call NetrwSettingHelp()<cr>
nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call NetrwSettingHelp()<cr>
let tmpfile= tempname() let tmpfile= tempname()
exe 'au BufWriteCmd Netrw\ Settings silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod' exe 'au BufWriteCmd Netrw\ Settings silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
endfun endfun

View File

@@ -1,6 +1,6 @@
" Vim support file to help with paste mappings and menus " Vim support file to help with paste mappings and menus
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Apr 21 " Last Change: 2006 Jun 23
" Define the string to use for items that are present both in Edit, Popup and " Define the string to use for items that are present both in Edit, Popup and
" Toolbar menu. Also used in mswin.vim and macmap.vim. " Toolbar menu. Also used in mswin.vim and macmap.vim.
@@ -12,7 +12,7 @@
if has("virtualedit") if has("virtualedit")
let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"} let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"}
let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n'] let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n']
let paste#paste_cmd['i'] = '<Esc>' . paste#paste_cmd['n'] . 'gi' let paste#paste_cmd['i'] = 'x<BS><Esc>' . paste#paste_cmd['n'] . 'gi'
func! paste#Paste() func! paste#Paste()
let ove = &ve let ove = &ve

View File

@@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: PHP " Language: PHP
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Apr 30 " Last Change: 2006 May 9
" "
" TODO: " TODO:
" - Class aware completion: " - Class aware completion:
@@ -74,7 +74,7 @@ function! phpcomplete#CompletePHP(findstart, base)
let file = getline(1, '$') let file = getline(1, '$')
call filter(file, call filter(file,
\ 'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') \ 'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
let jfile = join(file, ' ') let jfile = join(file, ' ')
let int_values = split(jfile, 'class\s\+') let int_values = split(jfile, 'class\s\+')
let int_classes = {} let int_classes = {}
@@ -85,33 +85,43 @@ function! phpcomplete#CompletePHP(findstart, base)
endif endif
endfor endfor
" Prepare list of functions from tags file " Prepare list of classes from tags file
let ext_classes = {} let ext_classes = {}
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
if fnames != '' if fnames != ''
exe 'silent! vimgrep /^'.a:base.'.*\tc\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.a:base.'.*\tc\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
for field in qflist if len(qflist) > 0
" [:space:] thing: we don't have to be so strict when for field in qflist
" dealing with tags files - entries there were already " [:space:] thing: we don't have to be so strict when
" checked by ctags. " dealing with tags files - entries there were already
let item = matchstr(field['text'], '^[^[:space:]]\+') " checked by ctags.
let ext_classes[item] = '' let item = matchstr(field['text'], '^[^[:space:]]\+')
let ext_classes[item] = ''
endfor
endif
endif
" Prepare list of built in classes from g:php_builtin_functions
if !exists("g:php_omni_bi_classes")
let g:php_omni_bi_classes = {}
for i in keys(g:php_builtin_object_functions)
let g:php_omni_bi_classes[substitute(i, '::.*$', '', '')] = ''
endfor endfor
endif endif
call extend(int_classes, ext_classes) let classes = sort(keys(int_classes))
let classes += sort(keys(ext_classes))
let classes += sort(keys(g:php_omni_bi_classes))
for m in sort(keys(int_classes)) for m in classes
if m =~ '^'.a:base if m =~ '^'.a:base
call add(res, m) call add(res, m)
endif endif
endfor endfor
let int_list = res
let final_menu = [] let final_menu = []
for i in int_list for i in res
let final_menu += [{'word':i, 'kind':'c'}] let final_menu += [{'word':i, 'kind':'c'}]
endfor endfor
@@ -138,6 +148,19 @@ function! phpcomplete#CompletePHP(findstart, base)
let classlocation = '' let classlocation = ''
endif endif
if classlocation == 'VIMPHP_BUILTINOBJECT'
for object in keys(g:php_builtin_object_functions)
if object =~ '^'.classname
let res += [{'word':substitute(object, '.*::', '', ''),
\ 'info': g:php_builtin_object_functions[object]}]
endif
endfor
return res
endif
if filereadable(classlocation) if filereadable(classlocation)
let classfile = readfile(classlocation) let classfile = readfile(classlocation)
let classcontent = '' let classcontent = ''
@@ -154,7 +177,7 @@ function! phpcomplete#CompletePHP(findstart, base)
" Functions declared with public keyword or without any " Functions declared with public keyword or without any
" keyword are public " keyword are public
let functions = filter(deepcopy(sccontent), let functions = filter(deepcopy(sccontent),
\ 'v:val =~ "^\\s*\\(public\\s\\*\\)\\?function"') \ 'v:val =~ "^\\s*\\(static\\s\\+\\|public\\s\\+\\)*function"')
let jfuncs = join(functions, ' ') let jfuncs = join(functions, ' ')
let sfuncs = split(jfuncs, 'function\s\+') let sfuncs = split(jfuncs, 'function\s\+')
let c_functions = {} let c_functions = {}
@@ -185,7 +208,6 @@ function! phpcomplete#CompletePHP(findstart, base)
let all_values = {} let all_values = {}
call extend(all_values, c_functions) call extend(all_values, c_functions)
call extend(all_values, c_variables) call extend(all_values, c_variables)
call extend(all_values, g:php_builtin_object_functions)
for m in sort(keys(all_values)) for m in sort(keys(all_values))
if m =~ '^'.a:base && m !~ '::' if m =~ '^'.a:base && m !~ '::'
@@ -244,23 +266,25 @@ function! phpcomplete#CompletePHP(findstart, base)
" ctags has good support for PHP, use tags file for external " ctags has good support for PHP, use tags file for external
" variables " variables
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
let ext_vars = {} let ext_vars = {}
if fnames != '' if fnames != ''
let sbase = substitute(a:base, '^\$', '', '') let sbase = substitute(a:base, '^\$', '', '')
exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
for field in qflist if len(qflist) > 0
let item = matchstr(field['text'], '^[^[:space:]]\+') for field in qflist
" Add -> if it is possible object declaration let item = matchstr(field['text'], '^[^[:space:]]\+')
let classname = '' " Add -> if it is possible object declaration
if field['text'] =~ item.'\s*=\s*new\s\+' let classname = ''
let item = item.'->' if field['text'] =~ item.'\s*=\s*new\s\+'
let classname = matchstr(field['text'], let item = item.'->'
\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') let classname = matchstr(field['text'],
endif \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
let ext_vars[adddollar.item] = classname endif
endfor let ext_vars[adddollar.item] = classname
endfor
endif
endif endif
" Now we have all variables in int_vars dictionary " Now we have all variables in int_vars dictionary
@@ -270,7 +294,7 @@ function! phpcomplete#CompletePHP(findstart, base)
let file = getline(1, '$') let file = getline(1, '$')
call filter(file, call filter(file,
\ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
let jfile = join(file, ' ') let jfile = join(file, ' ')
let int_values = split(jfile, 'function\s\+') let int_values = split(jfile, 'function\s\+')
let int_functions = {} let int_functions = {}
@@ -287,14 +311,16 @@ function! phpcomplete#CompletePHP(findstart, base)
if fnames != '' if fnames != ''
exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
for field in qflist if len(qflist) > 0
" File name for field in qflist
let item = matchstr(field['text'], '^[^[:space:]]\+') " File name
let fname = matchstr(field['text'], '\t\zs\f\+\ze') let item = matchstr(field['text'], '^[^[:space:]]\+')
let prototype = matchstr(field['text'], let fname = matchstr(field['text'], '\t\zs\f\+\ze')
\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') let prototype = matchstr(field['text'],
let ext_functions[item.'('] = prototype.') - '.fname \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
endfor let ext_functions[item.'('] = prototype.') - '.fname
endfor
endif
endif endif
let all_values = {} let all_values = {}
@@ -375,23 +401,25 @@ function! phpcomplete#CompletePHP(findstart, base)
call extend(int_vars,g:php_builtin_vars) call extend(int_vars,g:php_builtin_vars)
" ctags has support for PHP, use tags file for external variables " ctags has support for PHP, use tags file for external variables
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
let ext_vars = {} let ext_vars = {}
if fnames != '' if fnames != ''
let sbase = substitute(a:base, '^\$', '', '') let sbase = substitute(a:base, '^\$', '', '')
exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
for field in qflist if len(qflist) > 0
let item = '$'.matchstr(field['text'], '^[^[:space:]]\+') for field in qflist
let m_menu = '' let item = '$'.matchstr(field['text'], '^[^[:space:]]\+')
" Add -> if it is possible object declaration let m_menu = ''
if field['text'] =~ item.'\s*=\s*new\s\+' " Add -> if it is possible object declaration
let item = item.'->' if field['text'] =~ item.'\s*=\s*new\s\+'
let m_menu = matchstr(field['text'], let item = item.'->'
\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') let m_menu = matchstr(field['text'],
endif \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
let ext_vars[item] = m_menu endif
endfor let ext_vars[item] = m_menu
endfor
endif
endif endif
call extend(int_vars, ext_vars) call extend(int_vars, ext_vars)
@@ -433,7 +461,7 @@ function! phpcomplete#CompletePHP(findstart, base)
let file = getline(1, '$') let file = getline(1, '$')
call filter(file, call filter(file,
\ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
let jfile = join(file, ' ') let jfile = join(file, ' ')
let int_values = split(jfile, 'function\s\+') let int_values = split(jfile, 'function\s\+')
let int_functions = {} let int_functions = {}
@@ -450,14 +478,16 @@ function! phpcomplete#CompletePHP(findstart, base)
if fnames != '' if fnames != ''
exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
for field in qflist if len(qflist) > 0
" File name for field in qflist
let item = matchstr(field['text'], '^[^[:space:]]\+') " File name
let fname = matchstr(field['text'], '\t\zs\f\+\ze') let item = matchstr(field['text'], '^[^[:space:]]\+')
let prototype = matchstr(field['text'], let fname = matchstr(field['text'], '\t\zs\f\+\ze')
\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') let prototype = matchstr(field['text'],
let ext_functions[item.'('] = prototype.') - '.fname \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
endfor let ext_functions[item.'('] = prototype.') - '.fname
endfor
endif
endif endif
" All functions " All functions
@@ -480,15 +510,17 @@ function! phpcomplete#CompletePHP(findstart, base)
endfor endfor
" Prepare list of constants from tags file " Prepare list of constants from tags file
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
let ext_constants = {} let ext_constants = {}
if fnames != '' if fnames != ''
exe 'silent! vimgrep /^'.a:base.'.*\td\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.a:base.'.*\td\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
for field in qflist if len(qflist) > 0
let item = matchstr(field['text'], '^[^[:space:]]\+') for field in qflist
let ext_constants[item] = '' let item = matchstr(field['text'], '^[^[:space:]]\+')
endfor let ext_constants[item] = ''
endfor
endif
endif endif
" All constants " All constants
@@ -558,7 +590,7 @@ function! phpcomplete#GetClassName(scontext) " {{{
endwhile endwhile
" OK, first way failed, now check tags file(s) " OK, first way failed, now check tags file(s)
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")')) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
exe 'silent! vimgrep /^'.object.'.*\$'.object.'.*=\s*new\s\+.*\tv\(\t\|$\)/j '.fnames exe 'silent! vimgrep /^'.object.'.*\$'.object.'.*=\s*new\s\+.*\tv\(\t\|$\)/j '.fnames
let qflist = getqflist() let qflist = getqflist()
if len(qflist) == 0 if len(qflist) == 0
@@ -573,6 +605,17 @@ function! phpcomplete#GetClassName(scontext) " {{{
endfunction endfunction
" }}} " }}}
function! phpcomplete#GetClassLocation(classname) " {{{ function! phpcomplete#GetClassLocation(classname) " {{{
" Check classname may be name of built in object
if !exists("g:php_omni_bi_classes")
let g:php_omni_bi_classes = {}
for i in keys(g:php_builtin_object_functions)
let g:php_omni_bi_classes[substitute(i, '::.*$', '', '')] = ''
endfor
endif
if has_key(g:php_omni_bi_classes, a:classname)
return 'VIMPHP_BUILTINOBJECT'
endif
" Get class location " Get class location
for fname in tagfiles() for fname in tagfiles()
let fhead = fnamemodify(fname, ":h") let fhead = fnamemodify(fname, ":h")
@@ -583,8 +626,12 @@ function! phpcomplete#GetClassLocation(classname) " {{{
let fname = escape(fname, " \\") let fname = escape(fname, " \\")
exe 'silent! vimgrep /^'.a:classname.'.*\tc\(\t\|$\)/j '.fname exe 'silent! vimgrep /^'.a:classname.'.*\tc\(\t\|$\)/j '.fname
let qflist = getqflist() let qflist = getqflist()
" As in GetClassName we can manage only one element " As in GetClassName we can manage only one element if it exists
let classlocation = matchstr(qflist[0]['text'], '\t\zs\f\+\ze\t') if len(qflist) > 0
let classlocation = matchstr(qflist[0]['text'], '\t\zs\f\+\ze\t')
else
return ''
endif
" And only one class location " And only one class location
if classlocation != '' if classlocation != ''
let classlocation = fhead.classlocation let classlocation = fhead.classlocation
@@ -614,6 +661,7 @@ function! phpcomplete#GetClassContents(file, name) " {{{
else else
let extends_class = '' let extends_class = ''
endif endif
call search('{')
normal! % normal! %
let classc = getline(cfline, ".") let classc = getline(cfline, ".")
let classcontent = join(classc, "\n") let classcontent = join(classc, "\n")

View File

@@ -1,16 +1,34 @@
"pythoncomplete.vim - Omni Completion for python "pythoncomplete.vim - Omni Completion for python
" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com> " Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.5 " Version: 0.7
" Last Updated: 19 April 2006 " Last Updated: 19 Oct 2006
"
" Yeah, I skipped a version number - 0.4 was never public.
" It was a bugfix version on top of 0.3. This is a complete
" rewrite.
" "
" Changes
" TODO: " TODO:
" User defined docstrings aren't handled right... " User defined docstrings aren't handled right...
" 'info' item output can use some formatting work " 'info' item output can use some formatting work
" Add an "unsafe eval" mode, to allow for return type evaluation " Add an "unsafe eval" mode, to allow for return type evaluation
" Complete basic syntax along with import statements
" i.e. "import url<c-x,c-o>"
" Continue parsing on invalid line??
"
" v 0.7
" * Fixed function list sorting (_ and __ at the bottom)
" * Removed newline removal from docs. It appears vim handles these better in
" recent patches
"
" v 0.6:
" * Fixed argument completion
" * Removed the 'kind' completions, as they are better indicated
" with real syntax
" * Added tuple assignment parsing (whoops, that was forgotten)
" * Fixed import handling when flattening scope
"
" v 0.5:
" Yeah, I skipped a version number - 0.4 was never public.
" It was a bugfix version on top of 0.3. This is a complete
" rewrite.
"
if !has('python') if !has('python')
echo "Error: Required vim compiled with +python" echo "Error: Required vim compiled with +python"
@@ -28,7 +46,7 @@ function! pythoncomplete#Complete(findstart, base)
if c =~ '\w' if c =~ '\w'
continue continue
elseif ! c =~ '\.' elseif ! c =~ '\.'
idx = -1 let idx = -1
break break
else else
break break
@@ -45,7 +63,7 @@ function! pythoncomplete#Complete(findstart, base)
while idx > 0 while idx > 0
let idx -= 1 let idx -= 1
let c = line[idx] let c = line[idx]
if c =~ '\w' || c =~ '\.' if c =~ '\w' || c =~ '\.' || c == '('
let cword = c . cword let cword = c . cword
continue continue
elseif strlen(cword) > 0 || idx == 0 elseif strlen(cword) > 0 || idx == 0
@@ -73,7 +91,24 @@ def vimcomplete(context,match):
try: try:
import vim import vim
def complsort(x,y): def complsort(x,y):
return x['abbr'] > y['abbr'] try:
xa = x['abbr']
ya = y['abbr']
if xa[0] == '_':
if xa[1] == '_' and ya[0:2] == '__':
return xa > ya
elif ya[0:2] == '__':
return -1
elif y[0] == '_':
return xa > ya
else:
return 1
elif ya[0] == '_':
return -1
else:
return xa > ya
except:
return 0
cmpl = Completer() cmpl = Completer()
cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')")) cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')"))
all = cmpl.get_completions(context,match) all = cmpl.get_completions(context,match)
@@ -86,7 +121,7 @@ def vimcomplete(context,match):
dictstr += '"icase":0},' dictstr += '"icase":0},'
if dictstr[-1] == ',': dictstr = dictstr[:-1] if dictstr[-1] == ',': dictstr = dictstr[:-1]
dictstr += ']' dictstr += ']'
dbg("dict: %s" % dictstr) #dbg("dict: %s" % dictstr)
vim.command("silent let g:pythoncomplete_completions = %s" % dictstr) vim.command("silent let g:pythoncomplete_completions = %s" % dictstr)
#dbg("Completion dict:\n%s" % all) #dbg("Completion dict:\n%s" % all)
except vim.error: except vim.error:
@@ -108,11 +143,7 @@ class Completer(object):
except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l)) except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l))
def _cleanstr(self,doc): def _cleanstr(self,doc):
return doc.replace('"',' ')\ return doc.replace('"',' ').replace("'",' ')
.replace("'",' ')\
.replace('\n',' ')\
.replace('\r',' ')\
.replace('
def get_arguments(self,func_obj): def get_arguments(self,func_obj):
def _ctor(obj): def _ctor(obj):
@@ -128,23 +159,23 @@ class Completer(object):
elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func
else: arg_offset = 0 else: arg_offset = 0
arg_text=''
if type(func_obj) in [types.FunctionType, types.LambdaType]: if type(func_obj) in [types.FunctionType, types.LambdaType]:
try: try:
cd = func_obj.func_code cd = func_obj.func_code
real_args = cd.co_varnames[arg_offset:cd.co_argcount] real_args = cd.co_varnames[arg_offset:cd.co_argcount]
real_args = cd.co_varnames[arg_offset:cd.co_argcount] defaults = func_obj.func_defaults or ''
defaults = func_obj.func_defaults or [] defaults = map(lambda name: "=%s" % name, defaults)
defaults = [""] * (len(real_args)-len(defaults)) + defaults defaults = [""] * (len(real_args)-len(defaults)) + defaults
items = map(lambda a,d: a+d, real_args, defaults) items = map(lambda a,d: a+d, real_args, defaults)
if func_obj.func_code.co_flags & 0x4: if func_obj.func_code.co_flags & 0x4:
items.append("...") items.append("...")
if func_obj.func_code.co_flags & 0x8: if func_obj.func_code.co_flags & 0x8:
items.append("***") items.append("***")
items.append("***") arg_text = (','.join(items)) + ')'
except: except:
except: dbg("arg completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1]))
pass pass
if len(arg_text) == 0: if len(arg_text) == 0:
# The doc string sometimes contains the function signature # The doc string sometimes contains the function signature
@@ -160,6 +191,7 @@ class Completer(object):
ridx = sigline.find(')') ridx = sigline.find(')')
if lidx > 0 and ridx > 0: if lidx > 0 and ridx > 0:
arg_text = sigline[lidx+1:ridx] + ')' arg_text = sigline[lidx+1:ridx] + ')'
if len(arg_text) == 0: arg_text = ')'
return arg_text return arg_text
def get_completions(self,context,match): def get_completions(self,context,match):
@@ -172,12 +204,11 @@ class Completer(object):
all = {} all = {}
ridx = stmt.rfind('.') ridx = stmt.rfind('.')
if len(stmt) > 0 and stmt[-1] == '(': if len(stmt) > 0 and stmt[-1] == '(':
if len(stmt) > 0 and stmt[-1] == '(':
result = eval(_sanitize(stmt[:-1]), self.compldict) result = eval(_sanitize(stmt[:-1]), self.compldict)
doc = result.__doc__ doc = result.__doc__
if doc == None: doc = '' if doc == None: doc = ''
if doc == None: doc = '' args = self.get_arguments(result)
args = self.get_arguments(res) return [{'word':self._cleanstr(args),'info':self._cleanstr(doc)}]
elif ridx == -1: elif ridx == -1:
match = stmt match = stmt
all = self.compldict all = self.compldict
@@ -206,22 +237,18 @@ class Completer(object):
if doc == None or doc == '': doc = maindoc if doc == None or doc == '': doc = maindoc
wrd = m[len(match):] wrd = m[len(match):]
wrd = m[len(match):] c = {'word':wrd, 'abbr':m, 'info':self._cleanstr(doc)}
if "function" in typestr: if "function" in typestr:
c['word'] += '(' c['word'] += '('
c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
elif "method" in typestr: elif "method" in typestr:
c['word'] += '(' c['word'] += '('
c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst))
elif "module" in typestr: elif "module" in typestr:
c['word'] += '.' c['word'] += '.'
c['word'] += '.'
elif "class" in typestr: elif "class" in typestr:
c['word'] += '(' c['word'] += '('
c['abbr'] += '(' c['abbr'] += '('
c['abbr'] += '('
completions.append(c) completions.append(c)
except: except:
i = sys.exc_info() i = sys.exc_info()
@@ -277,10 +304,13 @@ class Scope(object):
# we need to start with this, to fix up broken completions # we need to start with this, to fix up broken completions
# hopefully this name is unique enough... # hopefully this name is unique enough...
str = '"""'+self.docstr+'"""\n' str = '"""'+self.docstr+'"""\n'
for l in self.locals:
if l.startswith('import'): str += l+'\n'
str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n' str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n'
for sub in self.subscopes: for sub in self.subscopes:
str += sub.get_code() str += sub.get_code()
str += sub.get_code() for l in self.locals:
if not l.startswith('import'): str += l+'\n'
return str return str
@@ -420,6 +450,8 @@ class PyParser:
tokentype, token, indent = self.next() tokentype, token, indent = self.next()
if tokentype == tokenize.STRING or token == 'str': if tokentype == tokenize.STRING or token == 'str':
return '""' return '""'
elif token == '(' or token == 'tuple':
return '()'
elif token == '[' or token == 'list': elif token == '[' or token == 'list':
return '[]' return '[]'
elif token == '{' or token == 'dict': elif token == '{' or token == 'dict':
@@ -494,9 +526,9 @@ class PyParser:
freshscope=True freshscope=True
while True: while True:
tokentype, token, indent = self.next() tokentype, token, indent = self.next()
tokentype, token, indent = self.next() #dbg( 'main: token=[%s] indent=[%s]' % (token,indent))
if tokentype == DEDENT or token == "pass":
self.scope = self.scope.pop(indent) self.scope = self.scope.pop(indent)
elif token == 'def': elif token == 'def':
func = self._parsefunction(indent) func = self._parsefunction(indent)

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
" Vim script to download a missing spell file " Vim script to download a missing spell file
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Feb 01 " Last Change: 2007 May 08
if !exists('g:spellfile_URL') if !exists('g:spellfile_URL')
let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/unstable/runtime/spell' let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/runtime/spell'
endif endif
let s:spellfile_URL = '' " Start with nothing so that s:donedict is reset. let s:spellfile_URL = '' " Start with nothing so that s:donedict is reset.
@@ -58,19 +58,40 @@ function! spellfile#LoadFile(lang)
let fname = a:lang . '.' . enc . '.spl' let fname = a:lang . '.' . enc . '.spl'
" Split the window, read the file into a new buffer. " Split the window, read the file into a new buffer.
" Remember the buffer number, we check it below.
new new
let newbufnr = winbufnr(0)
setlocal bin setlocal bin
echo 'Downloading ' . fname . '...' echo 'Downloading ' . fname . '...'
exe 'Nread ' g:spellfile_URL . '/' . fname call spellfile#Nread(fname)
if getline(2) !~ 'VIMspell' if getline(2) !~ 'VIMspell'
" Didn't work, perhaps there is an ASCII one. " Didn't work, perhaps there is an ASCII one.
g/^/d " Careful: Nread() may have opened a new window for the error message,
" we need to go back to our own buffer and window.
if newbufnr != winbufnr(0)
let winnr = bufwinnr(newbufnr)
if winnr == -1
" Our buffer has vanished!? Open a new window.
echomsg "download buffer disappeared, opening a new one"
new
setlocal bin
else
exe winnr . "wincmd w"
endif
endif
if newbufnr == winbufnr(0)
" We are back the old buffer, remove any (half-finished) download.
g/^/d
else
let newbufnr = winbufnr(0)
endif
let fname = a:lang . '.ascii.spl' let fname = a:lang . '.ascii.spl'
echo 'Could not find it, trying ' . fname . '...' echo 'Could not find it, trying ' . fname . '...'
exe 'Nread ' g:spellfile_URL . '/' . fname call spellfile#Nread(fname)
if getline(2) !~ 'VIMspell' if getline(2) !~ 'VIMspell'
echo 'Sorry, downloading failed' echo 'Sorry, downloading failed'
bwipe! exe newbufnr . "bwipe!"
return return
endif endif
endif endif
@@ -95,17 +116,53 @@ function! spellfile#LoadFile(lang)
g/^/d g/^/d
let fname = substitute(fname, '\.spl$', '.sug', '') let fname = substitute(fname, '\.spl$', '.sug', '')
echo 'Downloading ' . fname . '...' echo 'Downloading ' . fname . '...'
exe 'Nread ' g:spellfile_URL . '/' . fname call spellfile#Nread(fname)
if getline(2) !~ 'VIMsug' if getline(2) =~ 'VIMsug'
echo 'Sorry, downloading failed'
else
1d 1d
exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
set nomod
else
echo 'Sorry, downloading failed'
" Go back to our own buffer/window, Nread() may have taken us to
" another window.
if newbufnr != winbufnr(0)
let winnr = bufwinnr(newbufnr)
if winnr != -1
exe winnr . "wincmd w"
endif
endif
if newbufnr == winbufnr(0)
set nomod
endif
endif endif
set nomod
endif endif
endif endif
bwipe " Wipe out the buffer we used.
exe newbufnr . "bwipe"
endif
endfunc
" Read "fname" from the server.
function! spellfile#Nread(fname)
" We do our own error handling, don't want a window for it.
if exists("g:netrw_use_errorwindow")
let save_ew = g:netrw_use_errorwindow
endif
let g:netrw_use_errorwindow=0
if g:spellfile_URL =~ '^ftp://'
" for an ftp server use a default login and password to avoid a prompt
let machine = substitute(g:spellfile_URL, 'ftp://\([^/]*\).*', '\1', '')
let dir = substitute(g:spellfile_URL, 'ftp://[^/]*/\(.*\)', '\1', '')
exe 'Nread "' . machine . ' anonymous vim7user ' . dir . '/' . a:fname . '"'
else
exe 'Nread ' g:spellfile_URL . '/' . a:fname
endif
if exists("save_ew")
let g:netrw_use_errorwindow = save_ew
else
unlet g:netrw_use_errorwindow
endif endif
endfunc endfunc

View File

@@ -1,8 +1,8 @@
" Vim OMNI completion script for SQL " Vim OMNI completion script for SQL
" Language: SQL " Language: SQL
" Maintainer: David Fishburn <fishburn@ianywhere.com> " Maintainer: David Fishburn <fishburn@ianywhere.com>
" Version: 4.0 " Version: 5.0
" Last Change: Wed Apr 26 2006 3:00:06 PM " Last Change: Mon Jun 05 2006 3:30:04 PM
" Usage: For detailed help " Usage: For detailed help
" ":help sql.txt" " ":help sql.txt"
" or ":help ft-sql-omni" " or ":help ft-sql-omni"
@@ -22,7 +22,7 @@ endif
if exists('g:loaded_sql_completion') if exists('g:loaded_sql_completion')
finish finish
endif endif
let g:loaded_sql_completion = 40 let g:loaded_sql_completion = 50
" Maintains filename of dictionary " Maintains filename of dictionary
let s:sql_file_table = "" let s:sql_file_table = ""
@@ -113,7 +113,7 @@ function! sqlcomplete#Complete(findstart, base)
" If lastword has already been set for column completion " If lastword has already been set for column completion
" break from the loop, since we do not also want to pickup " break from the loop, since we do not also want to pickup
" a table name if it was also supplied. " a table name if it was also supplied.
if lastword != -1 && compl_type == 'column' if lastword != -1 && compl_type == 'column'
break break
endif endif
" If column completion was specified stop at the "." if " If column completion was specified stop at the "." if
@@ -176,11 +176,19 @@ function! sqlcomplete#Complete(findstart, base)
return [] return []
endif endif
if s:sql_file_{compl_type} == "" " Allow the user to override the dbext plugin to specify whether
let compl_type = substitute(compl_type, '\w\+', '\u&', '') " the owner/creator should be included in the list
let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type) let saved_dbext_show_owner = 1
if exists('g:dbext_default_dict_show_owner')
let saved_dbext_show_owner = g:dbext_default_dict_show_owner
endif endif
let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type) let g:dbext_default_dict_show_owner = g:omni_sql_include_owner
let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '')
if s:sql_file_{compl_type} == ""
let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
endif
let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
if s:sql_file_{compl_type} != "" if s:sql_file_{compl_type} != ""
if filereadable(s:sql_file_{compl_type}) if filereadable(s:sql_file_{compl_type})
let compl_list = readfile(s:sql_file_{compl_type}) let compl_list = readfile(s:sql_file_{compl_type})
@@ -194,7 +202,9 @@ function! sqlcomplete#Complete(findstart, base)
" endif " endif
endif endif
endif endif
elseif compl_type == 'column'
let g:dbext_default_dict_show_owner = saved_dbext_show_owner
elseif compl_type =~? 'column'
" This type of completion relies upon the dbext.vim plugin " This type of completion relies upon the dbext.vim plugin
if s:SQLCCheck4dbext() == -1 if s:SQLCCheck4dbext() == -1
@@ -209,33 +219,88 @@ function! sqlcomplete#Complete(findstart, base)
let base = s:save_prev_table let base = s:save_prev_table
endif endif
if base != "" let owner = ''
let compl_list = s:SQLCGetColumns(base, '') let column = ''
if base =~ '\.'
" Check if the owner/creator has been specified
let owner = matchstr( base, '^\zs.*\ze\..*\..*' )
let table = matchstr( base, '^\(.*\.\)\?\zs.*\ze\..*' )
let column = matchstr( base, '.*\.\zs.*' )
" It is pretty well impossible to determine if the user
" has entered:
" owner.table
" table.column_prefix
" So there are a couple of things we can do to mitigate
" this issue.
" 1. Check if the dbext plugin has the option turned
" on to even allow owners
" 2. Based on 1, if the user is showing a table list
" and the DrillIntoTable (using <C-Right>) then
" this will be owner.table. In this case, we can
" check to see the table.column exists in the
" cached table list. If it does, then we have
" determined the user has actually chosen
" owner.table, not table.column_prefix.
let found = -1
if g:omni_sql_include_owner == 1 && owner == ''
if filereadable(s:sql_file_table)
let tbl_list = readfile(s:sql_file_table)
let found = index( tbl_list, ((table != '')?(table.'.'):'').column)
endif
endif
" If the table.column was found in the table list, we can safely assume
" the owner was not provided and shift the items appropriately.
" OR
" If the user has indicated not to use table owners at all and
" the base ends in a '.' we know they are not providing a column
" name, so we can shift the items appropriately.
if found != -1 || (g:omni_sql_include_owner == 0 && base !~ '\.$')
let owner = table
let table = column
let column = ''
endif
else
let table = base
endif
" Get anything after the . and consider this the table name
" If an owner has been specified, then we must consider the
" base to be a partial column name
" let base = matchstr( base, '^\(.*\.\)\?\zs.*' )
if table != ""
let s:save_prev_table = base let s:save_prev_table = base
let base = '' let list_type = ''
endif
elseif compl_type == 'column_csv'
" This type of completion relies upon the dbext.vim plugin if compl_type == 'column_csv'
if s:SQLCCheck4dbext() == -1 " Return one array element, with a comma separated
return [] " list of values instead of multiple array entries
endif " for each column in the table.
let list_type = 'csv'
endif
if base == "" let compl_list = s:SQLCGetColumns(table, list_type)
" The last time we displayed a column list we stored if column != ''
" the table name. If the user selects a column list " If no column prefix has been provided and the table
" without a table name of alias present, assume they want " name was provided, append it to each of the items
" the previous column list displayed. " returned.
let base = s:save_prev_table let compl_list = map(compl_list, "table.'.'.v:val")
endif if owner != ''
" If an owner has been provided append it to each of the
" items returned.
let compl_list = map(compl_list, "owner.'.'.v:val")
endif
else
let base = ''
endif
if base != "" if compl_type == 'column_csv'
let compl_list = s:SQLCGetColumns(base, 'csv') " Join the column array into 1 single element array
let s:save_prev_table = base " but make the columns column separated
" Join the column array into 1 single element array let compl_list = [join(compl_list, ', ')]
" but make the columns column separated endif
let compl_list = [join(compl_list, ', ')]
let base = ''
endif endif
elseif compl_type == 'resetCache' elseif compl_type == 'resetCache'
" Reset all cached items " Reset all cached items
@@ -256,7 +321,7 @@ function! sqlcomplete#Complete(findstart, base)
if base != '' if base != ''
" Filter the list based on the first few characters the user " Filter the list based on the first few characters the user
" entered " entered
let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "^'.base.'"' let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
let compl_list = filter(deepcopy(compl_list), expr) let compl_list = filter(deepcopy(compl_list), expr)
endif endif
@@ -274,6 +339,8 @@ function! sqlcomplete#PreCacheSyntax(...)
else else
let syn_group_arr = g:omni_sql_precache_syntax_groups let syn_group_arr = g:omni_sql_precache_syntax_groups
endif endif
" For each group specified in the list, precache all
" the sytnax items.
if !empty(syn_group_arr) if !empty(syn_group_arr)
for group_name in syn_group_arr for group_name in syn_group_arr
call s:SQLCGetSyntaxList(group_name) call s:SQLCGetSyntaxList(group_name)
@@ -444,9 +511,23 @@ function! s:SQLCAddAlias(table_name, table_alias, cols)
return cols return cols
endfunction endfunction
function! s:SQLCGetObjectOwner(object)
" The owner regex matches a word at the start of the string which is
" followed by a dot, but doesn't include the dot in the result.
" ^ - from beginning of line
" "\? - ignore any quotes
" \zs - start the match now
" \w\+ - get owner name
" \ze - end the match
" "\? - ignore any quotes
" \. - must by followed by a .
let owner = matchstr( a:object, '^"\?\zs\w\+\ze"\?\.' )
return owner
endfunction
function! s:SQLCGetColumns(table_name, list_type) function! s:SQLCGetColumns(table_name, list_type)
let table_name = matchstr(a:table_name, '^\w\+') " Check if the table name was provided as part of the column name
let table_name = matchstr(a:table_name, '^[a-zA-Z0-9_.]\+') let table_name = matchstr(a:table_name, '^[a-zA-Z0-9_]\+\ze\.\?')
let table_cols = [] let table_cols = []
let table_alias = '' let table_alias = ''
let move_to_top = 1 let move_to_top = 1

View File

@@ -1,8 +1,9 @@
" Vim completion script " Vim completion script
" Language: All languages, uses existing syntax highlighting rules " Language: All languages, uses existing syntax highlighting rules
" Maintainer: David Fishburn <fishburn@ianywhere.com> " Maintainer: David Fishburn <fishburn@ianywhere.com>
" Version: 1.3 " Version: 3.0
" Last Change: Mon Mar 27 2006 9:29:35 PM " Last Change: Wed Nov 08 2006 10:46:46 AM
" Usage: For detailed help, ":help ft-syntax-omni"
" Set completion with CTRL-X CTRL-O to autoloaded function. " Set completion with CTRL-X CTRL-O to autoloaded function.
" This check is in place in case this script is " This check is in place in case this script is
@@ -18,11 +19,33 @@ endif
if exists('g:loaded_syntax_completion') if exists('g:loaded_syntax_completion')
finish finish
endif endif
let g:loaded_syntax_completion = 1 let g:loaded_syntax_completion = 30
" Set ignorecase to the ftplugin standard
" This is the default setting, but if you define a buffer local
" variable you can override this on a per filetype.
if !exists('g:omni_syntax_ignorecase')
let g:omni_syntax_ignorecase = &ignorecase
endif
" Indicates whether we should use the iskeyword option to determine
" how to split words.
" This is the default setting, but if you define a buffer local
" variable you can override this on a per filetype.
if !exists('g:omni_syntax_use_iskeyword')
let g:omni_syntax_use_iskeyword = 1
endif
" Only display items in the completion window that are at least
" this many characters in length.
" This is the default setting, but if you define a buffer local
" variable you can override this on a per filetype.
if !exists('g:omni_syntax_minimum_length')
let g:omni_syntax_minimum_length = 0
endif
" This script will build a completion list based on the syntax " This script will build a completion list based on the syntax
" elements defined by the files in $VIMRUNTIME/syntax. " elements defined by the files in $VIMRUNTIME/syntax.
let s:syn_remove_words = 'match,matchgroup=,contains,'. let s:syn_remove_words = 'match,matchgroup=,contains,'.
\ 'links to,start=,end=,nextgroup=' \ 'links to,start=,end=,nextgroup='
@@ -33,21 +56,28 @@ let s:prepended = ''
" This function is used for the 'omnifunc' option. " This function is used for the 'omnifunc' option.
function! syntaxcomplete#Complete(findstart, base) function! syntaxcomplete#Complete(findstart, base)
" Only display items in the completion window that are at least
" this many characters in length
if !exists('b:omni_syntax_ignorecase')
if exists('g:omni_syntax_ignorecase')
let b:omni_syntax_ignorecase = g:omni_syntax_ignorecase
else
let b:omni_syntax_ignorecase = &ignorecase
endif
endif
if a:findstart if a:findstart
" Locate the start of the item, including "." " Locate the start of the item, including "."
let line = getline('.') let line = getline('.')
let start = col('.') - 1 let start = col('.') - 1
let lastword = -1 let lastword = -1
while start > 0 while start > 0
if line[start - 1] =~ '\w' " if line[start - 1] =~ '\S'
" let start -= 1
" elseif line[start - 1] =~ '\.'
if line[start - 1] =~ '\k'
let start -= 1 let start -= 1
elseif line[start - 1] =~ '\.' let lastword = a:findstart
" The user must be specifying a column name
if lastword == -1
let lastword = start
endif
let start -= 1
let b:sql_compl_type = 'column'
else else
break break
endif endif
@@ -59,33 +89,68 @@ function! syntaxcomplete#Complete(findstart, base)
let s:prepended = '' let s:prepended = ''
return start return start
endif endif
let s:prepended = strpart(line, start, lastword - start) let s:prepended = strpart(line, start, (col('.') - 1) - start)
return lastword return start
endif endif
let base = s:prepended . a:base " let base = s:prepended . a:base
let base = s:prepended
let list_idx = index(s:cache_name, &filetype, 0, &ignorecase) let filetype = substitute(&filetype, '\.', '_', 'g')
let list_idx = index(s:cache_name, filetype, 0, &ignorecase)
if list_idx > -1 if list_idx > -1
let compl_list = s:cache_list[list_idx] let compl_list = s:cache_list[list_idx]
else else
let compl_list = OmniSyntaxList() let compl_list = OmniSyntaxList()
let s:cache_name = add( s:cache_name, &filetype ) let s:cache_name = add( s:cache_name, filetype )
let s:cache_list = add( s:cache_list, compl_list ) let s:cache_list = add( s:cache_list, compl_list )
endif endif
" Return list of matches. " Return list of matches.
if base =~ '\w' if base != ''
let compstr = join(compl_list, ' ') " let compstr = join(compl_list, ' ')
let compstr = substitute(compstr, '\<\%('.base.'\)\@!\w\+\s*', '', 'g') " let expr = (b:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*'
let compl_list = split(compstr, '\s\+') " let compstr = substitute(compstr, expr, '', 'g')
" let compl_list = split(compstr, '\s\+')
" Filter the list based on the first few characters the user
" entered
let expr = 'v:val '.(g:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'"
let compl_list = filter(deepcopy(compl_list), expr)
endif endif
return compl_list return compl_list
endfunc endfunc
function! OmniSyntaxList() function! OmniSyntaxList()
" Default to returning a dictionary, if use_dictionary is set to 0
" a list will be returned.
" let use_dictionary = 1
" if a:0 > 0 && a:1 != ''
" let use_dictionary = a:1
" endif
" Only display items in the completion window that are at least
" this many characters in length
if !exists('b:omni_syntax_use_iskeyword')
if exists('g:omni_syntax_use_iskeyword')
let b:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword
else
let b:omni_syntax_use_iskeyword = 1
endif
endif
" Only display items in the completion window that are at least
" this many characters in length
if !exists('b:omni_syntax_minimum_length')
if exists('g:omni_syntax_minimum_length')
let b:omni_syntax_minimum_length = g:omni_syntax_minimum_length
else
let b:omni_syntax_minimum_length = 0
endif
endif
let saveL = @l let saveL = @l
" Loop through all the syntax groupnames, and build a " Loop through all the syntax groupnames, and build a
@@ -109,85 +174,107 @@ function! OmniSyntaxList()
return [] return []
endif endif
let filetype = substitute(&filetype, '\.', '_', 'g')
" Default the include group to include the requested syntax group " Default the include group to include the requested syntax group
let syntax_group_include_{&filetype} = '' let syntax_group_include_{filetype} = ''
" Check if there are any overrides specified for this filetype " Check if there are any overrides specified for this filetype
if exists('g:omni_syntax_group_include_'.&filetype) if exists('g:omni_syntax_group_include_'.filetype)
let syntax_group_include_{&filetype} = let syntax_group_include_{filetype} =
\ substitute( g:omni_syntax_group_include_{&filetype},'\s\+','','g') \ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g')
if syntax_group_include_{&filetype} =~ '\w' if syntax_group_include_{filetype} =~ '\w'
let syntax_group_include_{&filetype} = let syntax_group_include_{filetype} =
\ substitute( syntax_group_include_{&filetype}, \ substitute( syntax_group_include_{filetype},
\ '\s*,\s*', '\\|', 'g' \ '\s*,\s*', '\\|', 'g'
\ ) \ )
endif endif
endif endif
" Default the exclude group to nothing " Default the exclude group to nothing
let syntax_group_exclude_{&filetype} = '' let syntax_group_exclude_{filetype} = ''
" Check if there are any overrides specified for this filetype " Check if there are any overrides specified for this filetype
if exists('g:omni_syntax_group_exclude_'.&filetype) if exists('g:omni_syntax_group_exclude_'.filetype)
let syntax_group_exclude_{&filetype} = let syntax_group_exclude_{filetype} =
\ substitute( g:omni_syntax_group_exclude_{&filetype},'\s\+','','g') \ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g')
if syntax_group_exclude_{&filetype} =~ '\w' if syntax_group_exclude_{filetype} =~ '\w'
let syntax_group_exclude_{&filetype} = let syntax_group_exclude_{filetype} =
\ substitute( syntax_group_exclude_{&filetype}, \ substitute( syntax_group_exclude_{filetype},
\ '\s*,\s*', '\\|', 'g' \ '\s*,\s*', '\\|', 'g'
\ ) \ )
endif endif
endif endif
" Syntax rules can contain items for more than just the current " Sometimes filetypes can be composite names, like c.doxygen
" filetype. They can contain additional items added by the user " Loop through each individual part looking for the syntax
" via autocmds or their vimrc. " items specific to each individual filetype.
" Some syntax files can be combined (html, php, jsp).
" We want only items that begin with the filetype we are interested in.
let next_group_regex = '\n' .
\ '\zs'.&filetype.'\w\+\ze'.
\ '\s\+xxx\s\+'
let syn_list = '' let syn_list = ''
let index = 0 let ftindex = 0
let index = match(syntax_full, next_group_regex, index) let ftindex = match(&filetype, '\w\+', ftindex)
while index > 0 while ftindex > -1
let group_name = matchstr( syntax_full, '\w\+', index ) let ft_part_name = matchstr( &filetype, '\w\+', ftindex )
let get_syn_list = 1 " Syntax rules can contain items for more than just the current
" if syntax_group_include_{&filetype} == '' " filetype. They can contain additional items added by the user
" if syntax_group_exclude_{&filetype} != '' " via autocmds or their vimrc.
" if '\<'.syntax_group_exclude_{&filetype}.'\>' =~ '\<'.group_name.'\>' " Some syntax files can be combined (html, php, jsp).
" let get_syn_list = 0 " We want only items that begin with the filetype we are interested in.
" endif let next_group_regex = '\n' .
" endif \ '\zs'.ft_part_name.'\w\+\ze'.
" else \ '\s\+xxx\s\+'
" if '\<'.syntax_group_include_{&filetype}.'\>' !~ '\<'.group_name.'\>' let index = 0
" let get_syn_list = 0 let index = match(syntax_full, next_group_regex, index)
" endif
" endif while index > -1
if syntax_group_exclude_{&filetype} != '' let group_name = matchstr( syntax_full, '\w\+', index )
if '\<'.syntax_group_exclude_{&filetype}.'\>' =~ '\<'.group_name.'\>'
let get_syn_list = 0 let get_syn_list = 1
endif " if syntax_group_include_{&filetype} == ''
endif " if syntax_group_exclude_{&filetype} != ''
" if '\<'.syntax_group_exclude_{&filetype}.'\>' =~ '\<'.group_name.'\>'
if get_syn_list == 1 " let get_syn_list = 0
if syntax_group_include_{&filetype} != '' " endif
if '\<'.syntax_group_include_{&filetype}.'\>' !~ '\<'.group_name.'\>' " endif
" else
" if '\<'.syntax_group_include_{&filetype}.'\>' !~ '\<'.group_name.'\>'
" let get_syn_list = 0
" endif
" endif
if syntax_group_exclude_{filetype} != ''
if '\<'.syntax_group_exclude_{filetype}.'\>' =~ '\<'.group_name.'\>'
let get_syn_list = 0 let get_syn_list = 0
endif endif
endif endif
endif
if get_syn_list == 1
if syntax_group_include_{filetype} != ''
if '\<'.syntax_group_include_{filetype}.'\>' !~ '\<'.group_name.'\>'
let get_syn_list = 0
endif
endif
endif
if get_syn_list == 1 if get_syn_list == 1
" Pass in the full syntax listing, plus the group name we " Pass in the full syntax listing, plus the group name we
" are interested in. " are interested in.
let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full) let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full)
let syn_list = syn_list . extra_syn_list . "\n" " if !empty(extra_syn_list)
endif " for elem in extra_syn_list
" let item = {'word':elem, 'kind':'t', 'info':group_name}
" let compl_list += [item]
" endfor
" endif
let index = index + strlen(group_name) let syn_list = syn_list . extra_syn_list . "\n"
let index = match(syntax_full, next_group_regex, index) endif
let index = index + strlen(group_name)
let index = match(syntax_full, next_group_regex, index)
endwhile
let ftindex = ftindex + len(ft_part_name)
let ftindex = match( &filetype, '\w\+', ftindex )
endwhile endwhile
" Convert the string to a List and sort it. " Convert the string to a List and sort it.
@@ -228,7 +315,7 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
" \n\w - at the first newline starting with a character " \n\w - at the first newline starting with a character
let syntax_group = matchstr(a:syntax_full, let syntax_group = matchstr(a:syntax_full,
\ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze'."\n".'\w' \ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze'."\n".'\w'
\) \ )
if syntax_group != "" if syntax_group != ""
" let syn_list = substitute( @l, '^.*xxx\s*\%(contained\s*\)\?', "", '' ) " let syn_list = substitute( @l, '^.*xxx\s*\%(contained\s*\)\?', "", '' )
@@ -242,26 +329,48 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
" contained nextgroup=... " contained nextgroup=...
" So this will strip off the ending of lines with known " So this will strip off the ending of lines with known
" keywords. " keywords.
let syn_list = substitute( syntax_group, '\<\('. let syn_list = substitute(
\ substitute( \ syntax_group, '\<\('.
\ escape( s:syn_remove_words, '\\/.*$^~[]') \ substitute(
\ , ',', '\\|', 'g'). \ escape(s:syn_remove_words, '\\/.*$^~[]')
\ '\).\{-}\%($\|'."\n".'\)' \ , ',', '\\|', 'g'
\ , "\n", 'g' ) \ ).
\ '\).\{-}\%($\|'."\n".'\)'
\ , "\n", 'g'
\ )
" Now strip off the newline + blank space + contained " Now strip off the newline + blank space + contained
let syn_list = substitute( syn_list, '\%(^\|\n\)\@<=\s*\<\('. let syn_list = substitute(
\ 'contained\)' \ syn_list, '\%(^\|\n\)\@<=\s*\<\(contained\)'
\ , "", 'g' ) \ , "", 'g'
\ )
" There are a number of items which have non-word characters in if b:omni_syntax_use_iskeyword == 0
" them, *'T_F1'*. vim.vim is one such file. " There are a number of items which have non-word characters in
" This will replace non-word characters with spaces. " them, *'T_F1'*. vim.vim is one such file.
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' ) " This will replace non-word characters with spaces.
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
else
let accept_chars = ','.&iskeyword.','
" Remove all character ranges
let accept_chars = substitute(accept_chars, ',[^,]\+-[^,]\+,', ',', 'g')
" Remove all numeric specifications
let accept_chars = substitute(accept_chars, ',\d\{-},', ',', 'g')
" Remove all commas
let accept_chars = substitute(accept_chars, ',', '', 'g')
" Escape special regex characters
let accept_chars = escape(accept_chars, '\\/.*$^~[]' )
" Remove all characters that are not acceptable
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ '.accept_chars.']', ' ', 'g' )
endif
if b:omni_syntax_minimum_length > 0
" If the user specified a minimum length, enforce it
let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.b:omni_syntax_minimum_length.'}\ze ', ' ', 'g')
endif
else else
let syn_list = '' let syn_list = ''
endif endif
return syn_list return syn_list
endfunction endfunction

View File

@@ -1,8 +1,8 @@
" tar.vim: Handles browsing tarfiles " tar.vim: Handles browsing tarfiles
" AUTOLOAD PORTION " AUTOLOAD PORTION
" Date: May 02, 2006 " Date: Sep 29, 2006
" Version: 9 " Version: 11
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license) " License: Vim License (see vim's :help license)
" "
" Contains many ideas from Michael Toren's <tar.vim> " Contains many ideas from Michael Toren's <tar.vim>
@@ -18,13 +18,13 @@
" of this software. " of this software.
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Initialization: {{{1 " Load Once: {{{1
let s:keepcpo= &cpo let s:keepcpo= &cpo
set cpo&vim set cpo&vim
if exists("g:loaded_tar") if &cp || exists("g:loaded_tar") || v:version < 700
finish finish
endif endif
let g:loaded_tar= "v9" let g:loaded_tar= "v11"
"call Decho("loading autoload/tar.vim") "call Decho("loading autoload/tar.vim")
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
@@ -41,6 +41,13 @@ endif
if !exists("g:tar_writeoptions") if !exists("g:tar_writeoptions")
let g:tar_writeoptions= "uf" let g:tar_writeoptions= "uf"
endif endif
if !exists("g:tar_shq")
if has("unix")
let g:tar_shq= "'"
else
let g:tar_shq= '"'
endif
endif
" ---------------- " ----------------
" Functions: {{{1 " Functions: {{{1
@@ -55,8 +62,9 @@ fun! tar#Browse(tarfile)
" sanity checks " sanity checks
if !executable(g:tar_cmd) if !executable(g:tar_cmd)
redraw!
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("tar#Browse") " call Dret("tar#Browse")
return return
@@ -65,8 +73,9 @@ fun! tar#Browse(tarfile)
" call Decho('a:tarfile<'.a:tarfile.'> not filereadable') " call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
if a:tarfile !~# '^\a\+://' if a:tarfile !~# '^\a\+://'
" if its an url, don't complain, let url-handlers such as vim do its thing " if its an url, don't complain, let url-handlers such as vim do its thing
redraw!
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif endif
let &report= repkeep let &report= repkeep
" call Dret("tar#Browse : file<".a:tarfile."> not readable") " call Dret("tar#Browse : file<".a:tarfile."> not readable")
@@ -99,30 +108,26 @@ fun! tar#Browse(tarfile)
endif endif
let curlast= line("$") let curlast= line("$")
if tarfile =~# '\.\(gz\|tgz\)$' if tarfile =~# '\.\(gz\|tgz\)$'
" call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ") " call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - " exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - "
elseif tarfile =~# '\.bz2$' elseif tarfile =~# '\.bz2$'
" call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ") " call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - ")
exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - " exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - "
else else
" call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'") " call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".g:tar_shq.tarfile.g:tar_shq)
exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'" exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".g:tar_shq.tarfile.g:tar_shq
endif endif
if v:shell_error != 0 if v:shell_error != 0
redraw!
echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("tar#Browse : a:tarfile<".a:tarfile.">") " call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
silent %d
let eikeep= &ei
set ei=BufReadCmd,FileReadCmd
exe "r ".a:tarfile
let &ei= eikeep
1d
return return
endif endif
if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~? '\c\%(warning\|error\|inappropriate\|unrecognized\)') if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
redraw!
echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
silent %d silent %d
let eikeep= &ei let eikeep= &ei
set ei=BufReadCmd,FileReadCmd set ei=BufReadCmd,FileReadCmd
@@ -190,14 +195,14 @@ fun! tar#Read(fname,mode)
" call Decho("fname<".fname.">") " call Decho("fname<".fname.">")
if tarfile =~# '\.\(gz\|tgz\)$' if tarfile =~# '\.\(gz\|tgz\)$'
" call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'") " call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -OPxf - '".fname."'")
exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'" exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'"
elseif tarfile =~# '\.bz2$' elseif tarfile =~# '\.bz2$'
" call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'") " call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'")
exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'" exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'"
else else
" call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'") " call Decho("exe silent r! ".g:tar_cmd." -".g:tar_readoptions." ".g:tar_shq.tarfile.g:tar_shq." ".g:tar_shq.fname.g:tar_shq)
exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." '".tarfile."' '".fname."'" exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".g:tar_shq.tarfile.g:tar_shq." ".g:tar_shq.fname.g:tar_shq
endif endif
let w:tarfile= a:fname let w:tarfile= a:fname
exe "file tarfile:".fname exe "file tarfile:".fname
@@ -219,15 +224,17 @@ fun! tar#Write(fname)
" sanity checks " sanity checks
if !executable(g:tar_cmd) if !executable(g:tar_cmd)
redraw!
echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("tar#Write") " call Dret("tar#Write")
return return
endif endif
if !exists("*mkdir") if !exists("*mkdir")
redraw!
echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("tar#Write") " call Dret("tar#Write")
return return
@@ -246,8 +253,9 @@ fun! tar#Write(fname)
try try
exe "cd ".escape(tmpdir,' \') exe "cd ".escape(tmpdir,' \')
catch /^Vim\%((\a\+)\)\=:E344/ catch /^Vim\%((\a\+)\)\=:E344/
redraw!
echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("tar#Write") " call Dret("tar#Write")
return return
@@ -282,8 +290,9 @@ fun! tar#Write(fname)
endif endif
if v:shell_error != 0 if v:shell_error != 0
redraw!
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
else else
" call Decho("tarfile<".tarfile."> fname<".fname.">") " call Decho("tarfile<".tarfile."> fname<".fname.">")
@@ -309,16 +318,18 @@ fun! tar#Write(fname)
" call Decho("tar --delete -f '".tarfile."' '".fname."'") " call Decho("tar --delete -f '".tarfile."' '".fname."'")
call system("tar --delete -f '".tarfile."' '".fname."'") call system("tar --delete -f '".tarfile."' '".fname."'")
if v:shell_error != 0 if v:shell_error != 0
redraw!
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
else else
" update tarfile with new file " update tarfile with new file
" call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'") " call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'") call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
if v:shell_error != 0 if v:shell_error != 0
redraw!
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
elseif exists("compress") elseif exists("compress")
" call Decho("call system(".compress.")") " call Decho("call system(".compress.")")
call system(compress) call system(compress)
@@ -376,4 +387,4 @@ endfun
" Modelines And Restoration: {{{1 " Modelines And Restoration: {{{1
let &cpo= s:keepcpo let &cpo= s:keepcpo
unlet s:keepcpo unlet s:keepcpo
" vim:ts=8 fdm=marker " vim:ts=8 fdm=marker

View File

@@ -1,7 +1,7 @@
" vimball : construct a file containing both paths and files " vimball.vim : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: May 01, 2006 " Date: May 07, 2007
" Version: 13 " Version: 22
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt " The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -11,18 +11,26 @@
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " Load Once: {{{1
if &cp || exists("g:loaded_vimball") if &cp || exists("g:loaded_vimball") || v:version < 700
finish finish
endif endif
let s:keepcpo = &cpo let s:keepcpo = &cpo
let g:loaded_vimball = "v13" let g:loaded_vimball = "v22"
set cpo&vim set cpo&vim
" =====================================================================
" Constants: {{{1
if !exists("s:USAGE")
let s:USAGE = 0
let s:WARNING = 1
let s:ERROR = 2
endif
" ===================================================================== " =====================================================================
" Functions: {{{1 " Functions: {{{1
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" MkVimball: creates a vimball given a list of paths to files {{{2 " vimball#MkVimball: creates a vimball given a list of paths to files {{{2
" Vimball Format: " Vimball Format:
" path " path
" filesize " filesize
@@ -30,11 +38,24 @@ set cpo&vim
" path " path
" filesize " filesize
" [file] " [file]
fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range fun! vimball#MkVimball(line1,line2,writelevel,...) range
" call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:vimballname.">") " call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0)
let vbname= substitute(a:vimballname,'\.[^.]*$','','e').'.vba' if a:1 =~ '.vim' || a:1 =~ '.txt'
let vbname= substitute(a:1,'\.\a\{3}$','.vba','')
else
let vbname= a:1
endif
if vbname !~ '\.vba$'
let vbname= vbname.'.vba'
endif
" call Decho("vbname<".vbname.">")
if a:1 =~ '[\/]'
call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes")
" call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
return
endif
if !a:writelevel && filereadable(vbname) if !a:writelevel && filereadable(vbname)
echohl Error | echoerr "(MkVimball) file<".vbname."> exists; use ! to insist" | echohl None call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist")
" call Dret("MkVimball : file<".vbname."> already exists; use ! to insist") " call Dret("MkVimball : file<".vbname."> already exists; use ! to insist")
return return
endif endif
@@ -42,17 +63,13 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
" user option bypass " user option bypass
call s:SaveSettings() call s:SaveSettings()
" go to vim plugin home if a:0 >= 2
for home in split(&rtp,',') + [''] " allow user to specify where to get the files
if isdirectory(home) | break | endif let home= expand(a:2)
endfor else
if home == "" " use first existing directory from rtp
let home= substitute(&rtp,',.*$','','') let home= s:VimballHome()
endif endif
if (has("win32") || has("win95") || has("win64") || has("win16"))
let home= substitute(home,'/','\\','ge')
endif
" call Decho("home<".home.">")
" save current directory " save current directory
let curdir = getcwd() let curdir = getcwd()
@@ -68,7 +85,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
" call Decho("svfile<".svfile.">") " call Decho("svfile<".svfile.">")
if !filereadable(svfile) if !filereadable(svfile)
echohl Error | echo "unable to read file<".svfile.">" | echohl None call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">")
call s:ChgDir(curdir) call s:ChgDir(curdir)
call s:RestoreSettings() call s:RestoreSettings()
" call Dret("MkVimball") " call Dret("MkVimball")
@@ -89,9 +106,9 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.') call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
call setline(2,'UseVimball') call setline(2,'UseVimball')
call setline(3,'finish') call setline(3,'finish')
let lastline= 4 let lastline= line("$") + 1
endif endif
call setline(lastline ,svfile) call setline(lastline ,substitute(svfile,'$',' [[[1',''))
call setline(lastline+1,0) call setline(lastline+1,0)
" write the file from the tab " write the file from the tab
@@ -134,13 +151,13 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Vimball: {{{2 " vimball#Vimball: extract and distribute contents from a vimball {{{2
fun! vimball#Vimball(really) fun! vimball#Vimball(really,...)
" call Dfunc("Vimball(really=".a:really.")") " call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0)
if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$' if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$'
echoerr "(Vimball) The current file does not appear to be a Vimball!" echoerr "(Vimball) The current file does not appear to be a Vimball!"
" call Dret("Vimball") " call Dret("vimball#Vimball")
return return
endif endif
@@ -149,26 +166,27 @@ fun! vimball#Vimball(really)
let curtabnr = tabpagenr() let curtabnr = tabpagenr()
" set up vimball tab " set up vimball tab
" call Decho("setting up vimball tab")
tabnew tabnew
silent! file Vimball silent! file Vimball
let vbtabnr= tabpagenr() let vbtabnr= tabpagenr()
let didhelp= "" let didhelp= ""
" go to vim plugin home " go to vim plugin home
for home in split(&rtp,',') + [''] if a:0 > 0
if isdirectory(home) | break | endif let home= expand(a:1)
endfor else
if home == "" let home= s:VimballHome()
let home= substitute(&rtp,',.*$','','')
endif
if (has("win32") || has("win95") || has("win64") || has("win16"))
let home= substitute(home,'/','\\','ge')
endif endif
" call Decho("home<".home.">") " call Decho("home<".home.">")
" save current directory " save current directory and remove older same-named vimball, if any
let curdir = getcwd() let curdir = getcwd()
" call Decho("home<".home.">")
" call Decho("curdir<".curdir.">")
call s:ChgDir(home) call s:ChgDir(home)
call vimball#RmVimball()
let linenr = 4 let linenr = 4
let filecnt = 0 let filecnt = 0
@@ -186,9 +204,12 @@ fun! vimball#Vimball(really)
exe "tabn ".curtabnr exe "tabn ".curtabnr
" call Decho("linenr=".linenr." line$=".line("$")) " call Decho("linenr=".linenr." line$=".line("$"))
while 1 < linenr && linenr < line("$") while 1 < linenr && linenr < line("$")
let fname = getline(linenr) let fname = substitute(getline(linenr),'\t\[\[\[1$','','')
let fname = substitute(fname,'\\','/','g')
let fsize = getline(linenr+1) let fsize = getline(linenr+1)
let filecnt = filecnt + 1 let filecnt = filecnt + 1
" call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt)
if a:really if a:really
echomsg "extracted <".fname.">: ".fsize." lines" echomsg "extracted <".fname.">: ".fsize." lines"
else else
@@ -197,16 +218,30 @@ fun! vimball#Vimball(really)
" call Decho("using L#".linenr.": will extract file<".fname.">") " call Decho("using L#".linenr.": will extract file<".fname.">")
" call Decho("using L#".(linenr+1).": fsize=".fsize) " call Decho("using L#".(linenr+1).": fsize=".fsize)
" Allow AsNeeded/ directory to take place of plugin/ directory
" when AsNeeded/filename is filereadable
if fname =~ '\<plugin/'
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
if filereadable(anfname)
" call Decho("using anfname<".anfname."> instead of <".fname.">")
let fname= anfname
endif
endif
" make directories if they don't exist yet " make directories if they don't exist yet
" call Decho("making directories if they don't exist yet")
if a:really if a:really
let fnamebuf= fname " call Decho("making directories if they don't exist yet (fname<".fname.">)")
let fnamebuf= substitute(fname,'\\','/','g')
let dirpath = substitute(home,'\\','/','g')
while fnamebuf =~ '/' while fnamebuf =~ '/'
let dirname = home."/".substitute(fnamebuf,'/.*$','','e') let dirname = dirpath."/".substitute(fnamebuf,'/.*$','','')
let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','e') let dirpath = dirname
let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','')
" call Decho("dirname<".dirname.">")
if !isdirectory(dirname) if !isdirectory(dirname)
" call Decho("making <".dirname.">") " call Decho("making <".dirname.">")
call mkdir(dirname) call mkdir(dirname)
call s:RecordInVar(home,"rmdir('".dirname."')")
endif endif
endwhile endwhile
endif endif
@@ -233,6 +268,7 @@ fun! vimball#Vimball(really)
" call Decho("exe w! ".fnamepath) " call Decho("exe w! ".fnamepath)
exe "silent w! ".fnamepath exe "silent w! ".fnamepath
echo "wrote ".fnamepath echo "wrote ".fnamepath
call s:RecordInVar(home,"call delete('".fnamepath."')")
endif endif
" return to tab with vimball " return to tab with vimball
@@ -242,7 +278,7 @@ fun! vimball#Vimball(really)
" set up help if its a doc/*.txt file " set up help if its a doc/*.txt file
" call Decho("didhelp<".didhelp."> fname<".fname.">") " call Decho("didhelp<".didhelp."> fname<".fname.">")
if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.txt$' if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.txt$'
let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','e') let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','')
" call Decho("didhelp<".didhelp.">") " call Decho("didhelp<".didhelp.">")
endif endif
@@ -255,7 +291,7 @@ fun! vimball#Vimball(really)
" set up help " set up help
" call Decho("about to set up help: didhelp<".didhelp.">") " call Decho("about to set up help: didhelp<".didhelp.">")
if didhelp != "" if didhelp != ""
let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','ge'),' ') let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','g'),' ')
" call Decho("exe helptags ".htpath) " call Decho("exe helptags ".htpath)
exe "helptags ".htpath exe "helptags ".htpath
echo "did helptags" echo "did helptags"
@@ -267,6 +303,9 @@ fun! vimball#Vimball(really)
let filecnt= filecnt + 1 let filecnt= filecnt + 1
endwhile endwhile
" record actions in <.VimballRecord>
call s:RecordInFile(home)
" restore events, delete tab and buffer " restore events, delete tab and buffer
exe "tabn ".vbtabnr exe "tabn ".vbtabnr
setlocal nomod bh=wipe setlocal nomod bh=wipe
@@ -275,7 +314,76 @@ fun! vimball#Vimball(really)
call s:RestoreSettings() call s:RestoreSettings()
call s:ChgDir(curdir) call s:ChgDir(curdir)
" call Dret("Vimball") " call Dret("vimball#Vimball")
endfun
" ---------------------------------------------------------------------
" vimball#RmVimball: remove any files, remove any directories made by any {{{2
" previous vimball extraction based on a file of the current
" name.
" Usage: RmVimball (assume current file is a vimball; remove)
" RmVimball vimballname
fun! vimball#RmVimball(...)
" call Dfunc("vimball#RmVimball() a:0=".a:0)
if exists("g:vimball_norecord")
" call Dret("vimball#RmVimball : (g:vimball_norecord)")
return
endif
let eikeep= &ei
set ei=all
" call Decho("turned off all events")
if a:0 == 0
let curfile= '^'.expand("%:tr")
else
if a:1 =~ '[\/]'
call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]")
" call Dret("vimball#RmVimball : suspect a:1<".a:1.">")
return
endif
let curfile= a:1
endif
if curfile !~ '.vba$'
let curfile= curfile.".vba: "
else
let curfile= curfile.": "
endif
if a:0 >= 2
let home= expand(a:2)
else
let home= s:VimballHome()
endif
let curdir = getcwd()
" call Decho("home <".home.">")
" call Decho("curfile<".curfile.">")
" call Decho("curdir <".curdir.">")
call s:ChgDir(home)
if filereadable(".VimballRecord")
" call Decho(".VimballRecord is readable")
" call Decho("curfile<".curfile.">")
keepalt keepjumps 1split
silent! keepalt keepjumps e .VimballRecord
let keepsrch= @/
if search(curfile,'cw')
let exestring= substitute(getline("."),curfile,'','')
" call Decho("exe ".exestring)
silent! keepalt keepjumps exe exestring
silent! keepalt keepjumps d
else
" call Decho("unable to find <".curfile."> in .VimballRecord")
endif
silent! keepalt keepjumps g/^\s*$/d
silent! keepalt keepjumps wq!
let @/= keepsrch
endif
call s:ChgDir(curdir)
" restoring events
" call Decho("restoring events")
let &ei= eikeep
" call Dret("vimball#RmVimball")
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
@@ -288,24 +396,59 @@ fun! vimball#Decompress(fname)
exe "!gunzip ".a:fname exe "!gunzip ".a:fname
let fname= substitute(a:fname,'\.gz$','','') let fname= substitute(a:fname,'\.gz$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg("Source this file to extract it! (:so %)") call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
elseif expand("%") =~ '.*\.bz2' && executable("bunzip2") elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
exe "!bunzip2 ".a:fname exe "!bunzip2 ".a:fname
let fname= substitute(a:fname,'\.bz2$','','') let fname= substitute(a:fname,'\.bz2$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg("Source this file to extract it! (:so %)") call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
elseif expand("%") =~ '.*\.zip' && executable("unzip") elseif expand("%") =~ '.*\.zip' && executable("unzip")
exe "!unzip ".a:fname exe "!unzip ".a:fname
let fname= substitute(a:fname,'\.zip$','','') let fname= substitute(a:fname,'\.zip$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg("Source this file to extract it! (:so %)") call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
endif endif
set noma bt=nofile fmr=[[[,]]] fdm=marker
" call Dret("Decompress") " call Dret("Decompress")
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" ChgDir: change directory (in spite of Windoze) {{{2 " vimball#ShowMesg: {{{2
fun! vimball#ShowMesg(level,msg)
" call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
let rulerkeep = &ruler
let showcmdkeep = &showcmd
set noruler noshowcmd
redraw!
if &fo =~ '[ta]'
echomsg "***vimball*** " a:msg
else
if a:level == s:WARNING || a:level == s:USAGE
echohl WarningMsg
elseif a:level == s:ERROR
echohl Error
endif
echomsg "***vimball*** " a:msg
echohl None
endif
if a:level != s:USAGE
call inputsave()|let ok= input("Press <cr> to continue")|call inputrestore()
endif
let &ruler = rulerkeep
let &showcmd = showcmdkeep
" call Dret("vimball#ShowMesg")
endfun
" ---------------------------------------------------------------------
let &cpo= s:keepcpo
unlet s:keepcpo
" =====================================================================
" s:ChgDir: change directory (in spite of Windoze) {{{2
fun! s:ChgDir(newdir) fun! s:ChgDir(newdir)
" call Dfunc("ChgDir(newdir<".a:newdir.">)") " call Dfunc("ChgDir(newdir<".a:newdir.">)")
if (has("win32") || has("win95") || has("win64") || has("win16")) if (has("win32") || has("win95") || has("win64") || has("win16"))
@@ -317,11 +460,11 @@ fun! s:ChgDir(newdir)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Path: {{{2 " s:Path: prepend and append quotes, do escaping, as necessary {{{2
fun! s:Path(cmd,quote) fun! s:Path(cmd,quote)
" call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">)") " call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">)")
if (has("win32") || has("win95") || has("win64") || has("win16")) if (has("win32") || has("win95") || has("win64") || has("win16"))
let cmdpath= a:quote.substitute(a:cmd,'/','\\','ge').a:quote let cmdpath= a:quote.substitute(a:cmd,'/','\\','g').a:quote
else else
let cmdpath= a:quote.a:cmd.a:quote let cmdpath= a:quote.a:cmd.a:quote
endif endif
@@ -333,16 +476,98 @@ fun! s:Path(cmd,quote)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" vimball#ShowMesg: {{{2 " s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2
fun! vimball#ShowMesg(msg) fun! s:RecordInVar(home,cmd)
" call Dfunc("vimball#ShowMesg(msg<".a:msg.">)") " call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)")
let ich= 1 if a:cmd =~ '^rmdir'
echohl WarningMsg | echo a:msg | echohl None " if !exists("s:recorddir")
while ich < &ch " let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
echo " " " else
let ich= ich + 1 " let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
endwhile " endif
" call Dret("vimball#ShowMesg") " call Decho("recorddir=".s:recorddir)
elseif !exists("s:recordfile")
let s:recordfile= a:cmd
" call Decho("recordfile=".s:recordfile)
else
let s:recordfile= s:recordfile."|".a:cmd
" call Decho("recordfile=".s:recordfile)
endif
" call Dret("RecordInVar")
endfun
" ---------------------------------------------------------------------
" s:RecordInFile: {{{2
fun! s:RecordInFile(home)
" call Dfunc("RecordInFile()")
if exists("g:vimball_norecord")
" call Dret("RecordInFile : (g:vimball_norecord)")
return
endif
if exists("s:recordfile") || exists("s:recorddir")
let curdir= getcwd()
call s:ChgDir(a:home)
keepalt keepjumps 1split
let cmd= expand("%:tr").": "
silent! keepalt keepjumps e .VimballRecord
$
if exists("s:recordfile") && exists("s:recorddir")
let cmd= cmd.s:recordfile."|".s:recorddir
elseif exists("s:recorddir")
let cmd= cmd.s:recorddir
elseif exists("s:recordfile")
let cmd= cmd.s:recordfile
else
" call Dret("RecordInFile")
return
endif
keepalt keepjumps put=cmd
silent! keepalt keepjumps g/^\s*$/d
silent! keepalt keepjumps wq!
call s:ChgDir(curdir)
if exists("s:recorddir") |unlet s:recorddir |endif
if exists("s:recordfile")|unlet s:recordfile|endif
else
" call Decho("s:record[file|dir] doesn't exist")
endif
" call Dret("RecordInFile")
endfun
" ---------------------------------------------------------------------
" s:Rmdir: {{{2
"fun! s:Rmdir(dirname)
"" call Dfunc("s:Rmdir(dirname<".a:dirname.">)")
" if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
" call system("del ".a:dirname)
" else
" call system("rmdir ".a:dirname)
" endif
"" call Dret("s:Rmdir")
"endfun
" ---------------------------------------------------------------------
" s:VimballHome: determine/get home directory path (usually from rtp) {{{2
fun! s:VimballHome()
" call Dfunc("VimballHome()")
if exists("g:vimball_home")
let home= g:vimball_home
else
" go to vim plugin home
for home in split(&rtp,',') + ['']
if isdirectory(home) && filewritable(home) | break | endif
endfor
if home == ""
" just pick the first directory
let home= substitute(&rtp,',.*$','','')
endif
if (has("win32") || has("win95") || has("win64") || has("win16"))
let home= substitute(home,'/','\\','g')
endif
endif
" call Dret("VimballHome <".home.">")
return home
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
@@ -358,12 +583,14 @@ fun! s:SaveSettings()
let s:fenkeep = &fen let s:fenkeep = &fen
let s:hidkeep = &hidden let s:hidkeep = &hidden
let s:ickeep = &ic let s:ickeep = &ic
let s:lzkeep = &lz
let s:pmkeep = &pm
let s:repkeep = &report let s:repkeep = &report
let s:vekeep = &ve let s:vekeep = &ve
if exists("&acd") if exists("&acd")
set ei=all ve=all noacd nofen noic report=999 nohid set ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm=
else else
set ei=all ve=all nofen noic report=999 nohid set ei=all ve=all nofen noic report=999 nohid bt= ma lz pm=
endif endif
" call Dret("SaveSettings") " call Dret("SaveSettings")
endfun endfun
@@ -376,28 +603,28 @@ fun! s:RestoreSettings()
if exists("&acd") if exists("&acd")
let &acd = s:acdkeep let &acd = s:acdkeep
endif endif
let &ei = s:eikeep
let &fen = s:fenkeep let &fen = s:fenkeep
let &hidden = s:hidkeep let &hidden = s:hidkeep
let &ic = s:ickeep let &ic = s:ickeep
let &lz = s:lzkeep
let &pm = s:pmkeep
let &report = s:repkeep let &report = s:repkeep
let &ve = s:vekeep let &ve = s:vekeep
let &ei = s:eikeep
if s:makeep[0] != 0 if s:makeep[0] != 0
" restore mark a " restore mark a
" call Decho("restore mark-a: makeep=".string(makeep)) " call Decho("restore mark-a: makeep=".string(makeep))
call setpos("'a",s:makeep) call setpos("'a",s:makeep)
endif endif
if exists("&acd") if exists("&acd")
unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep
else else
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep
endif endif
set bt=nofile noma
" call Dret("RestoreSettings") " call Dret("RestoreSettings")
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
let &cpo= s:keepcpo
unlet s:keepcpo
" =====================================================================
" Modelines: {{{1 " Modelines: {{{1
" vim: fdm=marker " vim: fdm=marker

View File

@@ -0,0 +1,130 @@
" Author: Thomas Barthel
" Last change: 2007 May 8
let g:xmldata_xsd = {
\ 'schema': [
\ [ 'include', 'import', 'redefine', 'annotation', 'simpleType', 'complexType', 'element', 'attribute', 'attributeGroup', 'group', 'notation', 'annotation'],
\ { 'targetNamespace' : [], 'version' : [], 'xmlns' : [], 'finalDefault' : [], 'blockDefault' : [], 'id' : [], 'elementFormDefault' : [], 'attributeFormDefault' : [], 'xml:lang' : [] }],
\ 'redefine' : [
\ ['annotation', 'simpleType', 'complexType', 'attributeGroup', 'group'],
\ {'schemaLocation' : [], 'id' : []} ],
\ 'include' : [
\ ['annotation'],
\ {'namespace' : [], 'id' : []} ],
\ 'import' : [
\ ['annotation'],
\ {'namespace' : [], 'schemaLocation' : [], 'id' : []} ],
\ 'complexType' : [
\ ['annotation', 'simpleContent', 'complexContent', 'all', 'choice', 'sequence', 'group', 'attribute', 'attributeGroup', 'anyAttribute'],
\ {'name' : [], 'id' : [], 'abstract' : [], 'final' : [], 'block' : [], 'mixed' : []} ],
\ 'complexContent' : [
\ ['annotation', 'restriction', 'extension'],
\ {'mixed' : [], 'id' : [] } ],
\ 'simpleType' : [
\ ['annotation', 'restriction', 'list', 'union'],
\ {'name' : [], 'final' : [], 'id' : []} ],
\ 'simpleContent' : [
\ ['annotation', 'restriction', 'extension'],
\ {'id' : []} ],
\ 'element' : [
\ ['annotation', 'complexType', 'simpleType', 'unique', 'key', 'keyref'],
\ {'name' : [], 'id' : [], 'ref' : [], 'type' : [], 'minOccurs' : [], 'maxOccurs' : [], 'nillable' : [], 'substitutionGroup' : [], 'abstract' : [], 'final' : [], 'block' : [], 'default' : [], 'fixed' : [], 'form' : []} ],
\ 'attribute' : [
\ ['annotation', 'simpleType'],
\ {'name' : [], 'id' : [], 'ref' : [], 'type' : [], 'use' : [], 'default' : [], 'fixed' : [], 'form' : []} ],
\ 'group' : [
\ ['annotation', 'all', 'choice', 'sequence'],
\ {'name' : [], 'ref' : [], 'minOccurs' : [], 'maxOccurs' : [], 'id' : []} ],
\ 'choice' : [
\ ['annotation', 'element', 'group', 'choice', 'sequence', 'any'],
\ {'minOccurs' : [], 'maxOccurs' : [], 'id' : []} ],
\ 'sequence' : [
\ ['annotation', 'element', 'group', 'choice', 'sequence', 'any'],
\ {'minOccurs' : [], 'maxOccurs' : [], 'id' : []} ],
\ 'all' : [
\ ['annotation', 'element'],
\ {'minOccurs' : [], 'maxOccurs' : [], 'id' : []} ],
\ 'any' : [
\ ['annotation'],
\ {'namespace' : [], 'processContents' : [], 'minOccurs' : [], 'maxOccurs' : [], 'id' : []} ],
\ 'unique' : [
\ ['annotation', 'selector', 'field'],
\ {'name' : [], 'id' : []} ],
\ 'key' : [
\ ['annotation', 'selector', 'field'],
\ {'name' : [], 'id' : []} ],
\ 'keyref' : [
\ ['annotation', 'selector', 'field'],
\ {'name' : [], 'refer' : [], 'id' : []} ],
\ 'selector' : [
\ ['annotation'],
\ {'xpath' : [], 'id' : []} ],
\ 'field' : [
\ ['annotation'],
\ {'xpath' : [], 'id' : []} ],
\ 'restriction' : [
\ ['annotation', 'simpleType', 'minExclusive', 'maxExclusive', 'minInclusive', 'maxInclusive', 'totalDigits', 'fractionDigits', 'length', 'minLength', 'maxLength', 'enumeration', 'whiteSpace', 'pattern'],
\ {'base' : [], 'id' : []} ],
\ 'minExclusive' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'maxExclusive' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'minInclusive' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'maxInclusive' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'totalDigits' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'fractionDigits' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'length' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'minLength' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'maxLength' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'enumeration' : [
\ ['annotation'],
\ {'value' : [], 'id' : []}],
\ 'whiteSpace' : [
\ ['annotation'],
\ {'value' : [], 'id' : [], 'fixed' : []}],
\ 'pattern' : [
\ ['annotation'],
\ {'value' : [], 'id' : []}],
\ 'extension' : [
\ ['annotation', 'all', 'choice', 'sequence', 'group', 'attribute', 'attributeGroup', 'anyAttribute'],
\ {'base' : [], 'id' : []} ],
\ 'attributeGroup' : [
\ ['annotation', 'attribute', 'attributeGroup', 'anyAttribute'],
\ {'name' : [], 'id' : [], 'ref' : []} ],
\ 'anyAttribute' : [
\ ['annotation'],
\ {'namespace' : [], 'processContents' : [], 'id' : []} ],
\ 'list' : [
\ ['annotation', 'simpleType'],
\ {'itemType' : [], 'id' : []} ],
\ 'union' : [
\ ['annotation', 'simpleType'],
\ {'id' : [], 'memberTypes' : []} ],
\ 'notation' : [
\ ['annotation'],
\ {'name' : [], 'id' : [], 'public' : [], 'system' : []} ],
\ 'annotation' : [
\ ['appinfo', 'documentation'],
\ {} ],
\ 'appinfo' : [
\ [],
\ {'source' : [], 'id' : []} ],
\ 'documentation' : [
\ [],
\ {'source' : [], 'id' : [], 'xml' : []} ]
\ }

View File

@@ -1,7 +1,9 @@
" Author: Mikolaj Machowski, Thomas Bartel
" Last change: 2007 May 8
let g:xmldata_xsl = { let g:xmldata_xsl = {
\ 'apply-imports' : [[], {}], \ 'apply-imports' : [[], {}],
\ 'apply-templates' : [['sort', 'with-param'], {'select' : [], 'mode' : []}], \ 'apply-templates' : [['sort', 'with-param'], {'select' : [], 'mode' : []}],
\ 'attribute' : [[], {'name' : [], 'namespace' : []}], \ 'attribute' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'name' : [], 'namespace' : []}],
\ 'attribute-set' : [['attribute'], {'name' : [], 'use-attribute-sets' : []}], \ 'attribute-set' : [['attribute'], {'name' : [], 'use-attribute-sets' : []}],
\ 'call-template' : [['with-param'], {'name' : []}], \ 'call-template' : [['with-param'], {'name' : []}],
\ 'choose' : [['when', 'otherwise'], {}], \ 'choose' : [['when', 'otherwise'], {}],
@@ -9,10 +11,10 @@ let g:xmldata_xsl = {
\ 'copy' : [[], {'use-attribute-sets' : []}], \ 'copy' : [[], {'use-attribute-sets' : []}],
\ 'copy-of' : [[], {'select' : []}], \ 'copy-of' : [[], {'select' : []}],
\ 'decimal-format' : [[], {'name' : [], 'decimal-separator' : [], 'grouping-separator' : [], 'infinity' : [], 'minus-sign' : [], 'NaN' : [], 'percent' : [], 'per-mille' : [], 'zero-digit' : [], 'digit' : [], 'pattern-separator' : []}], \ 'decimal-format' : [[], {'name' : [], 'decimal-separator' : [], 'grouping-separator' : [], 'infinity' : [], 'minus-sign' : [], 'NaN' : [], 'percent' : [], 'per-mille' : [], 'zero-digit' : [], 'digit' : [], 'pattern-separator' : []}],
\ 'element' : [[], {'name' : [], 'namespace' : [], 'use-attribute-sets' : []}], \ 'element' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'name' : [], 'namespace' : [], 'use-attribute-sets' : []}],
\ 'fallback' : [[], {}], \ 'fallback' : [[], {}],
\ 'for-each' : [['sort'], {'select' : []}], \ 'for-each' : [['sort'], {'select' : []}],
\ 'if' : [[], {'test' : []}], \ 'if' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'test' : []}],
\ 'import' : [[], {'href' : []}], \ 'import' : [[], {'href' : []}],
\ 'include' : [[], {'href' : []}], \ 'include' : [[], {'href' : []}],
\ 'key' : [[], {'name' : [], 'match' : [], 'use' : []}], \ 'key' : [[], {'name' : [], 'match' : [], 'use' : []}],
@@ -21,17 +23,16 @@ let g:xmldata_xsl = {
\ 'number' : [[], {'level' : ['single', 'multiple', 'any'], 'count' : [], 'from' : [], 'value' : [], 'format' : [], 'lang' : [], 'letter-value' : ['alphabetic', 'traditional'], 'grouping-separator' : [], 'grouping-size' : []}], \ 'number' : [[], {'level' : ['single', 'multiple', 'any'], 'count' : [], 'from' : [], 'value' : [], 'format' : [], 'lang' : [], 'letter-value' : ['alphabetic', 'traditional'], 'grouping-separator' : [], 'grouping-size' : []}],
\ 'otherwise' : [[], {}], \ 'otherwise' : [[], {}],
\ 'output' : [[], {'method' : ['xml', 'html', 'text'], 'version' : [], 'encoding' : [], 'omit-xml-declaration' : ['yes', 'no'], 'standalone' : ['yes', 'no'], 'doctype-public' : [], 'doctype-system' : [], 'cdata-section-elements' : [], 'indent' : ['yes', 'no'], 'media-type' : []}], \ 'output' : [[], {'method' : ['xml', 'html', 'text'], 'version' : [], 'encoding' : [], 'omit-xml-declaration' : ['yes', 'no'], 'standalone' : ['yes', 'no'], 'doctype-public' : [], 'doctype-system' : [], 'cdata-section-elements' : [], 'indent' : ['yes', 'no'], 'media-type' : []}],
\ 'param' : [[], {'name' : [], 'select' : []}], \ 'param' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'name' : [], 'select' : []}],
\ 'preserve-space' : [[], {'elements' : []}], \ 'preserve-space' : [[], {'elements' : []}],
\ 'processing-instruction' : [[], {'name' : []}], \ 'processing-instructionruction' : [[], {'name' : []}],
\ 'sort' : [[], {'select' : [], 'lang' : [], 'data-type' : ['text', 'number'], 'order' : ['ascending', 'descending'], 'case-order' : ['upper-first', 'lower-first']}], \ 'sort' : [[], {'select' : [], 'lang' : [], 'data-type' : ['text', 'number'], 'order' : ['ascending', 'descending'], 'case-order' : ['upper-first', 'lower-first']}],
\ 'strip-space' : [[], {'elements' : []}], \ 'strip-space' : [[], {'elements' : []}],
\ 'stylesheet' : [['import', 'attribute-set', 'decimal-format', 'include', 'key', 'namespace-alias', 'output', 'param', 'preserve-space', 'strip-space', 'template'], {'id' : [], 'extension-element-prefixes' : [], 'version' : []}], \ 'stylesheet' : [['import', 'attribute-set', 'decimal-format', 'include', 'key', 'namespace-alias', 'output', 'param', 'preserve-space', 'strip-space', 'template'], {'id' : [], 'extension-element-prefixes' : [], 'version' : []}],
\ 'template' : [['param'], {'match' : [], 'name' : [], 'priority' : [], 'mode' : []}], \ 'template' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'match' : [], 'name' : [], 'priority' : [], 'mode' : []}],
\ 'text' : [[], {'disable-output-escaping' : ['yes', 'no']}], \ 'text' : [[], {'disable-output-escaping' : ['yes', 'no']}],
\ 'transform' : [['import', 'attribute-set', 'decimal-format', 'include', 'key', 'namespace-alias', 'output', 'param', 'preserve-space', 'strip-space', 'template'], {'id' : [], 'extension-element-prefixes' : [], 'exclude-result-prefixes' : [], 'version' : []}], \ 'transform' : [['import', 'attribute-set', 'decimal-format', 'include', 'key', 'namespace-alias', 'output', 'param', 'preserve-space', 'strip-space', 'template'], {'id' : [], 'extension-element-prefixes' : [], 'exclude-result-prefixes' : [], 'version' : []}],
\ 'value-of' : [[], {'select' : [], 'disable-output-escaping' : ['yes', 'no']}], \ 'value-of' : [[], {'select' : [], 'disable-output-escaping' : ['yes', 'no']}],
\ 'variable' : [[], {'name' : [], 'select' : []}], \ 'variable' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'name' : [], 'select' : []}],
\ 'when' : [[], {'test' : []}], \ 'when' : [[], {'test' : []}],
\ 'with-param' : [[], {'name' : [], 'select' : []}]} \ 'with-param' : [['apply-imports', 'apply-templates', 'attribute', 'call-template', 'choose', 'comment', 'copy', 'copy-of', 'element', 'fallback', 'for-each', 'if', 'message', 'number', 'processing-instruction', 'text', 'value-of', 'variable'], {'name' : [], 'select' : []}]}

View File

@@ -1,7 +1,12 @@
" Vim completion script " Vim completion script
" Language: XML " Language: XML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Apr 30 " Last Change: 2006 Jul 18
" Version: 1.8
"
" Changelog:
" 1.8 - 2006 Jul 18
" - allow for closing of xml tags even when data file isn't available
" This function will create Dictionary with users namespace strings and values " This function will create Dictionary with users namespace strings and values
" canonical (system) names of data files. Names should be lowercase, " canonical (system) names of data files. Names should be lowercase,
@@ -80,7 +85,7 @@ function! xmlcomplete#CompleteTags(findstart, base)
let context_line = getline(curline-i) let context_line = getline(curline-i)
if context_line =~ '<[^>]*$' if context_line =~ '<[^>]*$'
" Yep, this is this line " Yep, this is this line
let context_lines = getline(curline-i, curline) let context_lines = getline(curline-i, curline-1) + [b:compl_context]
let b:compl_context = join(context_lines, ' ') let b:compl_context = join(context_lines, ' ')
break break
elseif context_line =~ '>[^<]*$' || i == curline elseif context_line =~ '>[^<]*$' || i == curline
@@ -106,10 +111,6 @@ function! xmlcomplete#CompleteTags(findstart, base)
return start return start
else else
" There is no connection of namespace and data file. Abandon action
if !exists("g:xmldata_connection") || g:xmldata_connection == {}
return []
endif
" Initialize base return lists " Initialize base return lists
let res = [] let res = []
let res2 = [] let res2 = []
@@ -119,6 +120,17 @@ function! xmlcomplete#CompleteTags(findstart, base)
endif endif
let context = matchstr(b:compl_context, '^<\zs.*') let context = matchstr(b:compl_context, '^<\zs.*')
unlet! b:compl_context unlet! b:compl_context
" There is no connection of namespace and data file.
if !exists("g:xmldata_connection") || g:xmldata_connection == {}
" There is still possibility we may do something - eg. close tag
let b:unaryTagsStack = "base meta link hr br param img area input col"
if context =~ '^\/'
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
return [opentag.">"]
else
return []
endif
endif
" Make entities completion " Make entities completion
if exists("b:entitiescompl") if exists("b:entitiescompl")

View File

@@ -1,9 +1,9 @@
" zip.vim: Handles browsing zipfiles " zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION " AUTOLOAD PORTION
" Date: May 01, 2006 " Date: May 08, 2007
" Version: 9 " Version: 14
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license) " License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code, " Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright " with or without modifications, provided that this copyright
@@ -15,15 +15,34 @@
" of this software. " of this software.
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Initialization: {{{1 " Load Once: {{{1
let s:keepcpo= &cpo let s:keepcpo= &cpo
set cpo&vim set cpo&vim
if exists("g:loaded_zip") if &cp || exists("g:loaded_zip") || v:version < 700
finish finish
endif endif
let g:loaded_zip = "v9" let g:loaded_zip = "v14"
let s:zipfile_escape = ' ?&;\' let s:zipfile_escape = ' ?&;\'
let s:ERROR = 2
let s:WARNING = 1
let s:NOTE = 0
" ---------------------------------------------------------------------
" Global Values: {{{1
if !exists("g:zip_shq")
if has("unix")
let g:zip_shq= "'"
else
let g:zip_shq= '"'
endif
endif
if !exists("g:zip_zipcmd")
let g:zip_zipcmd= "zip"
endif
if !exists("g:zip_unzipcmd")
let g:zip_unzipcmd= "unzip"
endif
" ---------------- " ----------------
" Functions: {{{1 " Functions: {{{1
@@ -37,9 +56,10 @@ fun! zip#Browse(zipfile)
set report=10 set report=10
" sanity checks " sanity checks
if !executable("unzip") if !executable(g:zip_unzipcmd)
redraw!
echohl Error | echo "***error*** (zip#Browse) unzip not available on your system" echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("zip#Browse") " call Dret("zip#Browse")
return return
@@ -47,8 +67,9 @@ fun! zip#Browse(zipfile)
if !filereadable(a:zipfile) if !filereadable(a:zipfile)
if a:zipfile !~# '^\a\+://' if a:zipfile !~# '^\a\+://'
" if its an url, don't complain, let url-handlers such as vim do its thing " if its an url, don't complain, let url-handlers such as vim do its thing
redraw!
echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif endif
let &report= repkeep let &report= repkeep
" call Dret("zip#Browse : file<".a:zipfile."> not readable") " call Dret("zip#Browse : file<".a:zipfile."> not readable")
@@ -58,7 +79,7 @@ fun! zip#Browse(zipfile)
if &ma != 1 if &ma != 1
set ma set ma
endif endif
let w:zipfile= a:zipfile let b:zipfile= a:zipfile
setlocal noswapfile setlocal noswapfile
setlocal buftype=nofile setlocal buftype=nofile
@@ -75,11 +96,12 @@ fun! zip#Browse(zipfile)
0d 0d
$ $
" call Decho("exe silent r! unzip -l '".a:zipfile."'") " call Decho("exe silent r! ".g:zip_unzipcmd." -l ".s:QuoteFileDir(a:zipfile))
exe "silent r! unzip -l '".a:zipfile."'" exe "silent r! ".g:zip_unzipcmd." -l ".s:QuoteFileDir(a:zipfile)
if v:shell_error != 0 if v:shell_error != 0
redraw!
echohl WarningMsg | echo "***warning*** (zip#Browse) ".a:zipfile." is not a zip file" | echohl None echohl WarningMsg | echo "***warning*** (zip#Browse) ".a:zipfile." is not a zip file" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
silent %d silent %d
let eikeep= &ei let eikeep= &ei
set ei=BufReadCmd,FileReadCmd set ei=BufReadCmd,FileReadCmd
@@ -109,7 +131,7 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" ZipBrowseSelect: {{{2 " ZipBrowseSelect: {{{2
fun! s:ZipBrowseSelect() fun! s:ZipBrowseSelect()
" call Dfunc("ZipBrowseSelect() zipfile<".w:zipfile."> curfile<".expand("%").">") " call Dfunc("ZipBrowseSelect() zipfile<".b:zipfile."> curfile<".expand("%").">")
let repkeep= &report let repkeep= &report
set report=10 set report=10
let fname= getline(".") let fname= getline(".")
@@ -121,8 +143,9 @@ fun! s:ZipBrowseSelect()
return return
endif endif
if fname =~ '/$' if fname =~ '/$'
redraw!
echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("ZipBrowseSelect") " call Dret("ZipBrowseSelect")
return return
@@ -131,7 +154,7 @@ fun! s:ZipBrowseSelect()
" call Decho("fname<".fname.">") " call Decho("fname<".fname.">")
" get zipfile to the new-window " get zipfile to the new-window
let zipfile= substitute(w:zipfile,'.zip$','','e') let zipfile = b:zipfile
let curfile= expand("%") let curfile= expand("%")
" call Decho("zipfile<".zipfile.">") " call Decho("zipfile<".zipfile.">")
" call Decho("curfile<".curfile.">") " call Decho("curfile<".curfile.">")
@@ -160,12 +183,13 @@ fun! zip#Read(fname,mode)
else else
let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','') let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','') let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
let fname = substitute(fname, '[', '[[]', 'g')
endif endif
" call Decho("zipfile<".zipfile.">") " call Decho("zipfile<".zipfile.">")
" call Decho("fname <".fname.">") " call Decho("fname <".fname.">")
" call Decho("exe r! unzip -p '".zipfile."' '".fname."'") " call Decho("exe r! ".g:zip_unzipcmd." -p ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname))
exe "silent r! unzip -p '".zipfile."' '".fname."'" exe "silent r! ".g:zip_unzipcmd." -p ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname)
" cleanup " cleanup
0d 0d
@@ -183,16 +207,18 @@ fun! zip#Write(fname)
set report=10 set report=10
" sanity checks " sanity checks
if !executable("zip") if !executable(g:zip_zipcmd)
redraw!
echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("zip#Write") " call Dret("zip#Write")
return return
endif endif
if !exists("*mkdir") if !exists("*mkdir")
redraw!
echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("zip#Write") " call Dret("zip#Write")
return return
@@ -208,15 +234,11 @@ fun! zip#Write(fname)
call mkdir(tmpdir,"p") call mkdir(tmpdir,"p")
" attempt to change to the indicated directory " attempt to change to the indicated directory
try if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
exe "cd ".escape(tmpdir,' \')
catch /^Vim\%((\a\+)\)\=:E344/
echohl Error | echo "***error*** (zip#Write) cannot cd to temporary directory" | Echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep let &report= repkeep
" call Dret("zip#Write") " call Dret("zip#Write")
return return
endtry endif
" call Decho("current directory now: ".getcwd()) " call Decho("current directory now: ".getcwd())
" place temporary files under .../_ZIPVIM_/ " place temporary files under .../_ZIPVIM_/
@@ -255,21 +277,26 @@ fun! zip#Write(fname)
let zipfile = substitute(system("cygpath ".zipfile),'\n','','e') let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
endif endif
" call Decho("zip -u '".zipfile.".zip' '".fname."'") if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
call system("zip -u '".zipfile.".zip' '".fname."'") let fname = substitute(fname, '[', '[[]', 'g')
endif
" call Decho(g:zip_zipcmd." -u ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname))
call system(g:zip_zipcmd." -u ".s:QuoteFileDir(zipfile)." ".s:QuoteFileDir(fname))
if v:shell_error != 0 if v:shell_error != 0
redraw!
echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
elseif s:zipfile_{winnr()} =~ '^\a\+://' elseif s:zipfile_{winnr()} =~ '^\a\+://'
" support writing zipfiles across a network " support writing zipfiles across a network
let netzipfile= s:zipfile_{winnr()} let netzipfile= s:zipfile_{winnr()}
" call Decho("handle writing <".zipfile.".zip> across network as <".netzipfile.">") " call Decho("handle writing <".zipfile."> across network as <".netzipfile.">")
1split|enew 1split|enew
let binkeep= &binary let binkeep= &binary
let eikeep = &ei let eikeep = &ei
set binary ei=all set binary ei=all
exe "e! ".zipfile.".zip" exe "e! ".zipfile
call netrw#NetWrite(netzipfile) call netrw#NetWrite(netzipfile)
let &ei = eikeep let &ei = eikeep
let &binary = binkeep let &binary = binkeep
@@ -280,25 +307,61 @@ fun! zip#Write(fname)
" cleanup and restore current directory " cleanup and restore current directory
cd .. cd ..
call s:Rmdir("_ZIPVIM_") call s:Rmdir("_ZIPVIM_")
exe "cd ".escape(curdir,' \') call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
call s:Rmdir(tmpdir)
setlocal nomod setlocal nomod
let &report= repkeep let &report= repkeep
" call Dret("zip#Write") " call Dret("zip#Write")
endfun endfun
" ---------------------------------------------------------------------
" QuoteFileDir: {{{2
fun! s:QuoteFileDir(fname)
" call Dfunc("QuoteFileDir(fname<".a:fname.">)")
" call Dret("QuoteFileDir")
return g:zip_shq.a:fname.g:zip_shq
endfun
" ---------------------------------------------------------------------
" ChgDir: {{{2
fun! s:ChgDir(newdir,errlvl,errmsg)
" call Dfunc("ChgDir(newdir<".a:newdir."> errlvl=".a:errlvl." errmsg<".a:errmsg.">)")
if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
let newdir= escape(a:newdir,' ')
else
let newdir= escape(a:newdir,'\ ')
endif
try
exe "cd ".newdir
catch /^Vim\%((\a\+)\)\=:E344/
redraw!
if a:errlvl == s:NOTE
echo "***note*** ".a:errmsg
elseif a:errlvl == s:WARNING
echohl WarningMsg | echo "***warning*** ".a:errmsg | echohl NONE
elseif a:errlvl == s:ERROR
echohl Error | echo "***error*** ".a:errmsg | echohl NONE
endif
" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("ChgDir 1")
return 1
endtry
" call Dret("ChgDir 0")
return 0
endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Rmdir: {{{2 " Rmdir: {{{2
fun! s:Rmdir(fname) fun! s:Rmdir(fname)
" call Dfunc("Rmdir(fname<".a:fname.">)") " call Dfunc("Rmdir(fname<".a:fname.">)")
if has("unix") if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
call system("/bin/rm -rf ".a:fname) call system("rmdir /S/Q ".s:QuoteFileDir(a:fname))
elseif has("win32") || has("win95") || has("win64") || has("win16") else
if &shell =~? "sh$" call system("/bin/rm -rf ".s:QuoteFileDir(a:fname))
call system("/bin/rm -rf ".a:fname)
else
call system("del /S ".a:fname)
endif
endif endif
" call Dret("Rmdir") " call Dret("Rmdir")
endfun endfun

View File

@@ -2,9 +2,9 @@
" vim: tw=0 ts=4 sw=4 " vim: tw=0 ts=4 sw=4
" Vim color file " Vim color file
" Maintainer: Steven Vertigan <steven@vertigan.wattle.id.au> " Maintainer: Steven Vertigan <steven@vertigan.wattle.id.au>
" Last Change: 2003 May 11 " Last Change: 2006 Sep 23
" Revision #4: Support for new "Underline" group. Removed superfluous html " Revision #5: Switch main text from white to yellow for easier contrast,
" formatting. " fixed some problems with terminal backgrounds.
set background=dark set background=dark
hi clear hi clear
@@ -12,66 +12,44 @@ if exists("syntax_on")
syntax reset syntax reset
endif endif
let g:colors_name = "blue" let g:colors_name = "blue"
hi Normal guifg=white guibg=darkBlue hi Normal guifg=yellow guibg=darkBlue ctermfg=yellow ctermbg=darkBlue
hi Normal ctermfg=white ctermbg=darkBlue
hi NonText guifg=magenta ctermfg=lightMagenta hi NonText guifg=magenta ctermfg=lightMagenta
hi comment guifg=gray gui=bold hi comment guifg=gray ctermfg=gray ctermbg=darkBlue gui=bold
hi comment ctermfg=gray
hi constant guifg=cyan ctermfg=cyan hi constant guifg=cyan ctermfg=cyan
hi identifier guifg=gray ctermfg=gray hi identifier guifg=gray ctermfg=red
hi statement guifg=yellow gui=none ctermfg=yellow hi statement guifg=white ctermfg=white ctermbg=darkBlue gui=none
hi preproc guifg=green ctermfg=green hi preproc guifg=green ctermfg=green
hi type guifg=orange ctermfg=darkYellow hi type guifg=orange ctermfg=lightRed ctermbg=darkBlue
hi special guifg=magenta ctermfg=lightMagenta hi special guifg=magenta ctermfg=lightMagenta ctermbg=darkBlue
hi Underlined guifg=cyan ctermfg=cyan hi Underlined guifg=cyan ctermfg=cyan gui=underline cterm=underline
hi Underlined gui=underline cterm=underline hi label guifg=yellow ctermfg=yellow
hi operator guifg=orange gui=bold ctermfg=lightRed ctermbg=darkBlue
hi ErrorMsg guifg=orange guibg=darkBlue hi ErrorMsg guifg=orange guibg=darkBlue ctermfg=lightRed
hi ErrorMsg ctermfg=lightRed hi WarningMsg guifg=cyan guibg=darkBlue ctermfg=cyan gui=bold
hi WarningMsg guifg=cyan guibg=darkBlue gui=bold hi ModeMsg guifg=yellow gui=NONE ctermfg=yellow
hi WarningMsg ctermfg=cyan hi MoreMsg guifg=yellow gui=NONE ctermfg=yellow
hi ModeMsg guifg=yellow gui=NONE hi Error guifg=red guibg=darkBlue gui=underline ctermfg=red
hi ModeMsg ctermfg=yellow
hi MoreMsg guifg=yellow gui=NONE
hi MoreMsg ctermfg=yellow
hi Error guifg=red guibg=darkBlue gui=underline
hi Error ctermfg=red
hi Todo guifg=black guibg=orange hi Todo guifg=black guibg=orange ctermfg=black ctermbg=darkYellow
hi Todo ctermfg=black ctermbg=darkYellow hi Cursor guifg=black guibg=white ctermfg=black ctermbg=white
hi Cursor guifg=black guibg=white hi Search guifg=black guibg=orange ctermfg=black ctermbg=darkYellow
hi Cursor ctermfg=black ctermbg=white hi IncSearch guifg=black guibg=yellow ctermfg=black ctermbg=darkYellow
hi Search guifg=black guibg=orange hi LineNr guifg=cyan ctermfg=cyan
hi Search ctermfg=black ctermbg=darkYellow
hi IncSearch guifg=black guibg=yellow
hi IncSearch ctermfg=black ctermbg=darkYellow
hi LineNr guifg=pink ctermfg=lightMagenta
hi title guifg=white gui=bold cterm=bold hi title guifg=white gui=bold cterm=bold
hi StatusLineNC gui=NONE guifg=black guibg=blue hi StatusLineNC gui=NONE guifg=black guibg=blue ctermfg=black ctermbg=blue
hi StatusLineNC ctermfg=black ctermbg=blue hi StatusLine gui=bold guifg=cyan guibg=blue ctermfg=cyan ctermbg=blue
hi StatusLine gui=bold guifg=cyan guibg=blue hi VertSplit gui=none guifg=blue guibg=blue ctermfg=blue ctermbg=blue
hi StatusLine ctermfg=cyan ctermbg=blue
hi label guifg=yellow ctermfg=yellow hi Visual term=reverse ctermfg=black ctermbg=darkCyan guifg=black guibg=darkCyan
hi operator guifg=orange gui=bold ctermfg=darkYellow
hi clear Visual
hi Visual term=reverse
hi Visual ctermfg=black ctermbg=darkCyan
hi Visual guifg=black guibg=darkCyan
hi DiffChange guibg=darkGreen guifg=black hi DiffChange guibg=darkGreen guifg=black ctermbg=darkGreen ctermfg=black
hi DiffChange ctermbg=darkGreen ctermfg=black hi DiffText guibg=olivedrab guifg=black ctermbg=lightGreen ctermfg=black
hi DiffText guibg=olivedrab guifg=black hi DiffAdd guibg=slateblue guifg=black ctermbg=blue ctermfg=black
hi DiffText ctermbg=lightGreen ctermfg=black hi DiffDelete guibg=coral guifg=black ctermbg=cyan ctermfg=black
hi DiffAdd guibg=slateblue guifg=black
hi DiffAdd ctermbg=blue ctermfg=black
hi DiffDelete guibg=coral guifg=black
hi DiffDelete ctermbg=cyan ctermfg=black
hi Folded guibg=orange guifg=black hi Folded guibg=orange guifg=black ctermbg=yellow ctermfg=black
hi Folded ctermbg=yellow ctermfg=black hi FoldColumn guibg=gray30 guifg=black ctermbg=gray ctermfg=black
hi FoldColumn guibg=gray30 guifg=black
hi FoldColumn ctermbg=gray ctermfg=black
hi cIf0 guifg=gray ctermfg=gray hi cIf0 guifg=gray ctermfg=gray

View File

@@ -2,7 +2,7 @@
" vim: tw=0 ts=4 sw=4 " vim: tw=0 ts=4 sw=4
" Vim color file " Vim color file
" Maintainer: Ron Aaron <ron@ronware.org> " Maintainer: Ron Aaron <ron@ronware.org>
" Last Change: 2006 Mar 26 " Last Change: 2006 Dec 10
hi clear hi clear
set background=dark set background=dark
@@ -13,11 +13,11 @@ let g:colors_name = "koehler"
hi Normal guifg=white guibg=black hi Normal guifg=white guibg=black
hi Scrollbar guifg=darkcyan guibg=cyan hi Scrollbar guifg=darkcyan guibg=cyan
hi Menu guifg=black guibg=cyan hi Menu guifg=black guibg=cyan
hi SpecialKey term=bold cterm=bold ctermfg=darkred guifg=Blue hi SpecialKey term=bold cterm=bold ctermfg=darkred guifg=#cc0000
hi NonText term=bold cterm=bold ctermfg=darkred gui=bold guifg=Blue hi NonText term=bold cterm=bold ctermfg=darkred gui=bold guifg=#cc0000
hi Directory term=bold cterm=bold ctermfg=brown guifg=Blue hi Directory term=bold cterm=bold ctermfg=brown guifg=#cc8000
hi ErrorMsg term=standout cterm=bold ctermfg=grey ctermbg=blue guifg=White guibg=Red hi ErrorMsg term=standout cterm=bold ctermfg=grey ctermbg=red guifg=White guibg=Red
hi Search term=reverse ctermfg=white ctermbg=red guifg=white guibg=Red hi Search term=reverse ctermfg=white ctermbg=red guifg=white guibg=Red
hi MoreMsg term=bold cterm=bold ctermfg=darkgreen gui=bold guifg=SeaGreen hi MoreMsg term=bold cterm=bold ctermfg=darkgreen gui=bold guifg=SeaGreen
hi ModeMsg term=bold cterm=bold gui=bold guifg=White guibg=Blue hi ModeMsg term=bold cterm=bold gui=bold guifg=White guibg=Blue
hi LineNr term=underline cterm=bold ctermfg=darkcyan guifg=Yellow hi LineNr term=underline cterm=bold ctermfg=darkcyan guifg=Yellow
@@ -26,20 +26,20 @@ hi StatusLine term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gu
hi StatusLineNC term=reverse ctermfg=white ctermbg=lightblue guifg=white guibg=blue hi StatusLineNC term=reverse ctermfg=white ctermbg=lightblue guifg=white guibg=blue
hi Title term=bold cterm=bold ctermfg=darkmagenta gui=bold guifg=Magenta hi Title term=bold cterm=bold ctermfg=darkmagenta gui=bold guifg=Magenta
hi Visual term=reverse cterm=reverse gui=reverse hi Visual term=reverse cterm=reverse gui=reverse
hi WarningMsg term=standout cterm=bold ctermfg=darkblue guifg=Red hi WarningMsg term=standout cterm=bold ctermfg=darkred guifg=Red
hi Cursor guifg=bg guibg=Green hi Cursor guifg=bg guibg=Green
hi Comment term=bold cterm=bold ctermfg=cyan guifg=#80a0ff hi Comment term=bold cterm=bold ctermfg=cyan guifg=#80a0ff
hi Constant term=underline cterm=bold ctermfg=magenta guifg=#ffa0a0 hi Constant term=underline cterm=bold ctermfg=magenta guifg=#ffa0a0
hi Special term=bold cterm=bold ctermfg=red guifg=Orange hi Special term=bold cterm=bold ctermfg=red guifg=Orange
hi Identifier term=underline ctermfg=brown guifg=#40ffff hi Identifier term=underline ctermfg=brown guifg=#40ffff
hi Statement term=bold cterm=bold ctermfg=yellow gui=bold guifg=#ffff60 hi Statement term=bold cterm=bold ctermfg=yellow gui=bold guifg=#ffff60
hi PreProc term=underline ctermfg=darkblue guifg=#ff80ff hi PreProc term=underline ctermfg=darkmagenta guifg=#ff80ff
hi Type term=underline cterm=bold ctermfg=lightgreen gui=bold guifg=#60ff60 hi Type term=underline cterm=bold ctermfg=lightgreen gui=bold guifg=#60ff60
hi Error term=reverse ctermfg=darkcyan ctermbg=black guifg=Red guibg=Black hi Error term=reverse ctermfg=darkcyan ctermbg=black guifg=Red guibg=Black
hi Todo term=standout ctermfg=black ctermbg=darkcyan guifg=Blue guibg=Yellow hi Todo term=standout ctermfg=black ctermbg=darkcyan guifg=Blue guibg=Yellow
hi CursorLine term=underline guibg=#555555 hi CursorLine term=underline guibg=#555555 cterm=underline
hi CursorColumn term=underline guibg=#555555 hi CursorColumn term=underline guibg=#555555 cterm=underline
hi MatchParen term=reverse guibg=Blue hi MatchParen term=reverse ctermfg=blue guibg=Blue
hi TabLine term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white hi TabLine term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
hi TabLineFill term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white hi TabLineFill term=bold,reverse cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
hi TabLineSel term=reverse ctermfg=white ctermbg=lightblue guifg=white guibg=blue hi TabLineSel term=reverse ctermfg=white ctermbg=lightblue guifg=white guibg=blue

View File

@@ -1,6 +1,6 @@
" Vim color file " Vim color file
" Maintainer: Thorsten Maerz <info@netztorte.de> " Maintainer: Thorsten Maerz <info@netztorte.de>
" Last Change: 2001 Jul 23 " Last Change: 2006 Dec 07
" grey on black " grey on black
" optimized for TFT panels " optimized for TFT panels
@@ -18,7 +18,7 @@ let g:colors_name = "torte"
" GUI " GUI
highlight Normal guifg=Grey80 guibg=Black highlight Normal guifg=Grey80 guibg=Black
highlight Search guifg=Black guibg=Red gui=bold highlight Search guifg=Black guibg=Red gui=bold
highlight Visual guifg=Grey25 gui=bold highlight Visual guifg=#404040 gui=bold
highlight Cursor guifg=Black guibg=Green gui=bold highlight Cursor guifg=Black guibg=Green gui=bold
highlight Special guifg=Orange highlight Special guifg=Orange
highlight Comment guifg=#80a0ff highlight Comment guifg=#80a0ff
@@ -42,7 +42,7 @@ if has("unix")
if v:version<600 if v:version<600
highlight Normal ctermfg=Grey ctermbg=Black cterm=NONE guifg=Grey80 guibg=Black gui=NONE highlight Normal ctermfg=Grey ctermbg=Black cterm=NONE guifg=Grey80 guibg=Black gui=NONE
highlight Search ctermfg=Black ctermbg=Red cterm=bold guifg=Black guibg=Red gui=bold highlight Search ctermfg=Black ctermbg=Red cterm=bold guifg=Black guibg=Red gui=bold
highlight Visual ctermfg=Black ctermbg=yellow cterm=bold guifg=Grey25 gui=bold highlight Visual ctermfg=Black ctermbg=yellow cterm=bold guifg=#404040 gui=bold
highlight Special ctermfg=LightBlue cterm=NONE guifg=LightBlue gui=NONE highlight Special ctermfg=LightBlue cterm=NONE guifg=LightBlue gui=NONE
highlight Comment ctermfg=Cyan cterm=NONE guifg=LightBlue gui=NONE highlight Comment ctermfg=Cyan cterm=NONE guifg=LightBlue gui=NONE
endif endif

View File

@@ -0,0 +1,54 @@
"------------------------------------------------------------------------------
" Description: Vim Ada/Dec Ada compiler file
" Language: Ada (Dec Ada)
" $Id$
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischik
" $Author$
" $Date$
" Version: 4.2
" $Revision$
" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $
" History: 21.07.2006 MK New Dec Ada
" 15.10.2006 MK Bram's suggestion for runtime integration
" Help Page: compiler-decada
"------------------------------------------------------------------------------
if (exists("current_compiler") &&
\ current_compiler == "decada") ||
\ version < 700
finish
endif
let current_compiler = "decada"
if !exists("g:decada")
let g:decada = decada#New ()
endif
if exists(":CompilerSet") != 2
"
" plugin loaded by other means then the "compiler" command
"
command -nargs=* CompilerSet setlocal <args>
endif
call g:decada.Set_Session ()
execute "CompilerSet makeprg=" . escape (g:decada.Make_Command, ' ')
execute "CompilerSet errorformat=" . escape (g:decada.Error_Format, ' ')
call ada#Map_Menu (
\'Dec Ada.Build',
\'<F7>',
\'call decada.Make ()')
finish " 1}}}
"------------------------------------------------------------------------------
" Copyright (C) 2006 Martin Krischik
"
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
"------------------------------------------------------------------------------
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker

View File

@@ -1,7 +1,7 @@
" Vim compiler file " Vim compiler file
" Compiler: GNU C Compiler " Compiler: GNU C Compiler
" Maintainer: Nikolai Weibull <now@bitwi.se> " Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19 " Latest Revision: 2006-12-20
if exists("current_compiler") if exists("current_compiler")
finish finish
@@ -20,7 +20,13 @@ setlocal errorformat=
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m, \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f', \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f', \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
\%D%*\\a:\ Entering\ directory\ `%f',
\%X%*\\a:\ Leaving\ directory\ `%f',
\%DMaking\ %*\\a\ in\ %f \%DMaking\ %*\\a\ in\ %f
if exists('g:compiler_gcc_ignore_unmatched_lines')
let &errorformat .= ',%-G%.%#'
endif
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save

71
runtime/compiler/gnat.vim Normal file
View File

@@ -0,0 +1,71 @@
"------------------------------------------------------------------------------
" Description: Vim Ada/GNAT compiler file
" Language: Ada (GNAT)
" $Id$
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischik
" $Author$
" $Date$
" Version: 4.2
" $Revision$
" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $
" History: 24.05.2006 MK Unified Headers
" 16.07.2006 MK Ada-Mode as vim-ball
" 15.10.2006 MK Bram's suggestion for runtime integration
" Help Page: compiler-gnat
"------------------------------------------------------------------------------
if (exists("current_compiler") &&
\ current_compiler == "gnat") ||
\ version < 700
finish
endif
let current_compiler = "gnat"
if !exists("g:gnat")
let g:gnat = gnat#New ()
call ada#Map_Menu (
\ 'GNAT.Build',
\ '<F7>',
\ 'call gnat.Make ()')
call ada#Map_Menu (
\ 'GNAT.Pretty Print',
\ ':GnatPretty',
\ 'call gnat.Pretty ()')
call ada#Map_Menu (
\ 'GNAT.Tags',
\ ':GnatTags',
\ 'call gnat.Tags ()')
call ada#Map_Menu (
\ 'GNAT.Find',
\ ':GnatFind',
\ 'call gnat.Find ()')
call ada#Map_Menu (
\ 'GNAT.Set Projectfile\.\.\.',
\ ':SetProject',
\ 'call gnat.Set_Project_File ()')
endif
if exists(":CompilerSet") != 2
"
" plugin loaded by other means then the "compiler" command
"
command -nargs=* CompilerSet setlocal <args>
endif
call g:gnat.Set_Session ()
execute "CompilerSet makeprg=" . escape (g:gnat.Get_Command('Make'), ' ')
execute "CompilerSet errorformat=" . escape (g:gnat.Error_Format, ' ')
finish " 1}}}
"------------------------------------------------------------------------------
" Copyright (C) 2006 Martin Krischik
"
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
"------------------------------------------------------------------------------
" vim: textwidth=0 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker

24
runtime/compiler/mcs.vim Normal file
View File

@@ -0,0 +1,24 @@
" Vim compiler file
" Compiler: Mono C# Compiler
" Maintainer: Jarek Sobiecki <harijari@go2.pl>
" Latest Revision: 2006-06-18
if exists("current_compiler")
finish
endif
let current_compiler = "mcs"
let s:cpo_save = &cpo
set cpo-=C
setlocal errorformat=
\%E%f(%l\\,%c):\ error\ CS%n:%m,
\%W%f(%l\\,%c):\ warning\ CS%n:%m,
\%E%>syntax\ error\\,%m,%Z%f(%l\\,%c):\ error\ CS%n:%m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
\%DMaking\ %*\\a\ in\ %f,
\%G-%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -14,6 +14,7 @@ VIMEXE = vim
include ../../src/auto/config.mk include ../../src/auto/config.mk
DOCS = \ DOCS = \
ada.txt \
arabic.txt \ arabic.txt \
autocmd.txt \ autocmd.txt \
change.txt \ change.txt \
@@ -28,7 +29,6 @@ DOCS = \
farsi.txt \ farsi.txt \
filetype.txt \ filetype.txt \
fold.txt \ fold.txt \
getscript.txt \
gui.txt \ gui.txt \
gui_w16.txt \ gui_w16.txt \
gui_w32.txt \ gui_w32.txt \
@@ -70,6 +70,7 @@ DOCS = \
os_vms.txt \ os_vms.txt \
os_win32.txt \ os_win32.txt \
pattern.txt \ pattern.txt \
pi_getscript.txt \
pi_gzip.txt \ pi_gzip.txt \
pi_netrw.txt \ pi_netrw.txt \
pi_paren.txt \ pi_paren.txt \
@@ -144,6 +145,7 @@ DOCS = \
workshop.txt workshop.txt
HTMLS = \ HTMLS = \
ada.html \
arabic.html \ arabic.html \
autocmd.html \ autocmd.html \
change.html \ change.html \
@@ -158,7 +160,6 @@ HTMLS = \
farsi.html \ farsi.html \
filetype.html \ filetype.html \
fold.html \ fold.html \
getscript.html \
gui.html \ gui.html \
gui_w16.html \ gui_w16.html \
gui_w32.html \ gui_w32.html \
@@ -200,6 +201,7 @@ HTMLS = \
os_vms.html \ os_vms.html \
os_win32.html \ os_win32.html \
pattern.html \ pattern.html \
pi_getscript.html \
pi_gzip.html \ pi_gzip.html \
pi_netrw.html \ pi_netrw.html \
pi_paren.html \ pi_paren.html \
@@ -224,8 +226,8 @@ HTMLS = \
sql.html \ sql.html \
syntax.html \ syntax.html \
tabpage.html \ tabpage.html \
tagsrch.html \
tags.html \ tags.html \
tagsrch.html \
term.html \ term.html \
tips.html \ tips.html \
todo.html \ todo.html \

515
runtime/doc/ada.txt Normal file
View File

@@ -0,0 +1,515 @@
*ada.txt* For Vim version 7.1. Last change: 2007 May 08
ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
ADA *ada.vim*
1. Syntax Highlighting |ft-ada-syntax|
2. Plug-in |ft-ada-plugin|
3. Omni Completion |ft-ada-omni|
3.1 Omni Completion with "gnat xref" |gnat-xref|
3.2 Omni Completion with "ctags" |ada-ctags|
4. Compiler Support |ada-compiler|
4.1 GNAT |compiler-gnat|
4.1 Dec Ada |compiler-decada|
5. References |ada-reference|
5.1 Options |ft-ada-options|
5.2 Functions |ft-ada-functions|
5.3 Commands |ft-ada-commands|
5.4 Variables |ft-ada-variables|
5.5 Constants |ft-ada-constants|
8. Extra Plug-ins |ada-extra-plugins|
==============================================================================
1. Syntax Highlighting ~
*ft-ada-syntax*
This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes
support for objected-programming, protected types, and so on. It handles code
written for the original Ada language ("Ada83", "Ada87", "Ada95") as well,
though code which uses Ada 2005-only keywords will be wrongly colored (such
code should be fixed anyway). For more information about Ada, see
http://www.adapower.com.
The Ada mode handles a number of situations cleanly.
For example, it knows that the "-" in "-5" is a number, but the same character
in "A-5" is an operator. Normally, a "with" or "use" clause referencing
another compilation unit is coloured the same way as C's "#include" is coloured.
If you have "Conditional" or "Repeat" groups coloured differently, then "end
if" and "end loop" will be coloured as part of those respective groups.
You can set these to different colours using vim's "highlight" command (e.g.,
to change how loops are displayed, enter the command ":hi Repeat" followed by
the colour specification; on simple terminals the colour specification
ctermfg=White often shows well).
There are several options you can select in this Ada mode. See|ft-ada-options|
for a complete list.
To enable them, assign a value to the option. For example, to turn one on:
>
> let g:ada_standard_types = 1
>
To disable them use ":unlet". Example:
>
> unlet g:ada_standard_types
You can just use ":" and type these into the command line to set these
temporarily before loading an Ada file. You can make these option settings
permanent by adding the "let" command(s), without a colon, to your "~/.vimrc"
file.
Even on a slow (90Mhz) PC this mode works quickly, but if you find the
performance unacceptable, turn on |g:ada_withuse_ordinary|.
Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is
set.
==============================================================================
2. File type Plug-in ~
*ft-ada-indent* *ft-ada-plugin*
The Ada plug-in provides support for:
- auto indenting (|indent.txt|)
- insert completion (|i_CTRL-N|)
- user completion (|i_CTRL-X_CTRL-U|)
- tag searches (|tagsrch.txt|)
- Quick Fix (|quickfix.txt|)
- backspace handling (|'backspace'|)
- comment handling (|'comments'|, |'commentstring'|)
The plug-in only activates the features of the Ada mode whenever an Ada
files is opened and add adds Ada related entries to the main and pop-up menu.
==============================================================================
3. Omni Completion ~
*ft-ada-omni*
The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either
by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net). The
complete function will automatically detect which tool was used to create the
tags file.
------------------------------------------------------------------------------
3.1 Omni Completion with "gnat xref" ~
*gnat-xref*
GNAT XREF uses the compiler internal informations (ali-files) to produce the
tags file. This has the advantage to be 100% correct and the option of deep
nested analysis. However the code must compile, the generator is quite
slow and the created tags file contains only the basic Ctags informations for
each entry - not enough for some of the more advanced Vim code browser
plug-ins.
NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
output - If nothing is printed then usually the parameters are wrong.
Here some important tips:
1) You need to compile your code first and use the "-aO" option to point to
your .ali files.
2) "gnat xref -v ../Include/adacl.ads" won't work - use the "gnat xref -v
-aI../Include adacl.ads" instead.
3) "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and
then "gnat xref -v *.ad?"
4) Project manager support is completely broken - don't even try "gnat xref
-Padacl.gpr".
5) VIM is faster when the tags file is sorted - use "sort --unique
--ignore-case --output=tags tags" .
6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
the file assorted.
------------------------------------------------------------------------------
3.2 Omni Completion with "ctags"~
*ada-ctags*
Exuberant Ctags uses its own multi-language code parser. The parser is quite
fast, produces a lot of extra informations (hence the name "Exuberant Ctags")
and can run on files which currently do not compile.
There are also lots of other Vim-tools which use exuberant Ctags.
You will need to install a version of the Exuberant Ctags which has Ada
support patched in. Such a version is available from the GNU Ada Project
(http://gnuada.sourceforge.net).
The Ada parser for Exuberant Ctags is fairly new - don't expect complete
support yet.
==============================================================================
4. Compiler Support ~
*ada-compiler*
The Ada mode supports more then one Ada compiler and will automatically load the
compiler set in|g:ada_default_compiler|whenever an Ada source is opened. The
provided compiler plug-ins are split into the actual compiler plug-in and a
collection of support functions and variables. This allows the easy
development of specialized compiler plug-ins fine tuned to your development
environment.
------------------------------------------------------------------------------
4.1 GNAT ~
*compiler-gnat*
GNAT is the only free (beer and speech) Ada compiler available. There are
several version available which differentiate in the licence terms used.
The GNAT compiler plug-in will perform a compile on pressing <F7> and then
immediately shows the result. You can set the project file to be used by
setting:
>
> call g:gnat.Set_Project_File ('my_project.gpr')
Setting a project file will also create a Vim session (|views-sessions|) so -
like with the GPS - opened files, window positions etc. will remembered
separately for all projects.
*gnat_members*
GNAT OBJECT ~
*g:gnat.Make()*
g:gnat.Make()
Calls|g:gnat.Make_Command|and displays the result inside a
|quickfix| window.
*g:gnat.Pretty()*
g:gnat.Pretty()
Calls|g:gnat.Pretty_Command|
*g:gnat.Find()*
g:gnat.Find()
Calls|g:gnat.Find_Command|
*g:gnat.Tags()*
g:gnat.Tags()
Calls|g:gnat.Tags_Command|
*g:gnat.Set_Project_File()*
g:gnat.Set_Project_File([{file}])
Set gnat project file and load associated session. An open
project will be closed and the session written. If called
without file name the file selector opens for selection of a
project file. If called with an empty string then the project
and associated session are closed.
*g:gnat.Project_File*
g:gnat.Project_File string
Current project file.
*g:gnat.Make_Command*
g:gnat.Make_Command string
External command used for|g:gnat.Make()| (|'makeprg'|).
*g:gnat.Pretty_Program*
g:gnat.Pretty_Program string
External command used for|g:gnat.Pretty()|
*g:gnat.Find_Program*
g:gnat.Find_Program string
External command used for|g:gnat.Find()|
*g:gnat.Tags_Command*
g:gnat.Tags_Command string
External command used for|g:gnat.Tags()|
*g:gnat.Error_Format*
g:gnat.Error_Format string
Error format (|'errorformat'|)
------------------------------------------------------------------------------
4.2 Dec Ada ~
*compiler-hpada* *compiler-decada*
*compiler-vaxada* *compiler-compaqada*
Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada
and HP Ada) is a fairly dated Ada 83 compiler. Support is basic: <F7> will
compile the current unit.
The Dec Ada compiler expects the package name and not the file name to be
passed a parameter. The compiler plug-in supports the usual file name
convention to convert the file into a unit name. For separates both '-' and
'__' are allowed.
*decada_members*
DEC ADA OBJECT ~
*g:decada.Make()*
g:decada.Make() function
Calls|g:decada.Make_Command|and displays the result inside a
|quickfix| window.
*g:decada.Unit_Name()*
g:decada.Unit_Name() function
Get the Unit name for the current file.
*g:decada.Make_Command*
g:decada.Make_Command string
External command used for|g:decadat.Make()| (|'makeprg'|).
*g:decada.Error_Format*
g:decada.Error_Format| string
Error format (|'errorformat'|).
==============================================================================
5. References ~
*ada-reference*
------------------------------------------------------------------------------
5.1 Options ~
*ft-ada-options*
*g:ada_standard_types*
g:ada_standard_types bool (true when exists)
Highlight types in package Standard (e.g., "Float")
*g:ada_space_errors*
*g:ada_no_trail_space_error*
*g:ada_no_tab_space_error*
*g:ada_all_tab_usage*
g:ada_space_errors bool (true when exists)
Highlight extraneous errors in spaces ...
g:ada_no_trail_space_error
- but ignore trailing spaces at the end of a line
g:ada_no_tab_space_error
- but ignore tabs after spaces
g:ada_all_tab_usage
- highlight all tab use
*g:ada_line_errors*
g:ada_line_errors bool (true when exists)
Highlight lines which are to long. Note: This highlighting
option is quite CPU intensive.
*g:ada_rainbow_color*
g:ada_rainbow_color bool (true when exists)
Use rainbow colours for '(' and ')'. You need the
rainbow_parenthesis for this to work
*g:ada_folding*
g:ada_folding set ('sigpft')
Use folding for Ada sources.
's': activate syntax folding on load
'p': fold packages
'f': fold functions and procedures
't': fold types
'c': fold conditionals
'g': activate gnat pretty print folding on load
'i': lone 'is' folded with line above
'b': lone 'begin' folded with line above
'p': lone 'private' folded with line above
'x': lone 'exception' folded with line above
'i': activate indent folding on load
Note: Syntax folding is in an early (unusable) stage and
indent or gnat pretty folding is suggested.
For gnat pretty folding to work the following settings are
suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5
For indent folding to work the following settings are
suggested: shiftwidth=3 softtabstop=3
*g:ada_abbrev*
g:ada_abbrev bool (true when exists)
Add some abbreviations. This feature more or less superseded
by the various completion methods.
*g:ada_withuse_ordinary*
g:ada_withuse_ordinary bool (true when exists)
Show "with" and "use" as ordinary keywords (when used to
reference other compilation units they're normally highlighted
specially).
*g:ada_begin_preproc*
g:ada_begin_preproc bool (true when exists)
Show all begin-like keywords using the colouring of C
preprocessor commands.
*g:ada_omni_with_keywords*
g:ada_omni_with_keywords
Add Keywords, Pragmas, Attributes to omni-completions
(|compl-omni|). Note: You can always complete then with user
completion (|i_CTRL-X_CTRL-U|).
*g:ada_extended_tagging*
g:ada_extended_tagging enum ('jump', 'list')
use extended tagging, two options are available
'jump': use tjump to jump.
'list': add tags quick fix list.
Normal tagging does not support function or operator
overloading as these features are not available in C and
tagging was originally developed for C.
*g:ada_extended_completion*
g:ada_extended_completion
Uses extended completion for <C-N> and <C-R> completions
(|i_CTRL-N|). In this mode the '.' is used as part of the
identifier so that 'Object.Method' or 'Package.Procedure' are
completed together.
*g:ada_gnat_extensions*
g:ada_gnat_extensions bool (true when exists)
Support GNAT extensions.
*g:ada_with_gnat_project_files*
g:ada_with_gnat_project_files bool (true when exists)
Add gnat project file keywords and Attributes.
*g:ada_default_compiler*
g:ada_default_compiler string
set default compiler. Currently supported is 'gnat' and
'decada'.
An "exists" type is a boolean is considered true when the variable is defined
and false when the variable is undefined. The value which the variable is
set makes no difference.
------------------------------------------------------------------------------
5.3 Commands ~
*ft-ada-commands*
:AdaRainbow *:AdaRainbow*
Toggles rainbow colour (|g:ada_rainbow_color|) mode for
'(' and ')'
:AdaLines *:AdaLines*
Toggles line error (|g:ada_line_errors|) display
:AdaSpaces *:AdaSpaces*
Toggles space error (|g:ada_space_errors|) display.
:AdaTagDir *:AdaTagDir*
Creates tags file for the directory of the current file.
:AdaTagFile *:AdaTagFile*
Creates tags file for the current file.
:AdaTypes *:AdaTypes*
Toggles standard types (|g:ada_standard_types|) colour.
:GnatFind *:GnatFind*
Calls |g:gnat.Find()|
:GnatPretty *:GnatPretty*
Calls |g:gnat.Pretty()|
:GnatTags *:GnatTags*
Calls |g:gnat.Tags()|
------------------------------------------------------------------------------
5.3 Variables ~
*ft-ada-variables*
*g:gnat*
g:gnat object
Control object which manages GNAT compiles. The object
is created when the first Ada source code is loaded provided
that |g:ada_default_compiler|is set to 'gnat'. See|gnat_members|
for details.
*g:decada*
g:decada object
Control object which manages Dec Ada compiles. The object
is created when the first Ada source code is loaded provided
that |g:ada_default_compiler|is set to 'decada'. See
|decada_members|for details.
------------------------------------------------------------------------------
5.4 Constants ~
*ft-ada-constants*
All constants are locked. See |:lockvar| for details.
*g:ada#WordRegex*
g:ada#WordRegex string
Regular expression to search for Ada words
*g:ada#DotWordRegex*
g:ada#DotWordRegex string
Regular expression to search for Ada words separated by dots.
*g:ada#Comment*
g:ada#Comment string
Regular expression to search for Ada comments
*g:ada#Keywords*
g:ada#Keywords list of dictionaries
List of keywords, attributes etc. pp. in the format used by
omni completion. See |complete-items| for details.
*g:ada#Ctags_Kinds*
g:ada#Ctags_Kinds dictionary of lists
Dictionary of the various kinds of items which the Ada support
for Ctags generates.
------------------------------------------------------------------------------
5.2 Functions ~
*ft-ada-functions*
ada#Word([{line}, {col}]) *ada#Word()*
Return full name of Ada entity under the cursor (or at given
line/column), stripping white space/newlines as necessary.
ada#List_Tag([{line}, {col}]) *ada#Listtags()*
List all occurrences of the Ada entity under the cursor (or at
given line/column) inside the quick-fix window
ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()*
List all occurrences of the Ada entity under the cursor (or at
given line/column) in the tag jump list. Mode can either be
'tjump' or 'stjump'.
ada#Create_Tags ({option}) *ada#Create_Tags()*
Creates tag file using Ctags. The option can either be 'file'
for the current file, 'dir' for the directory of the current
file or a file name.
gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()*
Adds the tag file header (!_TAG_) informations to the current
file which are missing from the GNAT XREF output.
ada#Switch_Syntax_Option ({option}) *ada#Switch_Syntax_Option()*
Toggles highlighting options on or off. Used for the Ada menu.
*gnat#New()*
gnat#New ()
Create a new gnat object. See |g:gnat| for details.
==============================================================================
8. Extra Plugins ~
*ada-extra-plugins*
You can optionally install the following extra plug-in. They work well with Ada
and enhance the ability of the Ada mode.:
backup.vim
http://www.vim.org/scripts/script.php?script_id=1537
Keeps as many backups as you like so you don't have to.
rainbow_parenthsis.vim
http://www.vim.org/scripts/script.php?script_id=1561
Very helpful since Ada uses only '(' and ')'.
nerd_comments.vim
http://www.vim.org/scripts/script.php?script_id=1218
Excellent commenting and uncommenting support for almost any
programming language.
matchit.vim
http://www.vim.org/scripts/script.php?script_id=39
'%' jumping for any language. The normal '%' jump only works for '{}'
style languages. The Ada mode will set the needed search patters.
taglist.vim
http://www.vim.org/scripts/script.php?script_id=273
Source code explorer sidebar. There is a patch for Ada available.
The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim
contains all of the above.
==============================================================================
vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab
vim: filetype=help encoding=latin1

View File

@@ -1,4 +1,4 @@
*arabic.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *arabic.txt* For Vim version 7.1. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Nadim Shaikli VIM REFERENCE MANUAL by Nadim Shaikli

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *autocmd.txt* For Vim version 7.1. Last change: 2007 Mar 27
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -263,7 +263,7 @@ Name triggered by ~
Startup and exit Startup and exit
|VimEnter| after doing all the startup stuff |VimEnter| after doing all the startup stuff
|GUIEnter| after starting the GUI successfully |GUIEnter| after starting the GUI successfully
|TermResponse| after the termainal response to |t_RV| is received |TermResponse| after the terminal response to |t_RV| is received
|VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeavePre| before exiting Vim, before writing the viminfo file
|VimLeave| before exiting Vim, after writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file
@@ -279,6 +279,7 @@ Name triggered by ~
|FuncUndefined| a user function is used but it isn't defined |FuncUndefined| a user function is used but it isn't defined
|SpellFileMissing| a spell file is used but it can't be found |SpellFileMissing| a spell file is used but it can't be found
|SourcePre| before sourcing a Vim script |SourcePre| before sourcing a Vim script
|SourceCmd| before sourcing a Vim script |Cmd-event|
|VimResized| after the Vim window size changed |VimResized| after the Vim window size changed
|FocusGained| Vim got input focus |FocusGained| Vim got input focus
@@ -460,6 +461,9 @@ CursorHold When the user doesn't press a key for the time
make some coffee. :) See |CursorHold-example| make some coffee. :) See |CursorHold-example|
for previewing tags. for previewing tags.
This event is only triggered in Normal mode. This event is only triggered in Normal mode.
It is not triggered when waiting for a command
argument to be typed, or a movement after an
operator.
While recording the CursorHold event is not While recording the CursorHold event is not
triggered. |q| triggered. |q|
Note: Interactive commands cannot be used for Note: Interactive commands cannot be used for
@@ -527,8 +531,6 @@ FileChangedShell When Vim notices that the modification time of
and the buffer was not changed. If a and the buffer was not changed. If a
FileChangedShell autocommand is present the FileChangedShell autocommand is present the
warning message and prompt is not given. warning message and prompt is not given.
This is useful for reloading related buffers
which are affected by a single command.
The |v:fcs_reason| variable is set to indicate The |v:fcs_reason| variable is set to indicate
what happened and |v:fcs_choice| can be used what happened and |v:fcs_choice| can be used
to tell Vim what to do next. to tell Vim what to do next.
@@ -560,7 +562,8 @@ FileReadPost After reading a file with a ":read" command.
*FileReadPre* *FileReadPre*
FileReadPre Before reading a file with a ":read" command. FileReadPre Before reading a file with a ":read" command.
*FileType* *FileType*
FileType When the 'filetype' option has been set. FileType When the 'filetype' option has been set. The
pattern is matched against the filetype.
<afile> can be used for the name of the file <afile> can be used for the name of the file
where this option was set, and <amatch> for where this option was set, and <amatch> for
the new value of 'filetype'. the new value of 'filetype'.
@@ -616,8 +619,9 @@ FocusLost When Vim lost input focus. Only for the GUI
*FuncUndefined* *FuncUndefined*
FuncUndefined When a user function is used but it isn't FuncUndefined When a user function is used but it isn't
defined. Useful for defining a function only defined. Useful for defining a function only
when it's used. Both <amatch> and <afile> are when it's used. The pattern is matched
set to the name of the function. against the function name. Both <amatch> and
<afile> are set to the name of the function.
See |autoload-functions|. See |autoload-functions|.
*GUIEnter* *GUIEnter*
GUIEnter After starting the GUI successfully, and after GUIEnter After starting the GUI successfully, and after
@@ -625,6 +629,12 @@ GUIEnter After starting the GUI successfully, and after
VimEnter when using gvim. Can be used to VimEnter when using gvim. Can be used to
position the window from a .gvimrc file: > position the window from a .gvimrc file: >
:autocmd GUIEnter * winpos 100 50 :autocmd GUIEnter * winpos 100 50
< *GUIFailed*
GUIFailed After starting the GUI failed. Vim may
continue to run in the terminal, if possible
(only on Unix and alikes, when connecting the
X server fails). You may want to quit Vim: >
:autocmd GUIFailed * qall
< *InsertChange* < *InsertChange*
InsertChange When typing <Insert> while in Insert or InsertChange When typing <Insert> while in Insert or
Replace mode. The |v:insertmode| variable Replace mode. The |v:insertmode| variable
@@ -632,8 +642,8 @@ InsertChange When typing <Insert> while in Insert or
Be careful not to move the cursor or do Be careful not to move the cursor or do
anything else that the user does not expect. anything else that the user does not expect.
*InsertEnter* *InsertEnter*
InsertEnter When starting Insert mode. Also for Replace InsertEnter Just before starting Insert mode. Also for
mode and Virtual Replace mode. The Replace mode and Virtual Replace mode. The
|v:insertmode| variable indicates the mode. |v:insertmode| variable indicates the mode.
Be careful not to move the cursor or do Be careful not to move the cursor or do
anything else that the user does not expect. anything else that the user does not expect.
@@ -656,7 +666,7 @@ MenuPopup Just before showing the popup menu (under the
QuickFixCmdPre Before a quickfix command is run (|:make|, QuickFixCmdPre Before a quickfix command is run (|:make|,
|:lmake|, |:grep|, |:lgrep|, |:grepadd|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
|:lgrepadd|, |:vimgrep|, |:lvimgrep|, |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
|:vimgrepadd|, |:vimgrepadd|). The pattern is |:vimgrepadd|, |:lvimgrepadd|). The pattern is
matched against the command being run. When matched against the command being run. When
|:grep| is used but 'grepprg' is set to |:grep| is used but 'grepprg' is set to
"internal" it still matches "grep". "internal" it still matches "grep".
@@ -670,7 +680,8 @@ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
location. location.
*RemoteReply* *RemoteReply*
RemoteReply When a reply from a Vim that functions as RemoteReply When a reply from a Vim that functions as
server was received |server2client()|. server was received |server2client()|. The
pattern is matched against the {serverid}.
<amatch> is equal to the {serverid} from which <amatch> is equal to the {serverid} from which
the reply was sent, and <afile> is the actual the reply was sent, and <afile> is the actual
reply string. reply string.
@@ -690,10 +701,17 @@ ShellFilterPost After executing a shell command with
Can be used to check for any changed files. Can be used to check for any changed files.
*SourcePre* *SourcePre*
SourcePre Before sourcing a Vim script. |:source| SourcePre Before sourcing a Vim script. |:source|
<afile> is the name of the file being sourced.
*SourceCmd*
SourceCmd When sourcing a Vim script. |:source|
<afile> is the name of the file being sourced.
The autocommand must source this file.
|Cmd-event|
*SpellFileMissing* *SpellFileMissing*
SpellFileMissing When trying to load a spell checking file and SpellFileMissing When trying to load a spell checking file and
it can't be found. <amatch> is the language, it can't be found. The pattern is matched
'encoding' also matters. See against the language. <amatch> is the
language, 'encoding' also matters. See
|spell-SpellFileMissing|. |spell-SpellFileMissing|.
*StdinReadPost* *StdinReadPost*
StdinReadPost After reading from the stdin into the buffer, StdinReadPost After reading from the stdin into the buffer,
@@ -727,15 +745,16 @@ SwapExists Detected an existing swap file when starting
Note: Do not try to change the buffer, the Note: Do not try to change the buffer, the
results are unpredictable. results are unpredictable.
*Syntax* *Syntax*
Syntax When the 'syntax' option has been set. Syntax When the 'syntax' option has been set. The
pattern is matched against the syntax name.
<afile> can be used for the name of the file <afile> can be used for the name of the file
where this option was set, and <amatch> for where this option was set, and <amatch> for
the new value of 'syntax'. the new value of 'syntax'.
See |:syn-on|. See |:syn-on|.
*TabEnter* *TabEnter*
TabEnter Just after entering a tab page. |tab-page| TabEnter Just after entering a tab page. |tab-page|
Before triggering the WinEnter and BufEnter After triggering the WinEnter and before
events. triggering the BufEnter event.
*TabLeave* *TabLeave*
TabLeave Just before leaving a tab page. |tab-page| TabLeave Just before leaving a tab page. |tab-page|
A WinLeave event will have been triggered A WinLeave event will have been triggered
@@ -1219,8 +1238,8 @@ highlighting when starting Vim.
*Cmd-event* *Cmd-event*
When using one of the "*Cmd" events, the matching autocommands are expected to When using one of the "*Cmd" events, the matching autocommands are expected to
do the file reading or writing. This can be used when working with a special do the file reading, writing or sourcing. This can be used when working with
kind of file, for example on a remote system. a special kind of file, for example on a remote system.
CAREFUL: If you use these events in a wrong way, it may have the effect of CAREFUL: If you use these events in a wrong way, it may have the effect of
making it impossible to read or write the matching files! Make sure you test making it impossible to read or write the matching files! Make sure you test
your autocommands properly. Best is to use a pattern that will never match a your autocommands properly. Best is to use a pattern that will never match a
@@ -1233,9 +1252,10 @@ possible with a BufReadCmd, use the |:preserve| command to make sure the
original file isn't needed for recovery. You might want to do this only when original file isn't needed for recovery. You might want to do this only when
you expect the file to be modified. you expect the file to be modified.
The |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are For file read and write commands the |v:cmdarg| variable holds the "++enc="
effective. These should be used for the command that reads/writes the file. and "++ff=" argument that are effective. These should be used for the command
The |v:cmdbang| variable is one when "!" was used, zero otherwise. that reads/writes the file. The |v:cmdbang| variable is one when "!" was
used, zero otherwise.
See the $VIMRUNTIME/plugin/netrw.vim for examples. See the $VIMRUNTIME/plugin/netrw.vim for examples.

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *change.txt* For Vim version 7.1. Last change: 2007 Jan 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -640,7 +640,7 @@ The flags that you can use for the substitute commands:
[#] Like [p] and prepend the line number. [#] Like [p] and prepend the line number.
[l] Like [l] but print the text like |:list|. [l] Like [p] but print the text like |:list|.
[r] Only useful in combination with ":&" or ":s" without arguments. ":&r" [r] Only useful in combination with ":&" or ":s" without arguments. ":&r"
works the same way as ":~": When the search pattern is empty, use the works the same way as ":~": When the search pattern is empty, use the
@@ -670,14 +670,20 @@ pattern from the last substitute or ":global" command. With the [r] flag, the
command uses the pattern from the last substitute, ":global", or search command uses the pattern from the last substitute, ":global", or search
command. command.
If the {string} is omitted the substitute is done as if it's empty. Thus the
matched pattern is deleted. The separator after {pattern} can also be left
out then. Example: >
:%s/TESTING
This deletes "TESTING" from all lines, but only one per line.
For compatibility with Vi these two exceptions are allowed: For compatibility with Vi these two exceptions are allowed:
"\/{string}/" and "\?{string}?" do the same as "//{string}/r". "\/{string}/" and "\?{string}?" do the same as "//{string}/r".
"\&{string}&" does the same as "//{string}/". "\&{string}&" does the same as "//{string}/".
*E146* *E146*
Instead of the '/' which surrounds the pattern and replacement string, you Instead of the '/' which surrounds the pattern and replacement string, you
can use any other character, but not an alphanumeric character, '\', '"' or can use any other single-byte character, but not an alphanumeric character,
'|'. This is useful if you want to include a '/' in the search pattern or '\', '"' or '|'. This is useful if you want to include a '/' in the search
replacement string. Example: > pattern or replacement string. Example: >
:s+/+//+ :s+/+//+
For the definition of a pattern, see |pattern|. For the definition of a pattern, see |pattern|.
@@ -1075,7 +1081,7 @@ and ":put" commands and with CTRL-R. {not in Vi}
{not available when compiled without the |+cmdline_hist| {not available when compiled without the |+cmdline_hist|
feature} feature}
6. Expression register "= *quote_=* *quote=* 6. Expression register "= *quote_=* *quote=* *@=*
This is not really a register that stores text, but is a way to use an This is not really a register that stores text, but is a way to use an
expression in commands which use a register. The expression register is expression in commands which use a register. The expression register is
read-only; you cannot put text into it. After the '=', the cursor moves to read-only; you cannot put text into it. After the '=', the cursor moves to
@@ -1365,7 +1371,7 @@ readability.
letter meaning when present in 'formatoptions' ~ letter meaning when present in 'formatoptions' ~
t Auto-wrap text using textwidth (does not apply to comments) t Auto-wrap text using textwidth
c Auto-wrap comments using textwidth, inserting the current comment c Auto-wrap comments using textwidth, inserting the current comment
leader automatically. leader automatically.
r Automatically insert the current comment leader after hitting r Automatically insert the current comment leader after hitting
@@ -1429,8 +1435,9 @@ value action ~
"c" automatic formatting for comments, but not text (good for C code) "c" automatic formatting for comments, but not text (good for C code)
"tc" automatic formatting for text and comments "tc" automatic formatting for text and comments
Note that when 'textwidth' is 0, Vim does no formatting anyway (but does Note that when 'textwidth' is 0, Vim does no automatic formatting anyway (but
insert comment leaders according to the 'comments' option). does insert comment leaders according to the 'comments' option). An exception
is when the 'a' flag is present. |auto-format|
Note that when 'paste' is on, Vim does no formatting at all. Note that when 'paste' is on, Vim does no formatting at all.
@@ -1485,6 +1492,9 @@ editing text paragraphs. A few hints on how to use this:
- Add the 'c' flag to only auto-format comments. Useful in source code. - Add the 'c' flag to only auto-format comments. Useful in source code.
- Set 'textwidth' to the desired width. If it is zero then 79 is used, or the
width of the screen if this is smaller.
And a few warnings: And a few warnings:
- When part of the text is not properly separated in paragraphs, making - When part of the text is not properly separated in paragraphs, making

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *cmdline.txt* For Vim version 7.1. Last change: 2006 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -301,6 +301,10 @@ CTRL-^ Toggle the use of language |:lmap| mappings and/or Input
for the next command or Search pattern. for the next command or Search pattern.
{not in Vi} {not in Vi}
*c_CTRL-]*
CTRL-] Trigger abbreviation, without inserting a character. {not in
Vi}
For Emacs-style editing on the command-line see |emacs-keys|. For Emacs-style editing on the command-line see |emacs-keys|.
The <Up> and <Down> keys take the current command-line as a search string. The <Up> and <Down> keys take the current command-line as a search string.

View File

@@ -1,4 +1,4 @@
*debug.txt* For Vim version 7.0g. Last change: 2006 May 01 *debug.txt* For Vim version 7.1. Last change: 2006 May 01
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*debugger.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *debugger.txt* For Vim version 7.1. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Gordon Prieur VIM REFERENCE MANUAL by Gordon Prieur

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 7.0g. Last change: 2006 Mar 09 *develop.txt* For Vim version 7.1. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -187,7 +187,7 @@ strcpy() STRCPY() Includes cast to (char *), for char_u * args
strchr() vim_strchr() Accepts special characters strchr() vim_strchr() Accepts special characters
strrchr() vim_strrchr() Accepts special characters strrchr() vim_strrchr() Accepts special characters
isspace() vim_isspace() Can handle characters > 128 isspace() vim_isspace() Can handle characters > 128
iswhite() vim_iswhite() Only TRUE for Tab and space iswhite() vim_iswhite() Only TRUE for tab and space
memcpy() mch_memmove() Handles overlapped copies memcpy() mch_memmove() Handles overlapped copies
bcopy() mch_memmove() Handles overlapped copies bcopy() mch_memmove() Handles overlapped copies
memset() vim_memset() Uniform for all systems memset() vim_memset() Uniform for all systems
@@ -224,7 +224,7 @@ __.* POSIX, system
_[A-Z].* POSIX, system _[A-Z].* POSIX, system
E[A-Z0-9]* POSIX, errno.h E[A-Z0-9]* POSIX, errno.h
*_t POSIX, for typedefs. Use *_T instead. .*_t POSIX, for typedefs. Use .*_T instead.
wait don't use as argument to a function, conflicts with types.h wait don't use as argument to a function, conflicts with types.h
index shadows global declaration index shadows global declaration
@@ -437,7 +437,7 @@ the best method is. Alternatives:
seconds for English, which can be acceptable for interactive use. But for seconds for English, which can be acceptable for interactive use. But for
some languages it takes more than ten seconds (e.g., German, Catalan), some languages it takes more than ten seconds (e.g., German, Catalan),
which is unacceptable slow. For batch processing (automatic corrections) which is unacceptable slow. For batch processing (automatic corrections)
it's to slow for all languages. it's too slow for all languages.
2. Use a trie for the soundfolded words, so that searching can be done just 2. Use a trie for the soundfolded words, so that searching can be done just
like how it works without soundfolding. This requires remembering a list like how it works without soundfolding. This requires remembering a list
of good words for each soundfolded word. This makes finding matches very of good words for each soundfolded word. This makes finding matches very
@@ -471,7 +471,7 @@ initialized from words listed in COMMON items in the affix file, so that it
also works when starting a new file. also works when starting a new file.
This isn't ideal, because the longer Vim is running the higher the counts This isn't ideal, because the longer Vim is running the higher the counts
become. But in practice it is a noticable improvement over not using the word become. But in practice it is a noticeable improvement over not using the word
count. count.
============================================================================== ==============================================================================

View File

@@ -1,4 +1,4 @@
*diff.txt* For Vim version 7.0g. Last change: 2006 Apr 14 *diff.txt* For Vim version 7.1. Last change: 2006 Oct 02
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -155,13 +155,16 @@ All the buffers edited in a window where the 'diff' option is set will join in
the diff. This is also possible for hidden buffers. They must have been the diff. This is also possible for hidden buffers. They must have been
edited in a window first for this to be possible. edited in a window first for this to be possible.
*:DiffOrig* *diff-original-file*
Since 'diff' is a window-local option, it's possible to view the same buffer Since 'diff' is a window-local option, it's possible to view the same buffer
in diff mode in one window and "normal" in another window. It is also in diff mode in one window and "normal" in another window. It is also
possible to view the changes you have made to a buffer, but since Vim doesn't possible to view the changes you have made to a buffer since the file was
allow having two buffers for the same file, you need to make a copy of the loaded. Since Vim doesn't allow having two buffers for the same file, you
original file and diff with that. For example: > need another buffer. This command is useful: >
:!cp % tempfile command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
:diffsplit tempfile \ | wincmd p | diffthis
(this is in |vimrc_example.vim|). Use ":DiffOrig" to see the differences
between the current buffer and the file it was loaded from.
A buffer that is unloaded cannot be used for the diff. But it does work for A buffer that is unloaded cannot be used for the diff. But it does work for
hidden buffers. You can use ":hide" to close a window without unloading the hidden buffers. You can use ":hide" to close a window without unloading the
@@ -239,7 +242,7 @@ that the buffers will be equal within the specified range.
mode. mode.
See below for [range]. See below for [range].
*:diffpu* *:diffput* *:diffpu* *:diffput* *E793*
:[range]diffpu[t] [bufspec] :[range]diffpu[t] [bufspec]
Modify another buffer to undo difference with the current Modify another buffer to undo difference with the current
buffer. Just like ":diffget" but the other buffer is modified buffer. Just like ":diffget" but the other buffer is modified

View File

@@ -1,4 +1,4 @@
*digraph.txt* For Vim version 7.0g. Last change: 2006 Apr 25 *digraph.txt* For Vim version 7.1. Last change: 2006 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -107,13 +107,12 @@ If you accidentally typed an 'a' that should be an 'e', you will type 'a' <BS>
this, you will have to type <BS> e again. To avoid this don't set the this, you will have to type <BS> e again. To avoid this don't set the
'digraph' option and use CTRL-K to enter digraphs. 'digraph' option and use CTRL-K to enter digraphs.
You may have problems using Vim with characters which have an ASCII value You may have problems using Vim with characters which have a value above 128.
above 128. For example: You insert ue (u-umlaut) and the editor echoes \334 For example: You insert ue (u-umlaut) and the editor echoes \334 in Insert
in Insert mode. After leaving the Insert mode everything is fine. Note that mode. After leaving the Insert mode everything is fine. Note that fmt
fmt removes all characters with ASCII codes above 128 from the text being removes all characters with a value above 128 from the text being formatted.
formatted. On some Unix systems this means you have to define the On some Unix systems this means you have to define the environment-variable
environment-variable LC_CTYPE. If you are using csh, then put the following LC_CTYPE. If you are using csh, then put the following line in your .cshrc: >
line in your .cshrc: >
setenv LC_CTYPE iso_8859_1 setenv LC_CTYPE iso_8859_1
============================================================================== ==============================================================================

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *editing.txt* For Vim version 7.1. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -372,7 +372,7 @@ Example: The command ":e Long File Name " will edit the file "Long File
Name". When using a command that accepts more than one file name (like ":next Name". When using a command that accepts more than one file name (like ":next
file1 file2") embedded spaces must be escaped with a backslash. file1 file2") embedded spaces must be escaped with a backslash.
*wildcard* *wildcard* *wildcards*
Wildcards in {file} are expanded. Which wildcards are supported depends on Wildcards in {file} are expanded. Which wildcards are supported depends on
the system. These are the common ones: the system. These are the common ones:
? matches one character ? matches one character
@@ -749,7 +749,7 @@ Thus you can use the command "vim *.c" to edit all the C files. From within
Vim the command ":n *.c" does the same. Vim the command ":n *.c" does the same.
White space is used to separate file names. Put a backslash before a space or White space is used to separate file names. Put a backslash before a space or
Tab to include it in a file name. E.g., to edit the single file "foo bar": > tab to include it in a file name. E.g., to edit the single file "foo bar": >
:next foo\ bar :next foo\ bar
On Unix and a few other systems you can also use backticks, for example: > On Unix and a few other systems you can also use backticks, for example: >
@@ -849,7 +849,7 @@ Note: When the 'write' option is off, you are not able to write any file.
*:w* *:write* *:w* *:write*
*E502* *E503* *E504* *E505* *E502* *E503* *E504* *E505*
*E512* *E514* *E667* *E512* *E514* *E667* *E796*
:w[rite] Write the whole buffer to the current file. This is :w[rite] Write the whole buffer to the current file. This is
the normal way to save changes to a file. It fails the normal way to save changes to a file. It fails
when the 'readonly' option is set or when there is when the 'readonly' option is set or when there is
@@ -1150,8 +1150,8 @@ If you want to always use ":confirm", set the 'confirm' option.
*:browse* *:bro* *E338* *E614* *E615* *E616* *E578* *:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
:bro[wse] {command} Open a file selection dialog for an argument to :bro[wse] {command} Open a file selection dialog for an argument to
{command}. At present this works for |:e|, |:w|, {command}. At present this works for |:e|, |:w|,
|:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc|,
|:mksession|. |:mksession|, |:split|, |:vsplit|, and |:tabe|.
{only in Win32, Athena, Motif, GTK and Mac GUI} {only in Win32, Athena, Motif, GTK and Mac GUI}
When ":browse" is not possible you get an error When ":browse" is not possible you get an error
message. If the |+browse| feature is missing or the message. If the |+browse| feature is missing or the
@@ -1469,7 +1469,9 @@ problem goes away the next day.
{not available when compiled without the |+path_extra| feature} {not available when compiled without the |+path_extra| feature}
The file searching is currently used for the 'path', 'cdpath' and 'tags' The file searching is currently used for the 'path', 'cdpath' and 'tags'
options. There are three different types of searching: options, for |finddir()| and |findfile()|.
There are three different types of searching:
1) Downward search: *starstar* 1) Downward search: *starstar*
Downward search uses the wildcards '*', '**' and possibly others Downward search uses the wildcards '*', '**' and possibly others

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.0g. Last change: 2006 May 01 *eval.txt* For Vim version 7.1. Last change: 2007 Jun 09
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -192,7 +192,7 @@ separated by a colon in square brackets: >
:let shortlist = mylist[2:-1] " get List [3, "four"] :let shortlist = mylist[2:-1] " get List [3, "four"]
Omitting the first index is similar to zero. Omitting the last index is Omitting the first index is similar to zero. Omitting the last index is
similar to -1. similar to -1. >
:let endlist = mylist[2:] " from item 2 to the end: [3, "four"] :let endlist = mylist[2:] " from item 2 to the end: [3, "four"]
:let shortlist = mylist[2:2] " List with one item: [3] :let shortlist = mylist[2:2] " List with one item: [3]
:let otherlist = mylist[:] " make a copy of the List :let otherlist = mylist[:] " make a copy of the List
@@ -444,8 +444,8 @@ To loop over the values use the |values()| function: >
If you want both the key and the value use the |items()| function. It returns If you want both the key and the value use the |items()| function. It returns
a List in which each item is a List with two items, the key and the value: > a List in which each item is a List with two items, the key and the value: >
:for entry in items(mydict) :for [key, value] in items(mydict)
: echo entry[0] . ': ' . entry[1] : echo key . ': ' . value
:endfor :endfor
@@ -486,7 +486,7 @@ expect ":echo adict" to show the items from bdict after the older entries in
adict. adict.
Weeding out entries from a Dictionary can be done with |filter()|: > Weeding out entries from a Dictionary can be done with |filter()|: >
:call filter(dict 'v:val =~ "x"') :call filter(dict, 'v:val =~ "x"')
This removes all entries from "dict" with a value not matching 'x'. This removes all entries from "dict" with a value not matching 'x'.
@@ -650,6 +650,9 @@ To keep this readable, using |line-continuation| is suggested: >
:\ ? "last" :\ ? "last"
:\ : lnum :\ : lnum
You should always put a space before the ':', otherwise it can be mistaken for
use in a variable such as "a:1".
expr2 and expr3 *expr2* *expr3* expr2 and expr3 *expr2* *expr3*
--------------- ---------------
@@ -750,10 +753,12 @@ results in the mathematical difference (comparing byte values), not
necessarily the alphabetical difference in the local language. necessarily the alphabetical difference in the local language.
When using the operators with a trailing '#", or the short version and When using the operators with a trailing '#", or the short version and
'ignorecase' is off, the comparing is done with strcmp(). 'ignorecase' is off, the comparing is done with strcmp(): case matters.
When using the operators with a trailing '?', or the short version and When using the operators with a trailing '?', or the short version and
'ignorecase' is set, the comparing is done with stricmp(). 'ignorecase' is set, the comparing is done with stricmp(): case is ignored.
'smartcase' is not used.
The "=~" and "!~" operators match the lefthand argument with the righthand The "=~" and "!~" operators match the lefthand argument with the righthand
argument, which is used as a pattern. See |pattern| for what a pattern is. argument, which is used as a pattern. See |pattern| for what a pattern is.
@@ -932,6 +937,10 @@ A string constant accepts these special characters:
\" double quote \" double quote
\<xxx> Special key named "xxx". e.g. "\<C-W>" for CTRL-W. \<xxx> Special key named "xxx". e.g. "\<C-W>" for CTRL-W.
Note that "\xff" is stored as the byte 255, which may be invalid in some
encodings. Use "\u00ff" to store character 255 according to the current value
of 'encoding'.
Note that "\000" and "\x00" force the end of the string. Note that "\000" and "\x00" force the end of the string.
@@ -965,7 +974,7 @@ and there is no buffer-local or window-local value, the global value is used
anyway. anyway.
register *expr-register* register *expr-register* *@r*
-------- --------
@r contents of register 'r' @r contents of register 'r'
@@ -1079,7 +1088,10 @@ place if you like.
*local-variable* *l:var* *local-variable* *l:var*
Inside functions local variables are accessed without prepending anything. Inside functions local variables are accessed without prepending anything.
But you can also prepend "l:" if you like. But you can also prepend "l:" if you like. However, without prepending "l:"
you may run into reserved variable names. For example "count". By itself it
refers to "v:count". Using "l:count" you can have a local variable with the
same name.
*script-variable* *s:var* *script-variable* *s:var*
In a Vim script variables starting with "s:" can be used. They cannot be In a Vim script variables starting with "s:" can be used. They cannot be
@@ -1097,8 +1109,8 @@ Thus not in:
- mappings - mappings
- etc. - etc.
script variables can be used to avoid conflicts with global variable names. Script variables can be used to avoid conflicts with global variable names.
Take this example: Take this example: >
let s:counter = 0 let s:counter = 0
function MyCounter() function MyCounter()
@@ -1374,6 +1386,21 @@ v:lnum Line number for the 'foldexpr' |fold-expr| and 'indentexpr'
'guitabtooltip'. Only valid while one of these expressions is 'guitabtooltip'. Only valid while one of these expressions is
being evaluated. Read-only when in the |sandbox|. being evaluated. Read-only when in the |sandbox|.
*v:mouse_win* *mouse_win-variable*
v:mouse_win Window number for a mouse click obtained with |getchar()|.
First window has number 1, like with |winnr()|. The value is
zero when there was no mouse button click.
*v:mouse_lnum* *mouse_lnum-variable*
v:mouse_lnum Line number for a mouse click obtained with |getchar()|.
This is the text line number, not the screen line number. The
value is zero when there was no mouse button click.
*v:mouse_col* *mouse_col-variable*
v:mouse_col Column number for a mouse click obtained with |getchar()|.
This is the screen column number, like with |virtcol()|. The
value is zero when there was no mouse button click.
*v:prevcount* *prevcount-variable* *v:prevcount* *prevcount-variable*
v:prevcount The count given for the last but one Normal mode command. v:prevcount The count given for the last but one Normal mode command.
This is the v:count value of the previous command. Useful if This is the v:count value of the previous command. Useful if
@@ -1608,6 +1635,7 @@ glob( {expr}) String expand file wildcards in {expr}
globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path} globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path}
has( {feature}) Number TRUE if feature {feature} supported has( {feature}) Number TRUE if feature {feature} supported
has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} has_key( {dict}, {key}) Number TRUE if {dict} has entry {key}
haslocaldir() Number TRUE if current window executed |:lcd|
hasmapto( {what} [, {mode} [, {abbr}]]) hasmapto( {what} [, {mode} [, {abbr}]])
Number TRUE if mapping to {what} exists Number TRUE if mapping to {what} exists
histadd( {history},{item}) String add an item to a history histadd( {history},{item}) String add an item to a history
@@ -1656,7 +1684,7 @@ matchlist( {expr}, {pat}[, {start}[, {count}]])
matchstr( {expr}, {pat}[, {start}[, {count}]]) matchstr( {expr}, {pat}[, {start}[, {count}]])
String {count}'th match of {pat} in {expr} String {count}'th match of {pat} in {expr}
max({list}) Number maximum value of items in {list} max({list}) Number maximum value of items in {list}
min({list}) Number minumum value of items in {list} min({list}) Number minimum value of items in {list}
mkdir({name} [, {path} [, {prot}]]) mkdir({name} [, {path} [, {prot}]])
Number create directory {name} Number create directory {name}
mode() String current editing mode mode() String current editing mode
@@ -1709,6 +1737,8 @@ setreg( {n}, {v}[, {opt}]) Number set register to value and type
settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window
{winnr} in tab page {tabnr} to {val} {winnr} in tab page {tabnr} to {val}
setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val}
shellescape( {string}) String escape {string} for use as shell
command argument
simplify( {filename}) String simplify filename as much as possible simplify( {filename}) String simplify filename as much as possible
sort( {list} [, {func}]) List sort {list}, using {func} to compare sort( {list} [, {func}]) List sort {list}, using {func} to compare
soundfold( {word}) String sound-fold {word} soundfold( {word}) String sound-fold {word}
@@ -1871,7 +1901,9 @@ bufname({expr}) *bufname()*
"" or "%" can be used for the current buffer, "#" for the "" or "%" can be used for the current buffer, "#" for the
alternate buffer. alternate buffer.
A full match is preferred, otherwise a match at the start, end A full match is preferred, otherwise a match at the start, end
or middle of the buffer name is accepted. or middle of the buffer name is accepted. If you only want a
full match then put "^" at the start and "$" at the end of the
pattern.
Listed buffers are found first. If there is a single match Listed buffers are found first. If there is a single match
with a listed buffer, that one is returned. Next unlisted with a listed buffer, that one is returned. Next unlisted
buffers are searched for. buffers are searched for.
@@ -1916,6 +1948,7 @@ bufwinnr({expr}) *bufwinnr()*
< The number can be used with |CTRL-W_w| and ":wincmd w" < The number can be used with |CTRL-W_w| and ":wincmd w"
|:wincmd|. |:wincmd|.
Only deals with the current tab page.
byte2line({byte}) *byte2line()* byte2line({byte}) *byte2line()*
@@ -1966,8 +1999,8 @@ char2nr({expr}) *char2nr()*
char2nr(" ") returns 32 char2nr(" ") returns 32
char2nr("ABC") returns 65 char2nr("ABC") returns 65
< The current 'encoding' is used. Example for "utf-8": > < The current 'encoding' is used. Example for "utf-8": >
char2nr("?") returns 225 char2nr("<EFBFBD>") returns 225
char2nr("?"[0]) returns 195 char2nr("<EFBFBD>"[0]) returns 195
< nr2char() does the opposite. < nr2char() does the opposite.
cindent({lnum}) *cindent()* cindent({lnum}) *cindent()*
@@ -1987,7 +2020,7 @@ col({expr}) The result is a Number, which is the byte index of the column
number of characters in the cursor line plus one) number of characters in the cursor line plus one)
'x position of mark x (if the mark is not set, 0 is 'x position of mark x (if the mark is not set, 0 is
returned) returned)
To get the line number use |col()|. To get both use To get the line number use |line()|. To get both use
|getpos()|. |getpos()|.
For the screen column position use |virtcol()|. For the screen column position use |virtcol()|.
Note that only marks in the current file can be used. Note that only marks in the current file can be used.
@@ -1997,6 +2030,8 @@ col({expr}) The result is a Number, which is the byte index of the column
col("'t") column of mark t col("'t") column of mark t
col("'" . markname) column of mark markname col("'" . markname) column of mark markname
< The first column is 1. 0 is returned for an error. < The first column is 1. 0 is returned for an error.
For an uppercase mark the column may actually be in another
buffer.
For the cursor position, when 'virtualedit' is active, the For the cursor position, when 'virtualedit' is active, the
column is one higher if the cursor is after the end of the column is one higher if the cursor is after the end of the
line. This can be used to obtain the column in Insert mode: > line. This can be used to obtain the column in Insert mode: >
@@ -2009,8 +2044,8 @@ col({expr}) The result is a Number, which is the byte index of the column
complete({startcol}, {matches}) *complete()* *E785* complete({startcol}, {matches}) *complete()* *E785*
Set the matches for Insert mode completion. Set the matches for Insert mode completion.
Can only be used in Insert mode. You need to use a mapping Can only be used in Insert mode. You need to use a mapping
with an expression argument |:map-<expr>| or CTRL-R = with CTRL-R = |i_CTRL-R|. It does not work after CTRL-O or
|i_CTRL-R|. It does not work after CTRL-O. with an expression mapping.
{startcol} is the byte offset in the line where the completed {startcol} is the byte offset in the line where the completed
text start. The text up to the cursor is the original text text start. The text up to the cursor is the original text
that will be replaced by the matches. Use col('.') for an that will be replaced by the matches. Use col('.') for an
@@ -2024,7 +2059,7 @@ complete({startcol}, {matches}) *complete()* *E785*
Insert mode completion. The popup menu will appear if Insert mode completion. The popup menu will appear if
specified, see |ins-completion-menu|. specified, see |ins-completion-menu|.
Example: > Example: >
inoremap <expr> <F5> ListMonths() inoremap <F5> <C-R>=ListMonths()<CR>
func! ListMonths() func! ListMonths()
call complete(col('.'), ['January', 'February', 'March', call complete(col('.'), ['January', 'February', 'March',
@@ -2161,8 +2196,8 @@ cscope_connection([{num} , {dbpath} [, {prepend}]])
< <
cursor({lnum}, {col} [, {off}]) *cursor()* cursor({lnum}, {col} [, {off}]) *cursor()*
cursor({list}) cursor({list})
Positions the cursor at the column {col} in the line {lnum}. Positions the cursor at the column (byte count) {col} in the
The first column is one. line {lnum}. The first column is one.
When there is one argument {list} this is used as a |List| When there is one argument {list} this is used as a |List|
with two or three items {lnum}, {col} and {off}. This is like with two or three items {lnum}, {col} and {off}. This is like
the return value of |getpos()|, but without the first item. the return value of |getpos()|, but without the first item.
@@ -2176,7 +2211,7 @@ cursor({list})
If {col} is zero, the cursor will stay in the current column. If {col} is zero, the cursor will stay in the current column.
When 'virtualedit' is used {off} specifies the offset in When 'virtualedit' is used {off} specifies the offset in
screen columns from the start of the character. E.g., a screen columns from the start of the character. E.g., a
position within a Tab or after the last character. position within a <Tab> or after the last character.
deepcopy({expr}[, {noref}]) *deepcopy()* *E698* deepcopy({expr}[, {noref}]) *deepcopy()* *E698*
@@ -2313,6 +2348,8 @@ exists({expr}) The result is a Number, which is non-zero if {expr} is
3 matches several user commands 3 matches several user commands
To check for a supported command To check for a supported command
always check the return value to be 2. always check the return value to be 2.
:2match The |:2match| command.
:3match The |:3match| command.
#event autocommand defined for this event #event autocommand defined for this event
#event#pattern autocommand defined for this event and #event#pattern autocommand defined for this event and
pattern (the pattern is taken pattern (the pattern is taken
@@ -2344,10 +2381,16 @@ exists({expr}) The result is a Number, which is non-zero if {expr} is
exists("##ColorScheme") exists("##ColorScheme")
< There must be no space between the symbol (&/$/*/#) and the < There must be no space between the symbol (&/$/*/#) and the
name. name.
Trailing characters that can't be part of the name are often There must be no extra characters after the name, although in
ignored, but don't depend on it. a few cases this is ignored. That may become more strict in
Note that the argument must be a string, not the name of the the future, thus don't count on it!
variable itself! For example: > Working example: >
exists(":make")
< NOT working example: >
exists(":make install")
< Note that the argument must be a string, not the name of the
variable itself. For example: >
exists(bufcount) exists(bufcount)
< This doesn't check for existence of the "bufcount" variable, < This doesn't check for existence of the "bufcount" variable,
but gets the value of "bufcount", and checks if that exists. but gets the value of "bufcount", and checks if that exists.
@@ -2461,14 +2504,14 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
feedkeys({string} [, {mode}]) *feedkeys()* feedkeys({string} [, {mode}]) *feedkeys()*
Characters in {string} are queued for processing as if they Characters in {string} are queued for processing as if they
come from a mapping or were typed by user. They are added to come from a mapping or were typed by the user. They are added
the end of the typeahead buffer, thus if a mapping is still to the end of the typeahead buffer, thus if a mapping is still
being executed these characters come after them. being executed these characters come after them.
The function does not wait for processing of keys contained in The function does not wait for processing of keys contained in
{string}. {string}.
To include special keys into {string}, use double-quotes To include special keys into {string}, use double-quotes
and "\..." notation |expr-quote|. For example, and "\..." notation |expr-quote|. For example,
feedkeys("\<CR>") simulates pressing of the Enter key. But feedkeys("\<CR>") simulates pressing of the <Enter> key. But
feedkeys('\<CR>') pushes 5 characters. feedkeys('\<CR>') pushes 5 characters.
If {mode} is absent, keys are remapped. If {mode} is absent, keys are remapped.
{mode} is a String, which can contain these character flags: {mode} is a String, which can contain these character flags:
@@ -2484,10 +2527,19 @@ filereadable({file}) *filereadable()*
name {file} exists, and can be read. If {file} doesn't exist, name {file} exists, and can be read. If {file} doesn't exist,
or is a directory, the result is FALSE. {file} is any or is a directory, the result is FALSE. {file} is any
expression, which is used as a String. expression, which is used as a String.
If you don't care about the file being readable you can use
|glob()|.
*file_readable()* *file_readable()*
Obsolete name: file_readable(). Obsolete name: file_readable().
filewritable({file}) *filewritable()*
The result is a Number, which is 1 when a file with the
name {file} exists, and can be written. If {file} doesn't
exist, or is not writable, the result is 0. If (file) is a
directory, and we can write to it, the result is 2.
filter({expr}, {string}) *filter()* filter({expr}, {string}) *filter()*
{expr} must be a |List| or a |Dictionary|. {expr} must be a |List| or a |Dictionary|.
For each item in {expr} evaluate {string} and when the result For each item in {expr} evaluate {string} and when the result
@@ -2516,10 +2568,12 @@ filter({expr}, {string}) *filter()*
finddir({name}[, {path}[, {count}]]) *finddir()* finddir({name}[, {path}[, {count}]]) *finddir()*
Find directory {name} in {path}. Returns the path of the Find directory {name} in {path}. Supports both downwards and
first found match. When the found directory is below the upwards recursive directory searches. See |file-searching|
current directory a relative path is returned. Otherwise a for the syntax of {path}.
full path is returned. Returns the path of the first found match. When the found
directory is below the current directory a relative path is
returned. Otherwise a full path is returned.
If {path} is omitted or empty then 'path' is used. If {path} is omitted or empty then 'path' is used.
If the optional {count} is given, find {count}'s occurrence of If the optional {count} is given, find {count}'s occurrence of
{name} in {path} instead of the first one. {name} in {path} instead of the first one.
@@ -2532,14 +2586,8 @@ findfile({name}[, {path}[, {count}]]) *findfile()*
Uses 'suffixesadd'. Uses 'suffixesadd'.
Example: > Example: >
:echo findfile("tags.vim", ".;") :echo findfile("tags.vim", ".;")
< Searches from the current directory upwards until it finds < Searches from the directory of the current file upwards until
the file "tags.vim". it finds the file "tags.vim".
filewritable({file}) *filewritable()*
The result is a Number, which is 1 when a file with the
name {file} exists, and can be written. If {file} doesn't
exist, or is not writable, the result is 0. If (file) is a
directory, and we can write to it, the result is 2.
fnamemodify({fname}, {mods}) *fnamemodify()* fnamemodify({fname}, {mods}) *fnamemodify()*
Modify file name {fname} according to {mods}. {mods} is a Modify file name {fname} according to {mods}. {mods} is a
@@ -2671,21 +2719,38 @@ getbufvar({expr}, {varname}) *getbufvar()*
:echo "todo myvar = " . getbufvar("todo", "myvar") :echo "todo myvar = " . getbufvar("todo", "myvar")
< <
getchar([expr]) *getchar()* getchar([expr]) *getchar()*
Get a single character from the user. If it is an 8-bit Get a single character from the user or input stream.
character, the result is a number. Otherwise a String is
returned with the encoded character. For a special key it's a
sequence of bytes starting with 0x80 (decimal: 128).
If [expr] is omitted, wait until a character is available. If [expr] is omitted, wait until a character is available.
If [expr] is 0, only get a character when one is available. If [expr] is 0, only get a character when one is available.
Return zero otherwise.
If [expr] is 1, only check if a character is available, it is If [expr] is 1, only check if a character is available, it is
not consumed. If a normal character is not consumed. Return zero if no character available.
available, it is returned, otherwise a
non-zero value is returned. Without {expr} and when {expr} is 0 a whole character or
If a normal character available, it is returned as a Number. special key is returned. If it is an 8-bit character, the
result is a number. Use nr2char() to convert it to a String.
Otherwise a String is returned with the encoded character.
For a special key it's a sequence of bytes starting with 0x80
(decimal: 128). This is the same value as the string
"\<Key>", e.g., "\<Left>". The returned value is also a
String when a modifier (shift, control, alt) was used that is
not included in the character.
When {expr} is 1 only the first byte is returned. For a
one-byte character it is the character itself as a number.
Use nr2char() to convert it to a String. Use nr2char() to convert it to a String.
The returned value is zero if no character is available.
The returned value is a string of characters for special keys When the user clicks a mouse button, the mouse event will be
and when a modifier (shift, control, alt) was used. returned. The position can then be found in |v:mouse_col|,
|v:mouse_lnum| and |v:mouse_win|. This example positions the
mouse as it would normally happen: >
let c = getchar()
if c == "\<LeftMouse>" && v:mouse_win > 0
exe v:mouse_win . "wincmd w"
exe v:mouse_lnum
exe "normal " . v:mouse_col . "|"
endif
<
There is no prompt, you will somehow have to make clear to the There is no prompt, you will somehow have to make clear to the
user that a character has to be typed. user that a character has to be typed.
There is no mapping for the character. There is no mapping for the character.
@@ -2759,6 +2824,8 @@ getfsize({fname}) *getfsize()*
given file {fname}. given file {fname}.
If {fname} is a directory, 0 is returned. If {fname} is a directory, 0 is returned.
If the file {fname} can't be found, -1 is returned. If the file {fname} can't be found, -1 is returned.
If the size of {fname} is too big to fit in a Number then -2
is returned.
getfontname([{name}]) *getfontname()* getfontname([{name}]) *getfontname()*
Without an argument returns the name of the normal font being Without an argument returns the name of the normal font being
@@ -2838,6 +2905,8 @@ getline({lnum} [, {end}])
:let end = search("^$") - 1 :let end = search("^$") - 1
:let lines = getline(start, end) :let lines = getline(start, end)
< To get lines from another buffer see |getbufline()|
getloclist({nr}) *getloclist()* getloclist({nr}) *getloclist()*
Returns a list with all the entries in the location list for Returns a list with all the entries in the location list for
window {nr}. When {nr} is zero the current window is used. window {nr}. When {nr} is zero the current window is used.
@@ -2855,12 +2924,14 @@ getqflist() *getqflist()*
vcol non-zero: "col" is visual column vcol non-zero: "col" is visual column
zero: "col" is byte index zero: "col" is byte index
nr error number nr error number
pattern search pattern used to locate the error
text description of the error text description of the error
type type of the error, 'E', '1', etc. type type of the error, 'E', '1', etc.
valid non-zero: recognized error message valid non-zero: recognized error message
When there is no error list or it's empty an empty list is When there is no error list or it's empty an empty list is
returned. returned. Quickfix list entries with non-existing buffer
number are returned with "bufnr" set to zero.
Useful application: Find pattern matches in multiple files and Useful application: Find pattern matches in multiple files and
do something with them: > do something with them: >
@@ -2893,19 +2964,23 @@ getregtype([{regname}]) *getregtype()*
If {regname} is not specified, |v:register| is used. If {regname} is not specified, |v:register| is used.
gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()* gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()*
Get the value of an option or local window variable {varname} Get the value of window-local variable {varname} in window
in window {winnr} in tab page {tabnr}. {winnr} in tab page {tabnr}.
When {varname} starts with "&" get the value of a window-local
option.
Tabs are numbered starting with one. For the current tabpage Tabs are numbered starting with one. For the current tabpage
use |getwinvar()|. use |getwinvar()|.
When {winnr} is zero the current window is used. When {winnr} is zero the current window is used.
This also works for a global option, buffer-local option and This also works for a global option, buffer-local option and
window-local option, but it doesn't work for a global variable window-local option, but it doesn't work for a global variable
or buffer-local variable. or buffer-local variable.
Note that the name without "w:" must be used. When {varname} is empty a dictionary with all window-local
variables is returned.
Note that {varname} must be the name without "w:".
Examples: > Examples: >
:let list_is_on = gettabwinvar(1, 2, '&list') :let list_is_on = gettabwinvar(1, 2, '&list')
:echo "myvar = " . gettabwinvar(3, 1, 'myvar') :echo "myvar = " . gettabwinvar(3, 1, 'myvar')
<
*getwinposx()* *getwinposx()*
getwinposx() The result is a Number, which is the X coordinate in pixels of getwinposx() The result is a Number, which is the X coordinate in pixels of
the left hand side of the GUI Vim window. The result will be the left hand side of the GUI Vim window. The result will be
@@ -2923,7 +2998,9 @@ getwinvar({winnr}, {varname}) *getwinvar()*
:echo "myvar = " . getwinvar(1, 'myvar') :echo "myvar = " . getwinvar(1, 'myvar')
< <
*glob()* *glob()*
glob({expr}) Expand the file wildcards in {expr}. The result is a String. glob({expr}) Expand the file wildcards in {expr}. See |wildcards| for the
use of special characters.
The result is a String.
When there are several matches, they are separated by <NL> When there are several matches, they are separated by <NL>
characters. characters.
If the expansion fails, the result is an empty string. If the expansion fails, the result is an empty string.
@@ -2970,6 +3047,9 @@ has_key({dict}, {key}) *has_key()*
The result is a Number, which is 1 if |Dictionary| {dict} has The result is a Number, which is 1 if |Dictionary| {dict} has
an entry with key {key}. Zero otherwise. an entry with key {key}. Zero otherwise.
haslocaldir() *haslocaldir()*
The result is a Number, which is 1 when the current
window has set a local path via |:lcd|, and 0 otherwise.
hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()* hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
The result is a Number, which is 1 if there is a mapping that The result is a Number, which is 1 if there is a mapping that
@@ -3204,7 +3284,8 @@ inputlist({textlist}) *inputlist()*
is returned. is returned.
Make sure {textlist} has less then 'lines' entries, otherwise Make sure {textlist} has less then 'lines' entries, otherwise
it won't work. It's a good idea to put the entry number at it won't work. It's a good idea to put the entry number at
the start of the string. Example: > the start of the string. And put a prompt in the first item.
Example: >
let color = inputlist(['Select color:', '1. red', let color = inputlist(['Select color:', '1. red',
\ '2. green', '3. blue']) \ '2. green', '3. blue'])
@@ -3364,7 +3445,8 @@ line({expr}) The result is a Number, which is the line number of the file
returned) returned)
w0 first line visible in current window w0 first line visible in current window
w$ last line visible in current window w$ last line visible in current window
Note that a mark in another file can be used. Note that a mark in another file can be used. The line number
then applies to another buffer.
To get the column number use |col()|. To get both use To get the column number use |col()|. To get both use
|getpos()|. |getpos()|.
Examples: > Examples: >
@@ -3597,7 +3679,7 @@ max({list}) Return the maximum value of all items in {list}.
An empty |List| results in zero. An empty |List| results in zero.
*min()* *min()*
min({list}) Return the minumum value of all items in {list}. min({list}) Return the minimum value of all items in {list}.
If {list} is not a list or one of the items in {list} cannot If {list} is not a list or one of the items in {list} cannot
be used as a Number this results in an error. be used as a Number this results in an error.
An empty |List| results in zero. An empty |List| results in zero.
@@ -3662,7 +3744,7 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr}
column is 1. column is 1.
The "off" number is zero, unless 'virtualedit' is used. Then The "off" number is zero, unless 'virtualedit' is used. Then
it is the offset in screen columns from the start of the it is the offset in screen columns from the start of the
character. E.g., a position within a Tab or after the last character. E.g., a position within a <Tab> or after the last
character. character.
This can be used to save and restore the cursor position: > This can be used to save and restore the cursor position: >
let save_cursor = getpos(".") let save_cursor = getpos(".")
@@ -3892,7 +3974,10 @@ reltimestr({time}) *reltimestr()*
echo reltimestr(reltime(start)) echo reltimestr(reltime(start))
< Note that overhead for the commands will be added to the time. < Note that overhead for the commands will be added to the time.
The accuracy depends on the system. The accuracy depends on the system.
Also see |profiling|. Leading spaces are used to make the string align nicely. You
can use split() to remove it. >
echo split(reltimestr(reltime(start)))[0]
< Also see |profiling|.
{only available when compiled with the +reltime feature} {only available when compiled with the +reltime feature}
*remote_expr()* *E449* *remote_expr()* *E449*
@@ -4048,6 +4133,8 @@ search({pattern} [, {flags} [, {stopline}]]) *search()*
cursor is moved. The 's' flag cannot be combined with the 'n' cursor is moved. The 's' flag cannot be combined with the 'n'
flag. flag.
'ignorecase', 'smartcase' and 'magic' are used.
When the {stopline} argument is given then the search stops When the {stopline} argument is given then the search stops
after searching this line. This is useful to restrict the after searching this line. This is useful to restrict the
search to a range of lines. Examples: > search to a range of lines. Examples: >
@@ -4317,11 +4404,14 @@ setpos({expr}, {list})
The "off" number is only used when 'virtualedit' is set. Then The "off" number is only used when 'virtualedit' is set. Then
it is the offset in screen columns from the start of the it is the offset in screen columns from the start of the
character. E.g., a position within a Tab or after the last character. E.g., a position within a <Tab> or after the last
character. character.
Also see |getpos()| Also see |getpos()|
This does not restore the preferred column for moving
vertically. See |winrestview()| for that.
setqflist({list} [, {action}]) *setqflist()* setqflist({list} [, {action}]) *setqflist()*
Create or replace or add to the quickfix list using the items Create or replace or add to the quickfix list using the items
@@ -4329,7 +4419,10 @@ setqflist({list} [, {action}]) *setqflist()*
Non-dictionary items in {list} are ignored. Each dictionary Non-dictionary items in {list} are ignored. Each dictionary
item can contain the following entries: item can contain the following entries:
filename name of a file bufnr buffer number; must be the number of a valid
buffer
filename name of a file; only used when "bufnr" is not
present or it is invalid.
lnum line number in the file lnum line number in the file
pattern search pattern used to locate the error pattern search pattern used to locate the error
col column number col column number
@@ -4342,11 +4435,13 @@ setqflist({list} [, {action}]) *setqflist()*
The "col", "vcol", "nr", "type" and "text" entries are The "col", "vcol", "nr", "type" and "text" entries are
optional. Either "lnum" or "pattern" entry can be used to optional. Either "lnum" or "pattern" entry can be used to
locate a matching error line. locate a matching error line.
If the "filename" entry is not present or neither the "lnum" If the "filename" and "bufnr" entries are not present or
or "pattern" entries are present, then the item will not be neither the "lnum" or "pattern" entries are present, then the
handled as an error line. item will not be handled as an error line.
If both "pattern" and "lnum" are present then "pattern" will If both "pattern" and "lnum" are present then "pattern" will
be used. be used.
Note that the list is not exactly the same as what
|getqflist()| returns.
If {action} is set to 'a', then the items from {list} are If {action} is set to 'a', then the items from {list} are
added to the existing quickfix list. If there is no existing added to the existing quickfix list. If there is no existing
@@ -4374,7 +4469,7 @@ setreg({regname}, {value} [,{options}])
If a number immediately follows "b" or "<CTRL-V>" then this is If a number immediately follows "b" or "<CTRL-V>" then this is
used as the width of the selection - if it is not specified used as the width of the selection - if it is not specified
then the width of the block is set to the number of characters then the width of the block is set to the number of characters
in the longest line (counting a <TAB> as 1 character). in the longest line (counting a <Tab> as 1 character).
If {options} contains no register settings, then the default If {options} contains no register settings, then the default
is to use character mode unless {value} ends in a <NL>. is to use character mode unless {value} ends in a <NL>.
@@ -4420,6 +4515,21 @@ setwinvar({nr}, {varname}, {val}) *setwinvar()*
:call setwinvar(1, "&list", 0) :call setwinvar(1, "&list", 0)
:call setwinvar(2, "myvar", "foobar") :call setwinvar(2, "myvar", "foobar")
shellescape({string}) *shellescape()*
Escape {string} for use as shell command argument.
On MS-Windows and MS-DOS, when 'shellslash' is not set, it
will enclose {string} double quotes and double all double
quotes within {string}.
For other systems, it will enclose {string} in single quotes
and replace all "'" with "'\''".
Example: >
:echo shellescape('c:\program files\vim')
< results in:
"c:\program files\vim" ~
Example usage: >
:call system("chmod +x -- " . shellescape(expand("%")))
simplify({filename}) *simplify()* simplify({filename}) *simplify()*
Simplify the file name as much as possible without changing Simplify the file name as much as possible without changing
the meaning. Shortcuts (on MS-Windows) or symbolic links (on the meaning. Shortcuts (on MS-Windows) or symbolic links (on
@@ -4596,6 +4706,7 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number,
List [item, item] List [item, item]
Dictionary {key: value, key: value} Dictionary {key: value, key: value}
Note that in String values the ' character is doubled. Note that in String values the ' character is doubled.
Also see |strtrans()|.
*strlen()* *strlen()*
strlen({expr}) The result is a Number, which is the length of the String strlen({expr}) The result is a Number, which is the length of the String
@@ -4665,6 +4776,7 @@ substitute({expr}, {pat}, {sub}, {flags}) *substitute()*
like the ":substitute" command (without any flags). But the like the ":substitute" command (without any flags). But the
matching with {pat} is always done like the 'magic' option is matching with {pat} is always done like the 'magic' option is
set and 'cpoptions' is empty (to make scripts portable). set and 'cpoptions' is empty (to make scripts portable).
'ignorecase' is still relevant. 'smartcase' is not used.
See |string-match| for how {pat} is used. See |string-match| for how {pat} is used.
And a "~" in {sub} is not replaced with the previous {sub}. And a "~" in {sub} is not replaced with the previous {sub}.
Note that some codes in {sub} have a special meaning Note that some codes in {sub} have a special meaning
@@ -4817,22 +4929,23 @@ taglist({expr}) *taglist()*
entries: entries:
name Name of the tag. name Name of the tag.
filename Name of the file where the tag is filename Name of the file where the tag is
defined. defined. It is either relative to the
current directory or a full path.
cmd Ex command used to locate the tag in cmd Ex command used to locate the tag in
the file. the file.
kind Type of the tag. The value for this kind Type of the tag. The value for this
entry depends on the language specific entry depends on the language specific
kind values generated by the ctags kind values. Only available when
tool. using a tags file generated by
Exuberant ctags or hdrtag.
static A file specific tag. Refer to static A file specific tag. Refer to
|static-tag| for more information. |static-tag| for more information.
The "kind" entry is only available when using Exuberant ctags More entries may be present, depending on the content of the
generated tags file. More entries may be present, depending tags file: access, implementation, inherits and signature.
on the content of the tags file: access, implementation, Refer to the ctags documentation for information about these
inherits and signature. Refer to the ctags documentation for fields. For C code the fields "struct", "class" and "enum"
information about these fields. For C code the fields may appear, they give the name of the entity the tag is
"struct", "class" and "enum" may appear, they give the name of contained in.
the entity the tag is contained in.
The ex-command 'cmd' can be either an ex search pattern, a The ex-command 'cmd' can be either an ex search pattern, a
line number or a line number followed by a byte number. line number or a line number followed by a byte number.
@@ -4916,7 +5029,7 @@ virtcol({expr}) *virtcol()*
"lnum" or "col" is out of range then virtcol() returns zero. "lnum" or "col" is out of range then virtcol() returns zero.
When 'virtualedit' is used it can be [lnum, col, off], where When 'virtualedit' is used it can be [lnum, col, off], where
"off" is the offset in screen columns from the start of the "off" is the offset in screen columns from the start of the
character. E.g., a position within a Tab or after the last character. E.g., a position within a <Tab> or after the last
character. character.
For the byte position use |col()|. For the byte position use |col()|.
When Virtual editing is active in the current mode, a position When Virtual editing is active in the current mode, a position
@@ -4934,6 +5047,10 @@ virtcol({expr}) *virtcol()*
virtcol("$") with text "foo^Lbar", returns 9 virtcol("$") with text "foo^Lbar", returns 9
virtcol("'t") with text " there", with 't at 'h', returns 6 virtcol("'t") with text " there", with 't at 'h', returns 6
< The first column is 1. 0 is returned for an error. < The first column is 1. 0 is returned for an error.
A more advanced example that echoes the maximum length of
all lines: >
echo max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
visualmode([expr]) *visualmode()* visualmode([expr]) *visualmode()*
The result is a String, which describes the last Visual mode The result is a String, which describes the last Visual mode
@@ -4988,9 +5105,11 @@ winnr([{arg}]) The result is a Number, which is the number of the current
last window is returned (the window count). last window is returned (the window count).
When the optional argument is "#", the number of the last When the optional argument is "#", the number of the last
accessed window is returned (where |CTRL-W_p| goes to). accessed window is returned (where |CTRL-W_p| goes to).
If there is no previous window 0 is returned. If there is no previous window or it is in another tab page 0
is returned.
The number can be used with |CTRL-W_w| and ":wincmd w" The number can be used with |CTRL-W_w| and ":wincmd w"
|:wincmd|. |:wincmd|.
Also see |tabpagewinnr()|.
*winrestcmd()* *winrestcmd()*
winrestcmd() Returns a sequence of |:resize| commands that should restore winrestcmd() Returns a sequence of |:resize| commands that should restore
@@ -5075,6 +5194,8 @@ There are three types of features:
Then the "patch123" feature means that patch 123 has been included for Then the "patch123" feature means that patch 123 has been included for
this version. Example (checking version 6.2.148 or later): > this version. Example (checking version 6.2.148 or later): >
:if v:version > 602 || v:version == 602 && has("patch148") :if v:version > 602 || v:version == 602 && has("patch148")
< Note that it's possible for patch 147 to be omitted even though 148 is
included.
all_builtin_terms Compiled with all builtin terminals enabled. all_builtin_terms Compiled with all builtin terminals enabled.
amiga Amiga version of Vim. amiga Amiga version of Vim.
@@ -5376,7 +5497,7 @@ See |:verbose-cmd| for more information.
*function-argument* *a:var* *function-argument* *a:var*
An argument can be defined by giving its name. In the function this can then An argument can be defined by giving its name. In the function this can then
be used as "a:name" ("a:" for argument). be used as "a:name" ("a:" for argument).
*a:0* *a:1* *a:000* *E740* *a:0* *a:1* *a:000* *E740* *...*
Up to 20 arguments can be given, separated by commas. After the named Up to 20 arguments can be given, separated by commas. After the named
arguments an argument "..." can be specified, which means that more arguments arguments an argument "..." can be specified, which means that more arguments
may optionally be following. In the function the extra arguments can be used may optionally be following. In the function the extra arguments can be used
@@ -5419,40 +5540,25 @@ This function can then be called with: >
call Table("Table", "line1", "line2") call Table("Table", "line1", "line2")
call Table("Empty Table") call Table("Empty Table")
To return more than one value, pass the name of a global variable: > To return more than one value, return a |List|: >
:function Compute(n1, n2, divname) :function Compute(n1, n2)
: if a:n2 == 0 : if a:n2 == 0
: return "fail" : return ["fail", 0]
: endif : endif
: let g:{a:divname} = a:n1 / a:n2 : return ["ok", a:n1 / a:n2]
: return "ok"
:endfunction :endfunction
This function can then be called with: > This function can then be called with: >
:let success = Compute(13, 1324, "div") :let [success, div] = Compute(102, 6)
:if success == "ok" :if success == "ok"
: echo div : echo div
:endif :endif
<
An alternative is to return a command that can be executed. This also works
with local variables in a calling function. Example: >
:function Foo()
: execute Bar()
: echo "line " . lnum . " column " . col
:endfunction
:function Bar()
: return "let lnum = " . line(".") . " | let col = " . col(".")
:endfunction
The names "lnum" and "col" could also be passed as argument to Bar(), to allow
the caller to set the names.
*:cal* *:call* *E107* *E117* *:cal* *:call* *E107* *E117*
:[range]cal[l] {name}([arguments]) :[range]cal[l] {name}([arguments])
Call a function. The name of the function and its arguments Call a function. The name of the function and its arguments
are as specified with |:function|. Up to 20 arguments can be are as specified with |:function|. Up to 20 arguments can be
used. used. The returned value is discarded.
Without a range and for functions that accept a range, the Without a range and for functions that accept a range, the
function is called once. When a range is given the cursor is function is called once. When a range is given the cursor is
positioned at the start of the first line before executing the positioned at the start of the first line before executing the
@@ -5483,6 +5589,11 @@ the caller to set the names.
This function inserts the continuation character "\" in front This function inserts the continuation character "\" in front
of all the lines in the range, except the first one. of all the lines in the range, except the first one.
When the function returns a composite value it can be further
dereferenced, but the range will not be used then. Example: >
:4,8call GetDict().method()
< Here GetDict() gets the range but method() does not.
*E132* *E132*
The recursiveness of user functions is restricted with the |'maxfuncdepth'| The recursiveness of user functions is restricted with the |'maxfuncdepth'|
option. option.
@@ -5669,7 +5780,7 @@ This would call the function "my_func_whizz(parameter)".
Append {expr1} to register {reg-name}. If the Append {expr1} to register {reg-name}. If the
register was empty it's like setting it to {expr1}. register was empty it's like setting it to {expr1}.
:let &{option-name} = {expr1} *:let-option* *:let-star* :let &{option-name} = {expr1} *:let-option* *:let-&*
Set option {option-name} to the result of the Set option {option-name} to the result of the
expression {expr1}. A String or Number value is expression {expr1}. A String or Number value is
always converted to the type of the option. always converted to the type of the option.
@@ -5759,7 +5870,7 @@ This would call the function "my_func_whizz(parameter)".
* Funcref * Funcref
:unl[et][!] {name} ... *:unlet* *:unl* *E108* :unl[et][!] {name} ... *:unlet* *:unl* *E108* *E795*
Remove the internal variable {name}. Several variable Remove the internal variable {name}. Several variable
names can be given, they are all removed. The name names can be given, they are all removed. The name
may also be a |List| or |Dictionary| item. may also be a |List| or |Dictionary| item.
@@ -6029,11 +6140,14 @@ This would call the function "my_func_whizz(parameter)".
Cannot be followed by a comment. Cannot be followed by a comment.
Example: > Example: >
:echo "the value of 'shell' is" &shell :echo "the value of 'shell' is" &shell
< A later redraw may make the message disappear again. < *:echo-redraw*
To avoid that a command from before the ":echo" causes A later redraw may make the message disappear again.
a redraw afterwards (redraws are often postponed until And since Vim mostly postpones redrawing until it's
you type something), force a redraw with the |:redraw| finished with a sequence of commands this happens
command. Example: > quite often. To avoid that a command from before the
":echo" causes a redraw afterwards (redraws are often
postponed until you type something), force a redraw
with the |:redraw| command. Example: >
:new | redraw | echo "there is a new window" :new | redraw | echo "there is a new window"
< <
*:echon* *:echon*
@@ -6073,10 +6187,16 @@ This would call the function "my_func_whizz(parameter)".
Spaces are placed between the arguments as with the Spaces are placed between the arguments as with the
|:echo| command. But unprintable characters are |:echo| command. But unprintable characters are
displayed, not interpreted. displayed, not interpreted.
The parsing works slightly different from |:echo|,
more like |:execute|. All the expressions are first
evaluated and concatenated before echoing anything.
The expressions must evaluate to a Number or String, a
Dictionary or List causes an error.
Uses the highlighting set by the |:echohl| command. Uses the highlighting set by the |:echohl| command.
Example: > Example: >
:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see." :echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
< < See |:echo-redraw| to avoid the message disappearing
when the screen is redrawn.
*:echoe* *:echoerr* *:echoe* *:echoerr*
:echoe[rr] {expr1} .. Echo the expression(s) as an error message, saving the :echoe[rr] {expr1} .. Echo the expression(s) as an error message, saving the
message in the |message-history|. When used in a message in the |message-history|. When used in a
@@ -7127,106 +7247,51 @@ a "E600: Missing :endtry" error message is given, see |except-single-line|.
============================================================================== ==============================================================================
9. Examples *eval-examples* 9. Examples *eval-examples*
Printing in Hex ~ Printing in Binary ~
> >
:" The function Nr2Hex() returns the Hex string of a number. :" The function Nr2Bin() returns the Hex string of a number.
:func Nr2Hex(nr) :func Nr2Bin(nr)
: let n = a:nr : let n = a:nr
: let r = "" : let r = ""
: while n : while n
: let r = '0123456789ABCDEF'[n % 16] . r : let r = '01'[n % 2] . r
: let n = n / 16 : let n = n / 2
: endwhile : endwhile
: return r : return r
:endfunc :endfunc
:" The function String2Hex() converts each character in a string to a two :" The function String2Bin() converts each character in a string to a
:" character Hex string. :" binary string, separated with dashes.
:func String2Hex(str) :func String2Bin(str)
: let out = '' : let out = ''
: let ix = 0 : for ix in range(strlen(a:str))
: while ix < strlen(a:str) : let out = out . '-' . Nr2Bin(char2nr(a:str[ix]))
: let out = out . Nr2Hex(char2nr(a:str[ix])) : endfor
: let ix = ix + 1 : return out[1:]
: endwhile
: return out
:endfunc :endfunc
Example of its use: > Example of its use: >
:echo Nr2Hex(32) :echo Nr2Bin(32)
result: "20" > result: "100000" >
:echo String2Hex("32") :echo String2Bin("32")
result: "3332" result: "110011-110010"
Sorting lines (by Robert Webb) ~ Sorting lines ~
Here is a Vim script to sort lines. Highlight the lines in Vim and type This example sorts lines with a specific compare function. >
":Sort". This doesn't call any external programs so it'll work on any
platform. The function Sort() actually takes the name of a comparison :func SortBuffer()
function as its argument, like qsort() does in C. So you could supply it : let lines = getline(1, '$')
with different comparison functions in order to sort according to date etc. : call sort(lines, function("Strcmp"))
> : call setline(1, lines)
:" Function for use with Sort(), to compare two strings.
:func! Strcmp(str1, str2)
: if (a:str1 < a:str2)
: return -1
: elseif (a:str1 > a:str2)
: return 1
: else
: return 0
: endif
:endfunction :endfunction
:" Sort lines. SortR() is called recursively. As a one-liner: >
:func! SortR(start, end, cmp) :call setline(1, sort(getline(1, '$'), function("Strcmp")))
: if (a:start >= a:end)
: return
: endif
: let partition = a:start - 1
: let middle = partition
: let partStr = getline((a:start + a:end) / 2)
: let i = a:start
: while (i <= a:end)
: let str = getline(i)
: exec "let result = " . a:cmp . "(str, partStr)"
: if (result <= 0)
: " Need to put it before the partition. Swap lines i and partition.
: let partition = partition + 1
: if (result == 0)
: let middle = partition
: endif
: if (i != partition)
: let str2 = getline(partition)
: call setline(i, str2)
: call setline(partition, str)
: endif
: endif
: let i = i + 1
: endwhile
: " Now we have a pointer to the "middle" element, as far as partitioning
: " goes, which could be anywhere before the partition. Make sure it is at
: " the end of the partition.
: if (middle != partition)
: let str = getline(middle)
: let str2 = getline(partition)
: call setline(middle, str2)
: call setline(partition, str)
: endif
: call SortR(a:start, partition - 1, a:cmp)
: call SortR(partition + 1, a:end, a:cmp)
:endfunc
:" To Sort a range of lines, pass the range to Sort() along with the name of a scanf() replacement ~
:" function that will compare two lines.
:func! Sort(cmp) range
: call SortR(a:firstline, a:lastline, a:cmp)
:endfunc
:" :Sort takes a range of lines and sorts them.
:command! -nargs=0 -range Sort <line1>,<line2>call Sort("Strcmp")
<
*sscanf* *sscanf*
There is no sscanf() function in Vim. If you need to extract parts from a There is no sscanf() function in Vim. If you need to extract parts from a
line, you can use matchstr() and substitute() to do it. This example shows line, you can use matchstr() and substitute() to do it. This example shows
@@ -7244,6 +7309,35 @@ how to get the file name, line number and column number out of a line like
The input is in the variable "line", the results in the variables "file", The input is in the variable "line", the results in the variables "file",
"lnum" and "col". (idea from Michael Geddes) "lnum" and "col". (idea from Michael Geddes)
getting the scriptnames in a Dictionary ~
*scriptnames-dictionary*
The |:scriptnames| command can be used to get a list of all script files that
have been sourced. There is no equivalent function or variable for this
(because it's rarely needed). In case you need to manipulate the list this
code can be used: >
" Get the output of ":scriptnames" in the scriptnames_output variable.
let scriptnames_output = ''
redir => scriptnames_output
silent scriptnames
redir END
" Split the output into lines and parse each line. Add an entry to the
" "scripts" dictionary.
let scripts = {}
for line in split(scriptnames_output, "\n")
" Only do non-blank lines.
if line =~ '\S'
" Get the first number in the line.
let nr = matchstr(line, '\d\+')
" Get the file name, remove the script number " 123: ".
let name = substitute(line, '.\+:\s*', '', '')
" Add an item to the Dictionary
let scripts[nr] = name
endif
endfor
unlet scriptnames_output
============================================================================== ==============================================================================
10. No +eval feature *no-eval-feature* 10. No +eval feature *no-eval-feature*
@@ -7278,6 +7372,7 @@ These items are not allowed in the sandbox:
- changing the buffer text - changing the buffer text
- defining or changing mapping, autocommands, functions, user commands - defining or changing mapping, autocommands, functions, user commands
- setting certain options (see |option-summary|) - setting certain options (see |option-summary|)
- setting certain v: variables (see |v:var|) *E794*
- executing a shell command - executing a shell command
- reading or writing a file - reading or writing a file
- jumping to another buffer or editing a file - jumping to another buffer or editing a file

View File

@@ -1,4 +1,4 @@
*farsi.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *farsi.txt* For Vim version 7.1. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Mortaza Ghassab Shiran VIM REFERENCE MANUAL by Mortaza Ghassab Shiran

View File

@@ -1,4 +1,4 @@
*filetype.txt* For Vim version 7.0g. Last change: 2006 Apr 28 *filetype.txt* For Vim version 7.1. Last change: 2007 May 10
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -43,6 +43,8 @@ Detail: The ":filetype on" command will load one of these files:
BufNewFile and BufRead events. If the file type is not found by the BufNewFile and BufRead events. If the file type is not found by the
name, the file $VIMRUNTIME/scripts.vim is used to detect it from the name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
contents of the file. contents of the file.
When the GUI is running or will start soon, the menu.vim script is
also sourced. See |'go-M'| about avoiding that.
To add your own file types, see |new-filetype| below. To search for help on a To add your own file types, see |new-filetype| below. To search for help on a
filetype prepend "ft-" and optionally append "-syntax", "-indent" or filetype prepend "ft-" and optionally append "-syntax", "-indent" or
@@ -304,24 +306,28 @@ all loaded. For example, if this command: >
set runtimepath set runtimepath
produces this output: > produces this output:
runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~
then Vim will load all plugins in these directories: > then Vim will load all plugins in these directories and below:
/etc/vim/plugin/ /etc/vim/plugin/ ~
~/.vim/plugin/ ~/.vim/plugin/ ~
/usr/local/share/vim/vim60/plugin/ /usr/local/share/vim/vim60/plugin/ ~
Note that the last one is the value of $VIMRUNTIME which has been expanded. Note that the last one is the value of $VIMRUNTIME which has been expanded.
What if it looks like your plugin is not being loaded? You can find out what What if it looks like your plugin is not being loaded? You can find out what
happens when Vim starts up by using the |-V| argument: > happens when Vim starts up by using the |-V| argument: >
vim -V1
vim -V2
You will see a lot of messages, in between them is a remark about loading the You will see a lot of messages, in between them is a remark about loading the
plugins. It starts with: > plugins. It starts with:
Searching for "plugin/*.vim" in
Searching for "plugin/**/*.vim" in ~
There you can see where Vim looks for your plugin scripts. There you can see where Vim looks for your plugin scripts.
============================================================================== ==============================================================================
@@ -417,7 +423,8 @@ Global mappings:
same as the local <Leader>o described above. same as the local <Leader>o described above.
Variables: Variables:
g:changelog_timeformat The date (and time) format used in ChangeLog entries. g:changelog_timeformat Deprecated; use g:changelog_dateformat instead.
g:changelog_dateformat The date (and time) format used in ChangeLog entries.
The format accepted is the same as for the The format accepted is the same as for the
|strftime()| function. |strftime()| function.
The default is "%Y-%m-%d" which is the standard format The default is "%Y-%m-%d" which is the standard format
@@ -467,6 +474,14 @@ g:changelog_date_entry_search
|2003-01-14 Full Name <user@host> |2003-01-14 Full Name <user@host>
< and some similar formats. < and some similar formats.
g:changelog_date_end_entry_search
The search pattern to use when searching for the end
of a date-entry.
The same tokens that can be used for
g:changelog_new_date_format can be used here as well.
The default is '^\s*$' which finds lines that contain
only whitespace or are completely empty.
The Changelog entries are inserted where they add the least amount of text. The Changelog entries are inserted where they add the least amount of text.
After figuring out the current date and user, the file is searched for an After figuring out the current date and user, the file is searched for an
entry beginning with the current date and user and if found adds another item entry beginning with the current date and user and if found adds another item

View File

@@ -1,4 +1,4 @@
*fold.txt* For Vim version 7.0g. Last change: 2006 Mar 29 *fold.txt* For Vim version 7.1. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -73,7 +73,7 @@ EXPR *fold-expr*
The folds are automatically defined by their foldlevel, like with the "indent" The folds are automatically defined by their foldlevel, like with the "indent"
method. The value of the 'foldexpr' option is evaluated to get the foldlevel method. The value of the 'foldexpr' option is evaluated to get the foldlevel
of a line. Examples: of a line. Examples:
This will create a fold for all consecutive lines that start with a Tab: > This will create a fold for all consecutive lines that start with a tab: >
:set foldexpr=getline(v:lnum)[0]==\"\\t\" :set foldexpr=getline(v:lnum)[0]==\"\\t\"
This will call a function to compute the fold level: > This will call a function to compute the fold level: >
:set foldexpr=MyFoldLevel(v:lnum) :set foldexpr=MyFoldLevel(v:lnum)

View File

@@ -1,303 +0,0 @@
*getscript.txt* For Vim version 7.0g. Last change: 2006 Apr 30
Get the Latest VimScripts
Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz>
(remove NOSPAM from the email address)
*GetLatestVimScripts-copyright*
Copyright: (c) 2004-2005 by Charles E. Campbell, Jr.
The VIM LICENSE applies to GetLatestVimScripts.vim and
GetLatestVimScripts.txt (see |copyright|) except use
"GetLatestVimScripts" instead of "Vim".
No warranty, express or implied. Use At-Your-Own-Risk.
==============================================================================
1. Contents *glvs-contents*
1. Contents.......................................: |glvs-contents|
2. GetLatestVimScripts Usage......................: |glvs|
3. GetLatestVimScripts Data File..................: |glvs-data|
4. GetLatestVimScripts Plugins....................: |glvs-plugins|
5. GetLatestVimScripts AutoInstall................: |glvs-autoinstall|
6. GetLatestVimScripts Algorithm..................: |glvs-alg|
7. GetLatestVimScripts History....................: |glvs-hist|
==============================================================================
2. GetLatestVimScripts Usage *getlatestvimscripts* *getscript* *glvs*
While in vim, type
>
:GetLatestVimScripts
<
Unless its been defined elsewhere,
>
:GLVS
<
will also work.
The script will attempt to update and, if so directed, automatically
install scripts from http://vim.sourceforge.net/. To do so it will
peruse a file, [.vim|vimfiles]/GetLatest/GetLatestVimScripts.dat
(see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin
directory (see |glvs-plugins|).
Scripts which have been downloaded will appear in the .../GetLatest
subdirectory.
The <GetLatestVimScripts.dat> file will be automatically be updated to
reflect the latest version of script(s) so downloaded.
==============================================================================
3. GetLatestVimScripts Data File *getlatestvimscripts-data* *glvs-data*
The Data file has a header which should appear as:
>
ScriptID SourceID Filename
--------------------------
<
Below that are three columns; the first two are numeric followed by a
text column.
The first number on each line gives the script's ScriptID. When
you're about to use a web browser to look at scripts on
http://vim.sf.net/, just before you click on the script's link, you'll
see a line resembling
http://vim.sourceforge.net/scripts/script.php?script_id=40
The "40" happens to be a ScriptID that GetLatestVimScripts needs to
download the associated page.
The second number on each line gives the script's SourceID. The
SourceID records the count of uploaded scripts as determined by
vim.sf.net; hence it serves to indicate "when" a script was uploaded.
Setting the SourceID to 1 insures that GetLatestVimScripts will assume
that the script it has is out-of-date.
The SourceID is extracted by GetLatestVimScripts from the script's
page on vim.sf.net; whenever its greater than the one stored in the
GetLatestVimScripts.dat file, the script will be downloaded.
If your script's author has included a special comment line in his/her
plugin, the plugin itself will be used by GetLatestVimScripts to build
your <GetLatestVimScripts.dat> file, including any dependencies on
other scripts it may have.
If your comment field begins with :AutoInstall:, GetLatestVimScripts
will attempt to automatically install the script. Thus,
GetLatestVimScripts thus provides a comprehensive ability to keep your
plugins up-to-date!
==============================================================================
4. GetLatestVimScripts Plugins *getlatestvimscripts-plugins* *glvs-plugins*
If a plugin author includes the following comment anywhere in their
plugin, GetLatestVimScripts will find it and use it to build user's
GetLatestVimScripts.dat files:
>
src_id
v
" GetLatestVimScripts: ### ### yourscriptname
^
scriptid
<
As an author, you should include such a line in to refer to your own
script plus any additional lines describing any plugin dependencies it
may have. Same format, of course!
If your command is auto-installable (see |glvs-autoinstall|), and most
scripts are, then you may include :AutoInstall: at the start of
"yourscriptname".
GetLatestVimScript commands for those scripts are then appended, if
not already present, to the user's GetLatest/GetLatestVimScripts.dat
file. Its a relatively painless way to automate the acquisition of
any scripts your plugins depend upon.
Now, as an author, you probably don't want GetLatestVimScripts to
download your own scripts for you yourself, thereby overwriting your
not-yet-released hard work. GetLatestVimScripts provides a solution
for this: put
>
0 0 yourscriptname
<
into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will
skip examining the "yourscriptname" scripts for those
GetLatestVimScript comment lines. As a result, those lines won't be
inadvertently installed into your <GetLatestVimScripts.dat> file and
subsequently used to download your own scripts. This is especially
important to do if you've included the :AutoInstall: option.
Be certain to use the same "yourscriptname" in the "0 0
yourscriptname" line as you've used in your GetLatestVimScript
comment!
==============================================================================
5. GetLatestVimScripts AutoInstall *getlatestvimscripts-autoinstall*
*glvs-autoinstall*
GetLatestVimScripts now supports "AutoInstall". Not all scripts are
supportive of auto-install, as they may have special things you need
to do to install them (please refer to the script's "install"
directions). On the other hand, most scripts will be
auto-installable.
To let GetLatestVimScripts do an autoinstall, the data file's comment
field should begin with (surrounding blanks are ignored):
:AutoInstall:
Both colons are needed, and it should begin the comment
(yourscriptname) field.
One may prevent any autoinstalling by putting the following line
in your <.vimrc>:
>
let g:GetLatestVimScripts_allowautoinstall= 0
<
With :AutoInstall: enabled, as it is by default, files which end with
---.tar.bz2 : decompressed and untarred in [.vim|vimfiles] directory
---.tar.gz : decompressed and untarred in [.vim|vimfiles] directory
---.vim.bz2 : decompressed and moved to the .vim/plugin directory
---.vim.gz : decompressed and moved to the .vim/plugin directory
---.zip : unzipped in [.vim|vimfiles] directory
---.vim : moved to [.vim|vimfiles]/plugin directory
and which merely need to have their components placed by the
untar/gunzip or move-to-plugin-directory process should be
auto-installable.
When is a script not auto-installable? Let me give an example:
>
[.vim|vimfiles]/after/syntax/blockhl.vim
<
The <blockhl.vim> script provides block highlighting for C/C++
programs; it is available at:
>
http://vim.sourceforge.net/scripts/script.php?script_id=104
<
Currently, vim's after/syntax only supports by-filetype scripts (in
blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install
would possibly overwrite the current user's after/syntax/c.vim file.
In my own case, I use <aftersyntax.vim> (renamed to
after/syntax/c.vim) to allow a after/syntax/c/ directory:
>
http://vim.sourceforge.net/scripts/script.php?script_id=1023
<
The script allows multiple syntax files to exist separately in the
after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and
build an appropriate tarball for auto-install because of the potential
for the after/syntax/c.vim contained in it to overwrite a user's
c.vim.
==============================================================================
6. GetLatestVimScripts Algorithm *getlatestvimscripts-algorithm*
*glvs-alg*
The Vim sourceforge page dynamically creates a page by keying off of
the so-called script-id. Within the webpage of
http://vim.sourceforge.net/scripts/script.php?script_id=40
is a line specifying the latest source-id (src_id). The source
identifier numbers are always increasing, hence if the src_id is
greater than the one recorded for the script in GetLatestVimScripts
then its time to download a newer copy of that script.
GetLatestVimScripts will then download the script and update its
internal database of script ids, source ids, and scriptnames.
The AutoInstall process will:
Move the file from GetLatest/ to the following directory
Unix : $HOME/.vim
Windows: $HOME\vimfiles
if the downloaded file ends with ".bz2"
bunzip2 it
else if the downloaded file ends with ".gz"
gunzip it
if the resulting file ends with ".zip"
unzip it
else if the resulting file ends with ".tar"
tar -oxvf it
else if the resulting file ends with ".vim"
move it to the plugin subdirectory
==============================================================================
7. GetLatestVimScripts History *getlatestvimscripts-history* *glvs-hist*
v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
unzip needs the -o flag to overwrite.
v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
script! Fixed.
v18 Mar 21, 2005 : * bugfix to automatic database construction
* bugfix - nowrapscan caused an error
(tnx to David Green for the fix)
Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in
:AutoInstall:s, even though its o/s is windows
Apr 01, 2005 * when downloading errors occurred, GLVS was
terminating early. It now just goes on to trying
the next script (after trying three times to
download a script description page)
Apr 20, 2005 * bugfix - when a failure to download occurred,
GetLatestVimScripts would stop early and claim that
everything was current. Fixed.
v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
defaults to 1, can be used to prevent all
:AutoInstall:
v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
* fixed bug with :AutoInstall: use of helptags
v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
always preventing downloads (just usually). Fixed.
v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
s:dotvim. Fixed.
v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
is zero. Useful for script authors; that way their
own GetLatestVimScripts activity won't overwrite
their scripts.
v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
was intended only for testing. Removed, now works.
* :AutoInstall: implemented
v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
* :GetLatestVimScripts command
* (runtimepath)/GetLatest/GetLatestVimScripts.dat
now holds scripts that need updating
v10 Apr 19, 2004 : * moved history from script to doc
v9 Jan 23, 2004 : windows (win32/win16/win95) will use
double quotes ("") whereas other systems will use
single quotes ('') around the urls in calls via wget
v8 Dec 01, 2003 : makes three tries at downloading
v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id="
not found in downloaded webpage
Uses t_ti, t_te, and rs to make progress visible
v6 Aug 06, 2003 : final status messages now display summary of work
( "Downloaded someqty scripts" or
"Everything was current")
Now GetLatestVimScripts is careful about downloading
GetLatestVimScripts.vim itself!
(goes to <NEW_GetLatestVimScripts.vim>)
v5 Aug 04, 2003 : missing an endif near bottom
v4 Jun 17, 2003 : redraw! just before each "considering" message
v3 May 27, 2003 : Protects downloaded files from errant shell
expansions with single quotes: '...'
v2 May 14, 2003 : extracts name of item to be obtained from the
script file. Uses it instead of comment field
for output filename; comment is used in the
"considering..." line and is now just a comment!
* Fixed a bug: a string-of-numbers is not the
same as a number, so I added zero to them
and they became numbers. Fixes comparison.
==============================================================================
vim:tw=78:ts=8:ft=help

View File

@@ -1,4 +1,4 @@
*gui.txt* For Vim version 7.0g. Last change: 2006 Apr 02 *gui.txt* For Vim version 7.1. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -102,7 +102,7 @@ There are a number of options which only have meaning in the GUI version of
Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are
documented in |options.txt| with all the other options. documented in |options.txt| with all the other options.
If using the Motif or Athena version of the GUI (but not for the KDE, GTK+ or If using the Motif or Athena version of the GUI (but not for the GTK+ or
Win32 version), a number of X resources are available. See |gui-resources|. Win32 version), a number of X resources are available. See |gui-resources|.
Another way to set the colors for different occasions is with highlight Another way to set the colors for different occasions is with highlight
@@ -487,7 +487,7 @@ a menu entry. Hit <Enter> to execute it. Hit <Esc> if you want to cancel.
This does require the |+menu| feature enabled at compile time. This does require the |+menu| feature enabled at compile time.
*tear-off-menus* *tear-off-menus*
KDE, GTK+ and Motif support Tear-off menus. These are sort of sticky menus or GTK+ and Motif support Tear-off menus. These are sort of sticky menus or
pop-up menus that are present all the time. If the resizing does not work pop-up menus that are present all the time. If the resizing does not work
correctly, this may be caused by using something like "Vim*geometry" in the correctly, this may be caused by using something like "Vim*geometry" in the
defaults. Use "Vim.geometry" instead. defaults. Use "Vim.geometry" instead.
@@ -510,7 +510,7 @@ floating menus that do not appear on the main menu bar.
*:ime* *:imenu* *:inoreme* *:inoremenu* *:ime* *:imenu* *:inoreme* *:inoremenu*
*:cme* *:cmenu* *:cnoreme* *:cnoremenu* *:cme* *:cmenu* *:cnoreme* *:cnoremenu*
*E330* *E327* *E331* *E336* *E333* *E330* *E327* *E331* *E336* *E333*
*E328* *E329* *E337* *E328* *E329* *E337* *E792*
To create a new menu item, use the ":menu" commands. They are mostly like To create a new menu item, use the ":menu" commands. They are mostly like
the ":map" set of commands but the first argument is a menu item name, given the ":map" set of commands but the first argument is a menu item name, given
as a path of menus and submenus with a '.' between them, e.g.: > as a path of menus and submenus with a '.' between them, e.g.: >
@@ -532,7 +532,7 @@ Special characters in a menu name:
<Tab> Separates the menu name from right-aligned text. This can be <Tab> Separates the menu name from right-aligned text. This can be
used to show the equivalent typed command. The text "<Tab>" used to show the equivalent typed command. The text "<Tab>"
can be used here for convenience. If you are using a real can be used here for convenience. If you are using a real
Tab, don't forget to put a backslash before it! tab, don't forget to put a backslash before it!
Example: > Example: >
:amenu &File.&Open<Tab>:e :browse e<CR> :amenu &File.&Open<Tab>:e :browse e<CR>
@@ -588,12 +588,21 @@ The ":set ic" will not be echoed when using this menu. Messages from the
executed command are still given though. To shut them up too, add a ":silent" executed command are still given though. To shut them up too, add a ":silent"
in the executed command: > in the executed command: >
:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR> :menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
< "<silent>" may also appear just after "<special>" or "<script>".
*:menu-<special>* *:menu-special*
Define a menu with <> notation for special keys, even though the "<" flag
may appear in 'cpoptions'. This is useful if the side effect of setting
'cpoptions' is not desired. Example: >
:menu <special> Search.Header /Header<CR>
"<special>" must appear as the very first argument to the ":menu" command or
just after "<silent>" or "<script>".
*:menu-<script>* *:menu-script* *:menu-<script>* *:menu-script*
The "to" part of the menu will be inspected for mappings. If you don't want The "to" part of the menu will be inspected for mappings. If you don't want
this, use the ":noremenu" command (or the similar one for a specific mode). this, use the ":noremenu" command (or the similar one for a specific mode).
If you do want to use script-local mappings, add "<script>" as the very first If you do want to use script-local mappings, add "<script>" as the very first
argument to the ":menu" command or after "<silent>". argument to the ":menu" command or just after "<silent>" or "<special>".
*menu-priority* *menu-priority*
You can give a priority to a menu. Menus with a higher priority go more to You can give a priority to a menu. Menus with a higher priority go more to
@@ -657,7 +666,7 @@ simple.
*gui-toolbar* *gui-toolbar*
The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11), The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11),
KDE and Photon GUI. It should turn up in other GUIs in due course. The and Photon GUI. It should turn up in other GUIs in due course. The
default toolbar is setup in menu.vim. default toolbar is setup in menu.vim.
The display of the toolbar is controlled by the 'guioptions' letter 'T'. You The display of the toolbar is controlled by the 'guioptions' letter 'T'. You
can thus have menu & toolbar together, or either on its own, or neither. can thus have menu & toolbar together, or either on its own, or neither.
@@ -745,7 +754,7 @@ from the main menu bar. You must then use the |:popup| or |:tearoff| command
to display it. to display it.
*popup-menu* *popup-menu*
In the Win32, KDE, GTK+, Motif, Athena and Photon GUI, you can define the In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the
special menu "PopUp". This is the menu that is displayed when the right mouse special menu "PopUp". This is the menu that is displayed when the right mouse
button is pressed, if 'mousemodel' is set to popup or popup_setpos. button is pressed, if 'mousemodel' is set to popup or popup_setpos.
@@ -955,8 +964,6 @@ This section describes other features which are related to the GUI.
if has("gui_running") if has("gui_running")
if has("gui_gtk2") if has("gui_gtk2")
:set guifont=Luxi\ Mono\ 12 :set guifont=Luxi\ Mono\ 12
elseif has("gui_kde")
:set guifont=Luxi\ Mono/12/-1/5/50/0/0/0/1/0
elseif has("x11") elseif has("x11")
" Also for GTK 1 " Also for GTK 1
:set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-*

View File

@@ -1,4 +1,4 @@
*gui_w16.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *gui_w16.txt* For Vim version 7.1. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *gui_w32.txt* For Vim version 7.1. Last change: 2007 May 03
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -233,7 +233,8 @@ $VIMRUNTIME/mswin.vim script. You could add this line to your _vimrc file: >
Since CTRL-C is used to copy the text to the clipboard, it can't be used to Since CTRL-C is used to copy the text to the clipboard, it can't be used to
cancel an operation. Use CTRL-Break for that. cancel an operation. Use CTRL-Break for that.
CTRL-Z is used for undo. This means you can't suspend Vim. CTRL-Z is used for undo. This means you can't suspend Vim with this key, use
|:suspend| instead (if it's supported at all).
*CTRL-V-alternative* *CTRL-Q* *CTRL-V-alternative* *CTRL-Q*
Since CTRL-V is used to paste, you can't use it to start a blockwise Visual Since CTRL-V is used to paste, you can't use it to start a blockwise Visual
@@ -463,6 +464,8 @@ This maps Alt-Space to pop down the system menu for the Vim window. Note that
Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the
Vim window via the system menu. Vim window via the system menu.
Note that the key changes depending on the language you are using.
*intellimouse-wheel-problems* *intellimouse-wheel-problems*
When using the Intellimouse mouse wheel causes Vim to stop accepting input, go When using the Intellimouse mouse wheel causes Vim to stop accepting input, go
to: to:

View File

@@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *gui_x11.txt* For Vim version 7.1. Last change: 2006 Jul 12
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -406,8 +406,9 @@ These are the different looks:
- That means the menubar and toolbar handles are back! Yeah! And the - That means the menubar and toolbar handles are back! Yeah! And the
resizing grid still works too. resizing grid still works too.
GNOME is automatically compiled with if it was found by configure. GNOME is compiled with if it was found by configure and the
(FIXME: Is this still true? Use --enable-gnome-check to force it to.) --enable-gnome-check argument was used.
GNOME session support *gui-gnome-session* *gnome-session* GNOME session support *gui-gnome-session* *gnome-session*
@@ -436,7 +437,7 @@ command line argument).
============================================================================== ==============================================================================
7. KDE version *gui-kde* *kde* *KDE* *KVim* 7. KDE version *gui-kde* *kde* *KDE* *KVim*
*gui-x11-kde*
There is no KDE version of Vim. There has been some work on a port using the There is no KDE version of Vim. There has been some work on a port using the
Qt toolkit, but it never worked properly and it has been abandoned. Work Qt toolkit, but it never worked properly and it has been abandoned. Work
continues on Yzis: www.yzis.org. continues on Yzis: www.yzis.org.
@@ -497,12 +498,6 @@ menus look a bit better. Edit the Makefile and look for "XAW_LIB". The
scrollbars will remain the same, because Vim has its own, which are already scrollbars will remain the same, because Vim has its own, which are already
3D (in fact, they look more like Motif). 3D (in fact, they look more like Motif).
*gui-x11-kde*
For Vim-KDE, you need at least Qt(>=2.x) and the corresponding kdelibs.
To compile, you must use the --with-qt-dir configure flag because QTDIR is not
automatically detected yet. Giving KDE's directories to the configure script
may also help in some cases.
*gui-x11-neXtaw* *gui-x11-neXtaw*
The neXtaw version is mostly like Athena, but uses different widgets. The neXtaw version is mostly like Athena, but uses different widgets.

View File

@@ -1,4 +1,4 @@
*hangulin.txt* For Vim version 7.0g. Last change: 2006 Apr 02 *hangulin.txt* For Vim version 7.1. Last change: 2006 Apr 02
VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam

View File

@@ -1,4 +1,4 @@
*hebrew.txt* For Vim version 7.0g. Last change: 2003 May 11 *hebrew.txt* For Vim version 7.1. Last change: 2003 May 11
VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem)

View File

@@ -1,4 +1,4 @@
*help.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *help.txt* For Vim version 7.1. Last change: 2006 Nov 07
VIM - main help file VIM - main help file
k k
@@ -7,13 +7,13 @@
Close this window: Use ":q<Enter>". Close this window: Use ":q<Enter>".
Get out of Vim: Use ":qa!<Enter>" (careful, all changes are lost!). Get out of Vim: Use ":qa!<Enter>" (careful, all changes are lost!).
Jump to a subject: Position the cursor on a tag between |bars| and hit CTRL-]. Jump to a subject: Position the cursor on a tag (e.g. |bars|) and hit CTRL-].
With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI). With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI).
Double-click the left mouse button on a tag between |bars|. Double-click the left mouse button on a tag, e.g. |bars|.
Jump back: Type CTRL-T or CTRL-O (repeat to go further back). Jump back: Type CTRL-T or CTRL-O (repeat to go further back).
Get specific help: It is possible to go directly to whatever you want help Get specific help: It is possible to go directly to whatever you want help
on, by giving an argument to the ":help" command |:help|. on, by giving an argument to the |:help| command.
It is possible to further specify the context: It is possible to further specify the context:
*help-context* *help-context*
WHAT PREPEND EXAMPLE ~ WHAT PREPEND EXAMPLE ~
@@ -143,6 +143,7 @@ Special issues ~
|farsi.txt| Farsi (Persian) editing |farsi.txt| Farsi (Persian) editing
|hebrew.txt| Hebrew language support and editing |hebrew.txt| Hebrew language support and editing
|russian.txt| Russian language support and editing |russian.txt| Russian language support and editing
|ada.txt| Ada (the programming language) support
|hangulin.txt| Hangul (Korean) input mode |hangulin.txt| Hangul (Korean) input mode
|rileft.txt| right-to-left editing mode |rileft.txt| right-to-left editing mode
@@ -189,11 +190,13 @@ Remarks about specific systems ~
|os_win32.txt| MS-Windows 95/98/NT |os_win32.txt| MS-Windows 95/98/NT
*standard-plugin-list* *standard-plugin-list*
Standard plugins ~ Standard plugins ~
|pi_gzip.txt| Reading and writing compressed files |pi_getscript.txt| Downloading latest version of Vim scripts
|pi_netrw.txt| Reading and writing files over a network |pi_gzip.txt| Reading and writing compressed files
|pi_paren.txt| Highlight matching parens |pi_netrw.txt| Reading and writing files over a network
|pi_tar.txt| Tar file explorer |pi_paren.txt| Highlight matching parens
|pi_zip.txt| Zip archive explorer |pi_tar.txt| Tar file explorer
|pi_vimball.txt| Create a self-installing Vim script
|pi_zip.txt| Zip archive explorer
LOCAL ADDITIONS: *local-additions* LOCAL ADDITIONS: *local-additions*
@@ -202,5 +205,12 @@ LOCAL ADDITIONS: *local-additions*
Now that you've jumped here with CTRL-] or a double mouse click, you can use Now that you've jumped here with CTRL-] or a double mouse click, you can use
CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were. CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were.
Note that tags are within | characters, but when highlighting is enabled these
are hidden. That makes it easier to read a command.
Anyway, you can use CTRL-] on any word, also when it is not within |, and Vim
will try to find help for it.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*howto.txt* For Vim version 7.0g. Last change: 2006 Apr 02 *howto.txt* For Vim version 7.1. Last change: 2006 Apr 02
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*if_cscop.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *if_cscop.txt* For Vim version 7.1. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Andy Kahn VIM REFERENCE MANUAL by Andy Kahn

View File

@@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *if_mzsch.txt* For Vim version 7.1. Last change: 2007 May 03
VIM REFERENCE MANUAL by Sergey Khorev VIM REFERENCE MANUAL by Sergey Khorev
@@ -23,6 +23,8 @@ Dynamic loading added by Sergey Khorev
For downloading MzScheme and other info: For downloading MzScheme and other info:
http://www.plt-scheme.org/software/mzscheme/ http://www.plt-scheme.org/software/mzscheme/
Note: On FreeBSD you should use the "drscheme" port.
============================================================================== ==============================================================================
1. Commands *mzscheme-commands* 1. Commands *mzscheme-commands*
@@ -262,8 +264,9 @@ In a console window type "path" to see what directories are used.
The names of the DLLs must match the MzScheme version Vim was compiled with. The names of the DLLs must match the MzScheme version Vim was compiled with.
For MzScheme version 209 they will be "libmzsch209_000.dll" and For MzScheme version 209 they will be "libmzsch209_000.dll" and
"libmzgc209_000.dll". To know for sure edit "gvim.exe" and search for "libmzgc209_000.dll". To know for sure look at the output of the ":version"
"libmzsch\d\d\d_\d\d\d\.dll\c". command, look for -DDYNAMIC_MZSCH_DLL="something" and
-DDYNAMIC_MZGC_DLL="something" in the "Compilation" info.
====================================================================== ======================================================================
vim:tw=78:ts=8:sts=4:ft=help:norl: vim:tw=78:ts=8:sts=4:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*if_ole.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *if_ole.txt* For Vim version 7.1. Last change: 2007 May 10
VIM REFERENCE MANUAL by Paul Moore VIM REFERENCE MANUAL by Paul Moore
@@ -40,6 +40,12 @@ instance), code similar to the following should be used:
use Win32::OLE; use Win32::OLE;
$vim = new Win32::OLE 'Vim.Application'; $vim = new Win32::OLE 'Vim.Application';
[C#] >
// Add a reference to VIM in your project.
// Choose the COM tab.
// Select "VIM Ole Interface 1.1 Type Library"
Vim.Vim vimobj = new Vim.Vim();
Vim does not support acting as a "hidden" OLE server, like some other OLE Vim does not support acting as a "hidden" OLE server, like some other OLE
Automation servers. When a client starts up an instance of Vim, that instance Automation servers. When a client starts up an instance of Vim, that instance
is immediately visible. Simply closing the OLE connection to the Vim instance is immediately visible. Simply closing the OLE connection to the Vim instance

View File

@@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 7.0g. Last change: 2006 Mar 06 *if_perl.txt* For Vim version 7.1. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Sven Verdoolaege VIM REFERENCE MANUAL by Sven Verdoolaege

View File

@@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *if_pyth.txt* For Vim version 7.1. Last change: 2006 Apr 30
VIM REFERENCE MANUAL by Paul Moore VIM REFERENCE MANUAL by Paul Moore

View File

@@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *if_ruby.txt* For Vim version 7.1. Last change: 2006 Apr 30
VIM REFERENCE MANUAL by Shugo Maeda VIM REFERENCE MANUAL by Shugo Maeda

View File

@@ -1,4 +1,4 @@
*if_sniff.txt* For Vim version 7.0g. Last change: 2005 Mar 29 *if_sniff.txt* For Vim version 7.1. Last change: 2005 Mar 29
VIM REFERENCE MANUAL VIM REFERENCE MANUAL

View File

@@ -1,4 +1,4 @@
*if_tcl.txt* For Vim version 7.0g. Last change: 2006 Mar 06 *if_tcl.txt* For Vim version 7.1. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Ingo Wilken VIM REFERENCE MANUAL by Ingo Wilken

View File

@@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *indent.txt* For Vim version 7.1. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -113,7 +113,7 @@ If you really want to reindent when you type 'o', 'O', 'e', '0', '<', '>',
"<!>", respectively, for those keys. "<!>", respectively, for those keys.
For an emacs-style indent mode where lines aren't indented every time you For an emacs-style indent mode where lines aren't indented every time you
press Enter but only if you press Tab, I suggest: press <Enter> but only if you press <Tab>, I suggest:
:set cinkeys=0{,0},:,0#,!<Tab>,!^F :set cinkeys=0{,0},:,0#,!<Tab>,!^F
You might also want to switch off 'autoindent' then. You might also want to switch off 'autoindent' then.
@@ -434,10 +434,15 @@ assume a 'shiftwidth' of 4.
limits the time needed to search for the start of a comment. limits the time needed to search for the start of a comment.
(default 30 lines). (default 30 lines).
#N When N is non-zero recognize shell/Perl comments, starting with
'#'. Default N is zero: don't recognizes '#' comments. Note
that lines starting with # will still be seen as preprocessor
lines.
The defaults, spelled out in full, are: The defaults, spelled out in full, are:
cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0, cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0,
/0,(2s,us,U0,w0,W0,m0,j0,)20,*30 /0,(2s,us,U0,w0,W0,m0,j0,)20,*30,#0
Vim puts a line in column 1 if: Vim puts a line in column 1 if:
- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
@@ -510,6 +515,28 @@ Indent for a continuation line: >
let g:pyindent_continue = '&sw * 2' let g:pyindent_continue = '&sw * 2'
SHELL *ft-sh-indent*
The amount of indent applied under various circumstances in a shell file can
be configured by setting the following keys in the |Dictionary|
b:sh_indent_defaults to a specific amount or to a |Funcref| that references a
function that will return the amount desired:
b:sh_indent_options['default'] Default amount of indent.
b:sh_indent_options['continuation-line']
Amount of indent to add to a continued line.
b:sh_indent_options['case-labels']
Amount of indent to add for case labels.
b:sh_indent_options['case-statement']
Amount of indent to add for case statements.
b:sh_indent_options['case-breaks']
Amount of indent to add (or more likely
remove) for case breaks.
VERILOG *ft-verilog-indent* VERILOG *ft-verilog-indent*
General block statements such as if, for, case, always, initial, function, General block statements such as if, for, case, always, initial, function,

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *index.txt* For Vim version 7.1. Last change: 2007 May 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -624,9 +624,10 @@ tag char note action in Normal mode ~
included files that contains the word under included files that contains the word under
the cursor, start searching at beginning of the cursor, start searching at beginning of
current file current file
|[p| [p 2 like "P", but adjust indent to current line
|[m| [m 1 cursor N times back to start of member |[m| [m 1 cursor N times back to start of member
function function
|[p| [p 2 like "P", but adjust indent to current line
|[s| [s 1 move to the previous misspelled word
|[z| [z 1 move to start of open fold |[z| [z 1 move to start of open fold
|[{| [{ 1 cursor N times back to unmatched '{' |[{| [{ 1 cursor N times back to unmatched '{'
|[<MiddleMouse> [<MiddleMouse> 2 same as "[p" |[<MiddleMouse> [<MiddleMouse> 2 same as "[p"
@@ -663,9 +664,10 @@ tag char note action in Normal mode ~
included files that contains the word under included files that contains the word under
the cursor, start searching at cursor the cursor, start searching at cursor
position position
|]p| ]p 2 like "p", but adjust indent to current line
|]m| ]m 1 cursor N times forward to end of member |]m| ]m 1 cursor N times forward to end of member
function function
|]p| ]p 2 like "p", but adjust indent to current line
|]s| ]s 1 move to next misspelled word
|]z| ]z 1 move to end of open fold |]z| ]z 1 move to end of open fold
|]}| ]} 1 cursor N times forward to unmatched '}' |]}| ]} 1 cursor N times forward to unmatched '}'
|]<MiddleMouse> ]<MiddleMouse> 2 same as "]p" |]<MiddleMouse> ]<MiddleMouse> 2 same as "]p"
@@ -748,6 +750,8 @@ tag char note action in Normal mode ~
|gu| gu{motion} 2 make Nmove text lowercase |gu| gu{motion} 2 make Nmove text lowercase
|gv| gv reselect the previous Visual area |gv| gv reselect the previous Visual area
|gw| gw{motion} 2 format Nmove text and keep cursor |gw| gw{motion} 2 format Nmove text and keep cursor
|netrw-gx| gx execute application for file name under the
cursor (only with |netrw| plugin)
|g@| g@{motion} call 'operatorfunc' |g@| g@{motion} call 'operatorfunc'
|g~| g~{motion} 2 swap case for Nmove text |g~| g~{motion} 2 swap case for Nmove text
|g<Down>| g<Down> 1 same as "gj" |g<Down>| g<Down> 1 same as "gj"
@@ -984,7 +988,7 @@ file names, tags, commands etc. as appropriate.
{expr} {expr}
CTRL-\ f - z reserved for extensions CTRL-\ f - z reserved for extensions
CTRL-\ others not used CTRL-\ others not used
CTRL-] not used |c_CTRL-]| CTRL-] trigger abbreviation
|c_CTRL-^| CTRL-^ toggle use of |:lmap| mappings |c_CTRL-^| CTRL-^ toggle use of |:lmap| mappings
|c_CTRL-_| CTRL-_ when 'allowrevins' set: change language |c_CTRL-_| CTRL-_ when 'allowrevins' set: change language
(Hebrew, Farsi) (Hebrew, Farsi)

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.0g. Last change: 2006 May 01 *insert.txt* For Vim version 7.1. Last change: 2007 May 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -219,8 +219,8 @@ CTRL-_ Switch between languages, as follows:
Please refer to |rileft.txt| for more information about Please refer to |rileft.txt| for more information about
right-to-left mode. right-to-left mode.
{not in Vi} {not in Vi}
Only if compiled with the |+rightleft| feature (which is not Only if compiled with the |+rightleft| feature.
the default).
*i_CTRL-^* *i_CTRL-^*
CTRL-^ Toggle the use of typing language characters. CTRL-^ Toggle the use of typing language characters.
When language |:lmap| mappings are defined: When language |:lmap| mappings are defined:
@@ -919,6 +919,8 @@ Completion is done by a function that can be defined by the user with the
See below for how the function is called and an example |complete-functions|. See below for how the function is called and an example |complete-functions|.
For remarks about specific filetypes see |compl-omni-filetypes|. For remarks about specific filetypes see |compl-omni-filetypes|.
More completion scripts will appear, check www.vim.org. Currently there is a
first version for C++.
*i_CTRL-X_CTRL-O* *i_CTRL-X_CTRL-O*
CTRL-X CTRL-O Guess what kind of item is in front of the cursor and CTRL-X CTRL-O Guess what kind of item is in front of the cursor and
@@ -1018,8 +1020,9 @@ items:
info more information about the item, can be displayed in a info more information about the item, can be displayed in a
preview window preview window
kind single letter indicating the type of completion kind single letter indicating the type of completion
icase when non-zero case is to be ignored; when omitted icase when non-zero case is to be ignored when comparing
the 'ignorecase' option is used items to be equal; when omitted zero is used, thus
items that only differ in case are added
dup when non-zero this match will be added even when an dup when non-zero this match will be added even when an
item with the same word is already present. item with the same word is already present.
@@ -1153,24 +1156,25 @@ any printable, non-white character:
In all three states these can be used: In all three states these can be used:
CTRL-Y Yes: Accept the currently selected match and stop completion. CTRL-Y Yes: Accept the currently selected match and stop completion.
CTRL-E End completion, go back to what was typed. CTRL-E End completion, go back to what was there before selecting a
match (what was typed or longest common string).
<PageUp> Select a match several entries back, but don't insert it. <PageUp> Select a match several entries back, but don't insert it.
<PageDown> Select a match several entries further, but don't insert it. <PageDown> Select a match several entries further, but don't insert it.
<Up> Select the previous match, as if CTRL-P was used, but don't <Up> Select the previous match, as if CTRL-P was used, but don't
insert it. insert it.
<Down> Select the next match, as if CTRL-N was used, but don't <Down> Select the next match, as if CTRL-N was used, but don't
insert it. insert it.
space or <Tab> Stop completion without changing the match and insert the <Space> or <Tab> Stop completion without changing the match and insert the
typed character. typed character.
The behavior of the Enter key depends on the state you are in: The behavior of the <Enter> key depends on the state you are in:
first state: Use the text as it is and insert a line break. first state: Use the text as it is and insert a line break.
second state: Insert the currently selected match. second state: Insert the currently selected match.
third state: Use the text as it is and insert a line break. third state: Use the text as it is and insert a line break.
In other words: If you used the cursor keys to select another entry in the In other words: If you used the cursor keys to select another entry in the
list of matches then the Enter key inserts that match. If you typed something list of matches then the <Enter> key inserts that match. If you typed
else then Enter inserts a line break. something else then <Enter> inserts a line break.
The colors of the menu can be changed with these highlight groups: The colors of the menu can be changed with these highlight groups:
@@ -1207,7 +1211,8 @@ C *ft-c-omni*
Completion of C code requires a tags file. You should use Exuberant ctags, Completion of C code requires a tags file. You should use Exuberant ctags,
because it adds extra information that is needed for completion. You can find because it adds extra information that is needed for completion. You can find
it here: http://ctags.sourceforge.net/ it here: http://ctags.sourceforge.net/ Version 5.6 or later is recommended.
For version 5.5.4 you should add a patch that adds the "typename:" field: For version 5.5.4 you should add a patch that adds the "typename:" field:
ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch
A compiled .exe for MS-Windows can be found at: A compiled .exe for MS-Windows can be found at:
@@ -1272,32 +1277,21 @@ run |:make| command to detect formatting problems.
HTML flavor *html-flavor* HTML flavor *html-flavor*
Default HTML completion depends on filetype. For HTML files it is HTML The default HTML completion depends on the filetype. For HTML files it is
4.01 Transitional (&ft=='html'), for XHTML it is XHTML 1.0 Strict HTML 4.01 Transitional ('filetype' is "html"), for XHTML it is XHTML 1.0
(&ft=='xhtml'). Strict ('filetype' is "xhtml").
These are not the only HTML versions. To use another data file and still When doing completion outside of any other tag you will have possibility to
have benefits of custom completion for class, style, etc. attributes set choose DOCTYPE and the appropriate data file will be loaded and used for all
b:html_omni_flavor variable. Example (in .vimrc or filetype plugin next completions.
file): >
let g:html_omni_flavor = 'xhtml10s' More about format of data file in |xml-omni-datafile|. Some of the data files
may be found on the Vim website (|www|).
(Completion data file for HTML 4.01 Strict is also provided by Vim Note that b:html_omni_flavor may point to a file with any XML data. This
distribution.) makes possible to mix PHP (|ft-php-omni|) completion with any XML dialect
(assuming you have data file for it). Without setting that variable XHTML 1.0
Data for HTML completion will be read from 'autoload/xml/html10s.vim' file Strict will be used.
located somewhere in 'runtimepath'.
Note: HTML completion files are also located in 'autoload/xml'
directory.
More about format of data file in |xml-omni-datafile|. Some of data
files may in future be found on vim-online site (|www|).
Note that b:html_omni_flavor may point to file with any XML data. This
makes possible to mix PHP (|ft-php-omni|) completion with whatever XML
dialect (assuming you have data file for it).
JAVASCRIPT *ft-javascript-omni* JAVASCRIPT *ft-javascript-omni*
@@ -1338,9 +1332,9 @@ will be suggested. All other elements are not placed in suggestion list.
PHP *ft-php-omni* PHP *ft-php-omni*
Completion of PHP code requires tags file for completion of data from external Completion of PHP code requires a tags file for completion of data from
files. You should use Exuberant ctags version 5.5.4 or newer. You can find it external files and for class aware completion. You should use Exuberant ctags
here: http://ctags.sourceforge.net/ version 5.5.4 or newer. You can find it here: http://ctags.sourceforge.net/
Script completes: Script completes:
@@ -1398,8 +1392,10 @@ The completions provided by CTRL-X CTRL-O are sensitive to the context:
Notes: Notes:
- Vim will load/evaluate code in order to provide completions. This may - Vim will load/evaluate code in order to provide completions. This may
cause some code execution, which may be a concern. cause some code execution, which may be a concern. This is no longer
- In context 1 above, Vim can parse the entire buffer to add a list of enabled by default, to enable this feature add >
let g:rubycomplete_buffer_loading = 1
<- In context 1 above, Vim can parse the entire buffer to add a list of
classes to the completion results. This feature is turned off by default, classes to the completion results. This feature is turned off by default,
to enable it add > to enable it add >
let g:rubycomplete_classes_in_global = 1 let g:rubycomplete_classes_in_global = 1
@@ -1415,8 +1411,13 @@ Notes:
SYNTAX *ft-syntax-omni* SYNTAX *ft-syntax-omni*
This uses the current syntax highlighting for completion. It can be used for Vim has the ability to color syntax highlight nearly 500 languages. Part of
any filetype and provides a minimal language-sensitive completion. this highlighting includes knowing what keywords are part of a language. Many
filetypes already have custom completion scripts written for them, the
syntaxcomplete plugin provides basic completion for all other filetypes. It
does this by populating the omni completion list with the text Vim already
knows how to color highlight. It can be used for any filetype and provides a
minimal language-sensitive completion.
To enable syntax code completion you can run: > To enable syntax code completion you can run: >
setlocal omnifunc=syntaxcomplete#Complete setlocal omnifunc=syntaxcomplete#Complete
@@ -1469,6 +1470,15 @@ groups: >
You can create as many of these variables as you need, varying only the You can create as many of these variables as you need, varying only the
filetype at the end of the variable name. filetype at the end of the variable name.
The plugin uses the isKeyword option to determine where word boundaries are
for the syntax items. For example, in the Scheme language completion should
include the "-", call-with-output-file. Depending on your filetype, this may
not provide the words you are expecting. Setting the
g:omni_syntax_use_iskeyword option to 0 will force the syntax plugin to break
on word characters. This can be controlled adding the following to your
vimrc: >
let g:omni_syntax_use_iskeyword = 0
SQL *ft-sql-omni* SQL *ft-sql-omni*
@@ -1486,86 +1496,100 @@ PHP code and SQL code at the same time.
XML *ft-xml-omni* XML *ft-xml-omni*
Vim 7 provides mechanism to context aware completion of XML files. It depends Vim 7 provides a mechanism for context aware completion of XML files. It
on special |xml-omni-datafile| and two commands: |:XMLns| and |:XMLent|. depends on a special |xml-omni-datafile| and two commands: |:XMLns| and
Features are: |:XMLent|. Features are:
- after "<" complete tag name depending on context (no div suggest - after "<" complete the tag name, depending on context
inside of an a tag) - inside of a tag complete proper attributes
- inside of tag complete proper attributes (no width attribute for an - when an attribute has a limited number of possible values help to complete
a tag)
- when attribute has limited number of possible values help to complete
them them
- complete names of entities (defined in |xml-omni-datafile| and in current - complete names of entities (defined in |xml-omni-datafile| and in the
file with "<!ENTITY" declarations current file with "<!ENTITY" declarations)
- when used after "</" CTRL-X CTRL-O will close the last opened tag - when used after "</" CTRL-X CTRL-O will close the last opened tag
Format of XML data file *xml-omni-datafile* Format of XML data file *xml-omni-datafile*
Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim) XML data files are stored in the "autoload/xml" directory in 'runtimepath'.
Vim distribution provides examples of data files in the
"$VIMRUNTIME/autoload/xml" directory. They have a meaningful name which will
be used in commands. It should be a unique name which will not create
conflicts. For example, the name xhtml10s.vim means it is the data file for
XHTML 1.0 Strict.
XML data files are stored in "autoload/xml" directory in 'runtimepath'. They Each file contains a variable with a name like g:xmldata_xhtml10s . It is
have meaningful name which will be used in commands. It should be unique name a compound from two parts:
which will not create conflicts in future. For example name xhtml10s.vim means
it is data file for XHTML 1.0 Strict.
File contains one variable with fixed name: g:xmldata_xhtml10s . It is 1. "g:xmldata_" general prefix, constant for all data files
compound from two parts: 2. "xhtml10s" the name of the file and the name of the described XML
dialect; it will be used as an argument for the |:XMLns|
1. "g:xmldata_" general prefix command
2. "xhtml10s" name of file and name of described XML dialect
Part two must be exactly the same as name of file. Part two must be exactly the same as name of file.
Variable is data structure in form of |Dictionary|. Keys are tag names and The variable is a |Dictionary|. Keys are tag names and each value is a two
values are two element |List|. First element of List is also List with names element |List|. The first element of the List is also a List with the names
of possible children, second element is |Dictionary| with names of attributes of possible children. The second element is a |Dictionary| with the names of
as keys and possible values of attributes as values. Example: > attributes as keys and the possible values of attributes as values. Example: >
let g:xmldata_crippledhtml = { let g:xmldata_crippled = {
\ "html": \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"],
\ [ ["body", "head"], {"id": [], "xmlns": ["http://www.w3.org/1999/xhtml"], \ 'vimxmlroot': ['tag1'],
\ "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}], \ 'tag1':
\ "script": \ [ ['childoftag1a', 'childoftag1b'], {'attroftag1a': [],
\ [ [], {"id": [], "charset": [], "type": ["text/javascript"], "src": [], \ 'attroftag1b': ['valueofattr1', 'valueofattr2']}],
\ "defer": ["BOOL"], "xml:space": ["preserve"]}], \ 'childoftag1a':
\ "meta": \ [ [], {'attrofchild': ['attrofchild']}],
\ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme": \ 'childoftag1b':
\ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}] \ [ ['childoftag1a'], {'attrofchild': []}],
\ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
\ "vimxmltaginfo": { \ "vimxmltaginfo": {
\ 'meta': ['/>', '']}, \ 'tag1': ['Menu info', 'Long information visible in preview window']},
\ "vimxmlattrinfo": { \ 'vimxmlattrinfo': {
\ 'http-equiv': ['ContentType', '']} \ 'attrofchild': ['Menu info', 'Long information visible in preview window']}}
This example should be put in "autoload/xml/crippledhtml.vim" file. This example would be put in the "autoload/xml/crippled.vim" file and could
help to write this file: >
In example are visible four special elements: <tag1 attroftag1b="valueofattr1">
<childoftag1a attrofchild>
&amp; &lt;
</childoftag1a>
<childoftag1b attrofchild="5">
<childoftag1a>
&gt; &apos; &quot;
</childoftag1a>
</childoftag1b>
</tag1>
1. "vimxmlentities" - special key with List containing entities of this XML In the example four special elements are visible:
1. "vimxmlentities" - a special key with List containing entities of this XML
dialect. dialect.
2. "BOOL" - value of attribute key showing if attribute should be inserted 2. If the list containing possible values of attributes has one element and
bare ("defer" vs. 'defer="'). It can be the only element of List of this element is equal to the name of the attribute this attribute will be
attribute values. treated as boolean and inserted as 'attrname' and not as 'attrname="'
3. "vimxmltaginfo" - special key with dictionary containing as key tag names, 3. "vimxmltaginfo" - a special key with a Dictionary containing tag
as value two element List for additional menu info and long description. names as keys and two element List as values, for additional menu info and
4. "vimxmlattrinfo" - special key with dictionary containing as key attribute the long description.
names, as value two element List for additional menu info and long 4. "vimxmlattrinfo" - special key with Dictionary containing attribute names
as keys and two element List as values, for additional menu info and long
description. description.
Note: Tag names in data file MUST not contain namespace description. Check Note: Tag names in the data file MUST not contain a namespace description.
xsl.vim for example. Check xsl.vim for an example.
Note: All data and functions are publicly available as global
variables/functions and can be used for personal editing functions.
DTD -> Vim *dtd2vim* DTD -> Vim *dtd2vim*
On |www| is script |dtd2vim| which parses DTD and creates XML data file On |www| is the script |dtd2vim| which parses DTD and creates an XML data file
for Vim XML omni completion. for Vim XML omni completion.
dtd2vim: http://www.vim.org/scripts/script.php?script_id=1462 dtd2vim: http://www.vim.org/scripts/script.php?script_id=1462
Check there and beginning of file for details of usage. Check the beginning of that file for usage details.
Script requires perl and: The script requires perl and:
perlSGML: http://savannah.nongnu.org/projects/perlsgml perlSGML: http://savannah.nongnu.org/projects/perlsgml
@@ -1574,12 +1598,12 @@ Commands
:XMLns {name} [{namespace}] *:XMLns* :XMLns {name} [{namespace}] *:XMLns*
Vim has to know which data file should be used and with which namespace. For Vim has to know which data file should be used and with which namespace. For
loading of data file and connecting data with prope namespace use |:XMLns| loading of the data file and connecting data with the proper namespace use
command. First (obligatory) argument is name of data (xhtml10s, xsl). Second |:XMLns| command. The first (obligatory) argument is the name of the data
argument is code of namespace (h, xsl). When used without second argument (xhtml10s, xsl). The second argument is the code of namespace (h, xsl). When
dialect will be used as default - without namespace declaration. For example used without a second argument the dialect will be used as default - without
to use XML completion in .xsl files: > namespace declaration. For example to use XML completion in .xsl files: >
:XMLns xhtml10s :XMLns xhtml10s
:XMLns xsl xsl :XMLns xsl xsl
@@ -1587,35 +1611,34 @@ to use XML completion in .xsl files: >
:XMLent {name} *:XMLent* :XMLent {name} *:XMLent*
By default entities will be completed from data file of default By default entities will be completed from the data file of the default
namespace. XMLent command should be used in case when there is no namespace. The XMLent command should be used in case when there is no default
default namespace: > namespace: >
:XMLent xhtml10s :XMLent xhtml10s
Usage Usage
While used in situation (after declarations from previous part, | is While used in this situation (after declarations from previous part, | is
cursor position): > cursor position): >
<| <|
Will complete to appropriate XHTML tag, and in this situation: > Will complete to an appropriate XHTML tag, and in this situation: >
<xsl:| <xsl:|
Will complete to appropriate XSL tag. Will complete to an appropriate XSL tag.
File xmlcomplete.vim provides through |autoload| mechanism
GetLastOpenTag function which can be used in XML files to get name of The script xmlcomplete.vim, provided through the |autoload| mechanism,
last open tag with (b:unaryTagsStack has to be defined): > has the xmlcomplete#GetLastOpenTag() function which can be used in XML files
to get the name of the last open tag (b:unaryTagsStack has to be defined): >
:echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack") :echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
============================================================================== ==============================================================================
8. Insert mode commands *inserting* 8. Insert mode commands *inserting*
@@ -1766,13 +1789,13 @@ NOTE: ":append" and ":insert" don't work properly in between ":if" and
See |++opt| for the possible values of [++opt]. See |++opt| for the possible values of [++opt].
*:r!* *:read!* *:r!* *:read!*
:r[ead] !{cmd} Execute {cmd} and insert its standard output below :[range]r[ead] !{cmd} Execute {cmd} and insert its standard output below
the cursor. A temporary file is used to store the the cursor or the specified line. A temporary file is
output of the command which is then read into the used to store the output of the command which is then
buffer. 'shellredir' is used to save the output of read into the buffer. 'shellredir' is used to save
the command, which can be set to include stderr or the output of the command, which can be set to include
not. {cmd} is executed like with ":!{cmd}", any '!' stderr or not. {cmd} is executed like with ":!{cmd}",
is replaced with the previous command |:!|. any '!' is replaced with the previous command |:!|.
These commands insert the contents of a file, or the output of a command, These commands insert the contents of a file, or the output of a command,
into the buffer. They can be undone. They cannot be repeated with the "." into the buffer. They can be undone. They cannot be repeated with the "."

View File

@@ -1,4 +1,4 @@
*intro.txt* For Vim version 7.0g. Last change: 2006 Apr 20 *intro.txt* For Vim version 7.1. Last change: 2007 May 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -235,7 +235,7 @@ Vim would never have become what it is now, without the help of these people!
David Leonard Port of Python extensions to Unix David Leonard Port of Python extensions to Unix
Avner Lottem Edit in right-to-left windows Avner Lottem Edit in right-to-left windows
Flemming Madsen X11 client-server, various features and patches Flemming Madsen X11 client-server, various features and patches
MicroSoft Gave me a copy of DevStudio to compile Vim with Microsoft Gave me a copy of DevStudio to compile Vim with
Paul Moore Python interface extensions, many patches Paul Moore Python interface extensions, many patches
Katsuhito Nagano Work on multi-byte versions Katsuhito Nagano Work on multi-byte versions
Sung-Hyun Nam Work on multi-byte versions Sung-Hyun Nam Work on multi-byte versions

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *map.txt* For Vim version 7.1. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -157,8 +157,9 @@ type "a", then "bar" will get inserted.
1.2 SPECIAL ARGUMENTS *:map-arguments* 1.2 SPECIAL ARGUMENTS *:map-arguments*
"<buffer>", "<silent>", "<script>", "<expr>" and "<unique>" can be used in any "<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can
order. They must appear right after the command, before any other arguments. be used in any order. They must appear right after the command, before any
other arguments.
*:map-local* *:map-<buffer>* *E224* *E225* *:map-local* *:map-<buffer>* *E224* *E225*
If the first argument to one of these commands is "<buffer>" it will apply to If the first argument to one of these commands is "<buffer>" it will apply to
@@ -185,6 +186,12 @@ Prompts will still be given, e.g., for inputdialog().
Using "<silent>" for an abbreviation is possible, but will cause redrawing of Using "<silent>" for an abbreviation is possible, but will cause redrawing of
the command line to fail. the command line to fail.
*:map-<special>* *:map-special*
Define a mapping with <> notation for special keys, even though the "<" flag
may appear in 'cpoptions'. This is useful if the side effect of setting
'cpoptions' is not desired. Example: >
:map <special> <F12> /Header<CR>
<
*:map-<script>* *:map-script* *:map-<script>* *:map-script*
If the first argument to one of these commands is "<script>" and it is used to If the first argument to one of these commands is "<script>" and it is used to
define a new mapping or abbreviation, the mapping will only remap characters define a new mapping or abbreviation, the mapping will only remap characters
@@ -220,10 +227,12 @@ text before the cursor and start omni completion when some condition is met.
Be very careful about side effects! The expression is evaluated while Be very careful about side effects! The expression is evaluated while
obtaining characters, you may very well make the command dysfunctional. obtaining characters, you may very well make the command dysfunctional.
For this reason the following is blocked: For this reason the following is blocked:
- changing the buffer text |textlock| - Changing the buffer text |textlock|.
- editing another buffer - Editing another buffer.
- the |:normal| command - The |:normal| command.
- moving the cursor is allowed, but it is restored afterwards - Moving the cursor is allowed, but it is restored afterwards.
- You can use getchar(), but the existing typeahead isn't seen and new
typeahead is discarded.
If you want the mapping to do any of these let the returned characters do If you want the mapping to do any of these let the returned characters do
that. that.
@@ -345,9 +354,11 @@ was already done when typing the mapping.
When listing mappings the characters in the first two columns are: When listing mappings the characters in the first two columns are:
CHAR MODE ~ CHAR MODE ~
<Space> Normal, Visual and Operator-pending <Space> Normal, Visual, Select and Operator-pending
n Normal n Normal
v Visual v Visual and Select
s Select
x Visual
o Operator-pending o Operator-pending
! Insert and Command-line ! Insert and Command-line
i Insert i Insert
@@ -583,7 +594,18 @@ the '<' flag must not be present in 'cpoptions' for this to work). >
:map <M-g> /foo<CR>cwbar<Esc> :map <M-g> /foo<CR>cwbar<Esc>
:map _x d/END/e<CR> :map _x d/END/e<CR>
:map! qq quadrillion questions :map! qq quadrillion questions
<
Multiplying a count
When you type a count before triggering a mapping, it's like the count was
typed before the {lhs}. For example, with this mapping: >
:map <F4> 3w
Typing 2<F4> will result in "23w". Thus not moving 2 * 3 words but 23 words.
If you want to multiply counts use the expression register: >
:map <F4> @='3w'<CR>
The part between quotes is the expression being executed. |@=|
1.9 USING MAPPINGS *map-typing* 1.9 USING MAPPINGS *map-typing*
@@ -770,7 +792,7 @@ stands for. This can be used to save typing for often used long words. And
you can use it to automatically correct obvious spelling errors. you can use it to automatically correct obvious spelling errors.
Examples: Examples:
:iab ms MicroSoft :iab ms Microsoft
:iab tihs this :iab tihs this
There are three types of abbreviations: There are three types of abbreviations:
@@ -787,7 +809,7 @@ end-id The "end-id" type ends in a keyword character, but all the other
Examples: "#i", "..f", "$/7" Examples: "#i", "..f", "$/7"
non-id The "non-id" type ends in a non-keyword character, the other non-id The "non-id" type ends in a non-keyword character, the other
characters may be of any type, excluding space and Tab. {this type characters may be of any type, excluding space and tab. {this type
is not supported by Vi} is not supported by Vi}
Examples: "def#", "4/7$" Examples: "def#", "4/7$"
@@ -812,12 +834,12 @@ an additional rule:
full-id In front of the match is a non-keyword character, or this is where full-id In front of the match is a non-keyword character, or this is where
the line or insertion starts. Exception: When the abbreviation is the line or insertion starts. Exception: When the abbreviation is
only one character, it is not recognized if there is a non-keyword only one character, it is not recognized if there is a non-keyword
character in front of it, other than a space or a <Tab>. character in front of it, other than a space or a tab.
end-id In front of the match is a keyword character, or a space or a <Tab>, end-id In front of the match is a keyword character, or a space or a tab,
or this is where the line or insertion starts. or this is where the line or insertion starts.
non-id In front of the match is a space, <Tab> or the start of the line or non-id In front of the match is a space, tab or the start of the line or
the insertion. the insertion.
Examples: ({CURSOR} is where you type a non-keyword character) > Examples: ({CURSOR} is where you type a non-keyword character) >
@@ -1120,7 +1142,7 @@ There are a number of attributes, split into four categories: argument
handling, completion behavior, range handling, and special cases. The handling, completion behavior, range handling, and special cases. The
attributes are described below, by category. attributes are described below, by category.
Argument handling *E175* *E176* Argument handling *E175* *E176* *:command-nargs*
By default, a user defined command will take no arguments (and an error is By default, a user defined command will take no arguments (and an error is
reported if any are supplied). However, it is possible to specify that the reported if any are supplied). However, it is possible to specify that the
@@ -1132,7 +1154,7 @@ command can take arguments, using the -nargs attribute. Valid cases are:
-nargs=? 0 or 1 arguments are allowed -nargs=? 0 or 1 arguments are allowed
-nargs=+ Arguments must be supplied, but any number are allowed -nargs=+ Arguments must be supplied, but any number are allowed
Arguments are considered to be separated by (unescaped) spaces or Tabs in this Arguments are considered to be separated by (unescaped) spaces or tabs in this
context. context.
Note that arguments are used as text, not as expressions. Specifically, Note that arguments are used as text, not as expressions. Specifically,
@@ -1148,8 +1170,8 @@ defined, not where it is invoked! Example:
Executing script2.vim will result in "None" to be echoed. Not what you Executing script2.vim will result in "None" to be echoed. Not what you
intended! Calling a function may be an alternative. intended! Calling a function may be an alternative.
Completion behavior *:command-completion* Completion behavior *:command-completion* *E179*
*E179* *E180* *E181* *E180* *E181* *:command-complete*
By default, the arguments of user defined commands do not undergo completion. By default, the arguments of user defined commands do not undergo completion.
However, by specifying one or the other of the following attributes, argument However, by specifying one or the other of the following attributes, argument
completion can be enabled: completion can be enabled:
@@ -1221,13 +1243,16 @@ the 'path' option: >
:endfun :endfun
< <
Range handling *E177* *E178* Range handling *E177* *E178* *:command-range*
*:command-count*
By default, user-defined commands do not accept a line number range. However, By default, user-defined commands do not accept a line number range. However,
it is possible to specify that the command does take a range (the -range it is possible to specify that the command does take a range (the -range
attribute), or that it takes an arbitrary count value, either in the line attribute), or that it takes an arbitrary count value, either in the line
number position (-range=N, like the |:split| command) or as a "count" number position (-range=N, like the |:split| command) or as a "count"
argument (-count=N, like the |:Next| command). Possible attributes are: argument (-count=N, like the |:Next| command). The count will then be
available in the argument with |<count>|.
Possible attributes are:
-range Range allowed, default is current line -range Range allowed, default is current line
-range=% Range allowed, default is whole file (1,$) -range=% Range allowed, default is whole file (1,$)
@@ -1240,8 +1265,8 @@ argument (-count=N, like the |:Next| command). Possible attributes are:
Note that -range=N and -count=N are mutually exclusive - only one should be Note that -range=N and -count=N are mutually exclusive - only one should be
specified. specified.
Special cases Special cases *:command-bang* *:command-bar*
*:command-register* *:command-buffer*
There are some special cases as well: There are some special cases as well:
-bang The command can take a ! modifier (like :q or :w) -bang The command can take a ! modifier (like :q or :w)
@@ -1296,12 +1321,28 @@ If the first two characters of an escape sequence are "q-" (for example,
<q-args>) then the value is quoted in such a way as to make it a valid value <q-args>) then the value is quoted in such a way as to make it a valid value
for use in an expression. This uses the argument as one single value. for use in an expression. This uses the argument as one single value.
When there is no argument <q-args> is an empty string. When there is no argument <q-args> is an empty string.
*<f-args>*
To allow commands to pass their arguments on to a user-defined function, there To allow commands to pass their arguments on to a user-defined function, there
is a special form <f-args> ("function args"). This splits the command is a special form <f-args> ("function args"). This splits the command
arguments at spaces and Tabs, quotes each argument individually, and the arguments at spaces and tabs, quotes each argument individually, and the
<f-args> sequence is replaced by the comma-separated list of quoted arguments. <f-args> sequence is replaced by the comma-separated list of quoted arguments.
See the Mycmd example below. If no arguments are given <f-args> is removed. See the Mycmd example below. If no arguments are given <f-args> is removed.
To embed whitespace into an argument of <f-args>, prepend a backslash.
<f-args> replaces every pair of backslashes (\\) with one backslash. A
backslash followed by a character other than white space or a backslash
remains unmodified. Overview:
command <f-args> ~
XX ab 'ab'
XX a\b 'a\b'
XX a\ b 'a b'
XX a\ b 'a ', 'b'
XX a\\b 'a\b'
XX a\\ b 'a\', 'b'
XX a\\\b 'a\\b'
XX a\\\ b 'a\ b'
XX a\\\\b 'a\\b'
XX a\\\\ b 'a\\', 'b'
Examples > Examples >

View File

@@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 7.0g. Last change: 2006 Apr 30 *mbyte.txt* For Vim version 7.1. Last change: 2006 Aug 11
VIM REFERENCE MANUAL by Bram Moolenaar et al. VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -403,7 +403,8 @@ depends on the system used, no detailed list can be given.
8bit 2byte MS-Windows: works for all codepages installed on your 8bit 2byte MS-Windows: works for all codepages installed on your
system; you can only type 8bit characters; system; you can only type 8bit characters;
Other systems: does NOT work. Other systems: does NOT work.
8bit Unicode Works, but you can only type 8bit characters; in a 8bit Unicode Works, but only 8bit characters can be typed directly
(others through digraphs, keymaps, etc.); in a
terminal you can only see 8bit characters; the GUI can terminal you can only see 8bit characters; the GUI can
show all characters that the 'guifont' supports. show all characters that the 'guifont' supports.

Some files were not shown because too many files have changed in this diff Show More