Squashed commit of the following:
commit f031b8d76d9bec6ea99ecbb298bc14ef6fa288e0 Author: Donald T <tang.1208@osu.edu> Date: Mon May 29 14:55:14 2023 -0400 . commit 94f905b7ced8522e63d39f288bcb1f7a4e15cc18 Author: Donald T <tang.1208@osu.edu> Date: Sat May 20 00:20:51 2023 -0400 . commit f41a8c8c1ac190de2f654b25e73d3ec2a0a2d09d Author: Donald T <tang.1208@osu.edu> Date: Fri May 5 23:24:25 2023 -0700 . commit 48b861af7a8a7b32eef2bd41ccce5cd9381c21ed Author: Donald T <tang.1208@osu.edu> Date: Wed May 3 03:32:30 2023 -0400 . commit 6be7fb3fd0a8e72f04cd1dc9044b9b072292eaaf Author: Donald T <tang.1208@osu.edu> Date: Wed May 3 03:32:23 2023 -0400 . commit bc541b919d7e3173ff33d60fcf4ac235c66d6e63 Author: Donald T <tang.1208@osu.edu> Date: Tue May 2 17:01:32 2023 -0400 . commit 3e5edf081c9ba0369edc34769f8d9ff411e50ab9 Author: Donald T <tang.1208@osu.edu> Date: Tue May 2 03:37:37 2023 -0400 . commit 2e18d3ed4740f92931e8b41e1af72fa7bc651345 Author: Donald T <tang.1208@osu.edu> Date: Tue May 2 03:06:28 2023 -0400 . commit 01027999ef4ea2c556759c113fb02870d76fcfa6 Merge: 29a6e45 46b9814 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon May 1 19:10:05 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 29a6e452c79bad6ed88f4a43b56f0d1a9b6c8dbc Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon May 1 19:09:43 2023 -0400 . commit 46b9814e7f311517cdca863f834fc4422d856479 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon May 1 17:56:39 2023 -0400 . commit 80125dd6783241c703403e06b831999779acac55 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon May 1 13:25:02 2023 -0400 . commit 0aa1d47e46af507fa2262aae149ec83047a1b359 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 30 00:51:16 2023 -0400 . commit 753ea9333c3cf25d910c6c81c34dfc7c9cdeac4b Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 20:04:20 2023 -0400 . commit 186dbc0731f5d2e918930eb42f554161d002e96d Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 19:46:41 2023 -0400 format commit a6ecdd9c44f3c113b86b1a244b2ec34cb6c16c31 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 19:44:44 2023 -0400 . commit 05c8b25e3e629f86a247066169f3215d0f720558 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 19:29:32 2023 -0400 . commit e82940eca591e182fcbf8ec212baa14d243810e2 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 19:07:57 2023 -0400 . commit 5d0bf02856ec9ebed7b8a393f723bb473c95576f Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 14:59:54 2023 -0400 . commit 968f7bdca5affca622f53528178811d39a46ef68 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 06:07:02 2023 -0400 . commit 19feb7fcaa76edf56e5829db594d3f113cd3f602 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 05:55:37 2023 -0400 . commit 710ec3d53b02672896690cb9b0544976df575c19 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 05:03:38 2023 -0400 . commit 05e21d7712705671be001b3376b440ea271d7415 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 04:57:08 2023 -0400 . commit 13d938b5ce19271a7bbc1428c4e637df40745889 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 03:28:14 2023 -0400 . commit 739c24b5846feaf18954db45435f3993e6d661b1 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 03:21:12 2023 -0400 . commit 2cdc9cf1f25788c6e8f9efaf2a368210937d6116 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 03:05:17 2023 -0400 . commit a25a424efd5d79ba3b2d70efca9c5b75685f852a Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 29 02:54:21 2023 -0400 . commit c7794f48a76cac0f98749c3f0d8711100f0e18dc Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 29 02:48:57 2023 -0400 . commit eedf1c88d64ec13356a10ab6ca86b8f5dddfe68e Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 29 02:30:52 2023 -0400 . commit adbe5512cc7511691540ce47bb381969e39148a4 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 29 02:03:11 2023 -0400 . commit e6c9b57a498978509cb94f34fef5e9414f3f349c Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 29 01:51:39 2023 -0400 . commit d88450c7a69c544896ed399138a5e80e9ef3a1f6 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 29 00:53:56 2023 -0400 . commit 2c1019cae42e9205e10e582b96737671889cd307 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 28 04:17:23 2023 -0400 . commit 03eec51af196432ae9590e3b1f9f3a93348b8fe6 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 28 04:03:40 2023 -0400 yes commit 4b62a9ab80475a6b1a1722abf53876c1ff326700 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 28 03:41:36 2023 -0400 . commit 59214cd6541637b071c9064060fe16bf5bb27725 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 28 03:22:09 2023 -0400 . commit f30a7552d3181d781c3d0d1488844987822b6522 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 28 01:35:18 2023 -0400 . commit 3a2d1082e84c37f0c2fee8217796fa4d4499294f Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 28 00:48:17 2023 -0400 . commit 520fd153e401ab822f1042ff8376b1e8d8b2ac92 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 23:50:09 2023 -0400 . commit 7437561bc3ffc3641f45bd76d9ab70aeb469c2f2 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 19:28:16 2023 -0400 . commit 32a8001f2e39102ed73ee68570d451603ed154b3 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 19:20:08 2023 -0400 . commit 9652a519b4024d36d87037d6549d3f852a17a1e6 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 16:56:54 2023 -0400 . commit b12009000ecf4d1db967708aed5947dd9553fb1e Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 16:51:59 2023 -0400 . commit cf194922c2b24267c5d7397d07dc89b90286acf3 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 16:51:00 2023 -0400 . commit f4d9203afdb998f0c842118bc88dbf9e8ffe71e0 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 14:53:57 2023 -0400 fast grep done!! commit 2a176f1b5ec1b3e32af1c12b18ad5ef41f3e60f6 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 14:50:43 2023 -0400 . commit baeeba23deff9dd80d2a8865e91c1f630e7e7e23 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 06:07:00 2023 -0400 . commit 586bbf01cf29cb42c8be794b73b73a274d7e4ed3 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 05:51:28 2023 -0400 ag allow partial fuzzy search now commit 139fdbc6285e68e5a13277877344097480ba5387 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 03:41:43 2023 -0400 add info win commit a08839510d7329ac28c18f18d598e9f261100880 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 02:38:24 2023 -0400 . commit 7663230223592f9ad0509b80973542c2928d7771 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 02:35:42 2023 -0400 Revert "." This reverts commit 254db14a3118a0f898283f62942f10762405ffc9. commit 796758bf647d83652b6fffa54fc6e54548488bff Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 02:35:21 2023 -0400 Revert "Revert "."" This reverts commit f1bb558ce24d92064219d9282bcc9ba1359aa6ac. commit f1bb558ce24d92064219d9282bcc9ba1359aa6ac Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 02:31:13 2023 -0400 Revert "." This reverts commit 1fc9da602ff45ab72a3b37fb6fd8b2d2b3d88fe5. commit 254db14a3118a0f898283f62942f10762405ffc9 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Thu Apr 27 02:28:07 2023 -0400 . commit 1fc9da602ff45ab72a3b37fb6fd8b2d2b3d88fe5 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 01:50:16 2023 -0400 . commit b18489c135043b6a4f0b6c0e8eb5b0ddfad10160 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 01:46:15 2023 -0400 hide cursor when having popup commit 052ee3417392b42c081d1c2be6e249b8db8592ff Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 27 01:10:41 2023 -0400 add prompt cursor support commit 38ffb515e51913804c31e8fb872381fbef965e44 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 15:14:46 2023 -0400 . commit 5cbc177ba5409cb3b0532149df535c8265c370d1 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 15:04:49 2023 -0400 . commit 25edf4d4cda19d9b628afb4eb3e1dfd828ead7e6 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 15:04:00 2023 -0400 . commit e57064e2102af2489f4884e48dcc9431723e04fb Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 15:02:56 2023 -0400 . commit 1571c42fdeba67a27b7f890d462144059c22320a Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 14:59:25 2023 -0400 . commit 65c7982637b428829724dea1afd217a5ff71e093 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 14:56:15 2023 -0400 . commit 348d2198a64d3af90b80452fd29ac8fcf89ce4f6 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 14:52:28 2023 -0400 . commit f3eacf8a9a03dfa1fa2b9c489504aaaeb517bf8b Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 26 14:40:55 2023 -0400 . commit 34f7af3e179dadb6be0d4f97ef0a2eb31d02d761 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 13:40:17 2023 -0400 . commit 8fdcb5692177d7a5742e4974b2859b1c09762dcd Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 05:11:10 2023 -0400 . commit 3340905398916d441c42454d49e32b766b8d78c3 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 04:35:24 2023 -0400 . commit 8c9953a1ddf1641b3559672ea847de156da7e395 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 04:13:42 2023 -0400 . commit 98851e14c76f300ba6045951e1c9b9093af56d72 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 03:23:07 2023 -0400 . commit d189f8860f11bded35871796165a1af18ccc9c89 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 01:39:26 2023 -0400 . commit 793a4d13f2503b83dd671ee08aab208151369e63 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 26 01:07:45 2023 -0400 add reverse menu function commit 32aacd806a614deca71a43848cda954976db7fcc Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 22:55:25 2023 -0400 . commit ca0253d34e61746bca92c05a66042d35424ddb52 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 18:06:13 2023 -0400 . commit 13411243f756f46c6c3171531904edbaf19b0b07 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 25 06:38:25 2023 -0400 . commit 62e418f26f80d0e75f30ce9cf7428c418ea6bce9 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 14:19:55 2023 -0400 . commit a52a2ff769f03e1efff89cbca4d5b929de4e30d4 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 04:49:48 2023 -0400 . commit b89d69e632c61a2907f978e2f8b32f4ae83347f8 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 04:42:17 2023 -0400 add popup support commit 4abb92b4a18c9f79c4a529e0309da09631318644 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 00:06:33 2023 -0400 . commit 0c0aab52ee5e81aa6b7ee9a6a1a8b0379a2b3427 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 25 00:06:07 2023 -0400 . commit a6265472178a300bbb80505e59dfebf5ee978dc1 Merge: 78e3485 35aaca1 Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 24 04:57:54 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 78e3485b80adcf20553741c5f48320365f2734b2 Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 24 04:57:51 2023 -0400 . commit 35aaca10cabc5a8de2482f5654a862c254f69af2 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 24 04:05:02 2023 -0400 . commit 4ff85f84e0fb5c70e275715f684c560e99bc6d25 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 24 03:15:05 2023 -0400 . commit 626e840630457c978dc7cfc67c12412ce19ec7b2 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 24 02:08:38 2023 -0400 . commit 94fe349621b79c60de4bc8aaf51412ed5b6ea60d Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 24 01:54:18 2023 -0400 . commit cafa07ebe88983c16bc9c71052f7406202403b60 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 24 01:11:27 2023 -0400 . commit 860e5524d7b05d7eed4223e71fdc877d833e4906 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 23 15:16:23 2023 -0400 . commit 50f23de9e70138aa9aca4fef9bd25fe55762d031 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 23 14:56:29 2023 -0400 . commit f2a72b117d0d55c2052dda3b565879b0f1838131 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 23 05:16:23 2023 -0400 . commit 97c6a07d009698c16862bf58bb87bd5577abf7e6 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 23 03:17:43 2023 -0400 . commit ea6c04a1f953779ca78dce9abed7752b1aa78799 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 23 02:55:17 2023 -0400 . commit cb00739211a8f6475195d69b04af74052faa02a2 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 23 02:33:05 2023 -0400 . commit a6e0962b0c8015fad840d742e9fd7bfdd713566c Merge: 6c9f799 615dce2 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 22 09:52:03 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 615dce2e6b85376ab25a75c9c2fa752c6decb43a Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 22 13:59:56 2023 -0400 . commit 35c2916a58117bee6c72368142322ff90697948f Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 22 13:42:14 2023 -0400 . commit 6c9f7990c943a17536df37e06ac6dfe49a543b36 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 22 09:51:55 2023 -0400 . commit 474592185b1d15c5e75f80c20bc0bf991e0917e7 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 22 06:07:11 2023 -0400 . commit 328baea58d4208b36d2956eb536f1bb1a137fc16 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 22 06:01:41 2023 -0400 . commit 441e377dee9694a3c6154a1ff175bacd2ecfcd47 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 22 05:24:22 2023 -0400 . commit 226bb43ad152f2a7396132294deb8fde0c08bb97 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 22 03:13:27 2023 -0400 . commit 327fe11db15371c59d0eb885edf93d5d1047c54e Merge: bd494eb b14a5b8 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 21 13:01:04 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit bd494eb6d2e074aa76f67b553f550ad9e11f9a86 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 21 13:00:57 2023 -0400 . commit b14a5b8fc1a0549ce3d6508c73e582043fc7577c Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Fri Apr 21 01:41:18 2023 -0400 . commit 74a6c19ba61d4e5674842aded812381cd2526b49 Merge: 8d55b09 bedee86 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 20 11:59:16 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 8d55b09cf7ca7665f6f8bfccd9cf668e011f5072 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 20 11:59:04 2023 -0400 . commit bedee86bd7c32b74ecc685aeddd6280670f6e5a7 Merge: 5c10b61 1369540 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 19 19:51:59 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 5c10b61a20e45bfeb18b4ae2251c9eb09e0889be Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 19 19:51:54 2023 -0400 . commit 13695401c7474ffe9782ea756c0d179cb114da6c Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 19 03:22:05 2023 -0400 . commit 2948e2aa670fe89598220f59df6912fa105470b0 Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 19 03:05:37 2023 -0400 . commit 9da84d3cdfd7ebbc6fc25015b5a51ba340ab1a2c Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 19 03:05:23 2023 -0400 . commit 53e69aabc39336a457f629daa96d707b23244c40 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 19 00:55:06 2023 -0400 . commit 7b9d98f104ab838103d21aea94a3da5ce2f996ea Merge: 3511f2d 691adc5 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 18 21:46:11 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 691adc506755d1607495cc9e65d373ddd86247fc Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 18 21:45:54 2023 -0400 . commit 3511f2d70238bc0ff669591417dbf4bf552fc333 Merge: fe17ea1 2a5e926 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 18 21:45:00 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit fe17ea164a6872dc9ac9a1a1360be8a8a3eeab37 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 18 21:44:55 2023 -0400 . commit 2a5e926e33e04b95b3af4c7c72d2df4f430e5869 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 18 18:35:18 2023 -0400 . commit bb01b10935e24518746d0cc1974cbf40d3bab28e Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 18 12:57:19 2023 -0400 . commit b94e1c2a14d771c94567bdc9a2503f57a6c649b3 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 18 12:44:53 2023 -0400 . commit a0fabd29b6c31ff70ad2396ac7b1ca52c693f2d2 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 18 03:53:30 2023 -0400 . commit 383cc61310d9f07787865294e9fbd8b6007c3c0a Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 18 03:46:23 2023 -0400 . commit 2a2bb928e22962ac97959c90a844b0f3fe9786d7 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 18 03:30:50 2023 -0400 . commit 5edd588447bdcc8c50f40f9698e7179753c51417 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 18 03:25:46 2023 -0400 . commit f01329b49bd05fccabfabf4c3a95e68dab8973ba Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 18 01:25:09 2023 -0400 . commit c808517c93a71668b1e9395c8a041c2e208df4e2 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 23:45:11 2023 -0400 . commit 4a0390f6b4eff0cacfe8855553ba0d7c9a6d6b39 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 23:43:08 2023 -0400 . commit c31b86ed2082cfb315883885164afa89e06ca2f6 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 22:08:14 2023 -0400 . commit d9b226e63648612529a7f679024ec323717bb96c Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 21:08:31 2023 -0400 . commit b6a00e990e7b9377621838e051822600e7b7026a Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 19:01:11 2023 -0400 . commit e2978d17a1160ede53c58090bbb8e5d707d303cf Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 16:51:41 2023 -0400 . commit f063a88f479a1e95a2c6bdc6479c0e51169aef85 Merge: d18fddb a432c4d Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 04:10:24 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit a432c4d0f5427cfe91439c73b7dfbdf0afb9abfd Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 17 12:59:29 2023 -0400 . commit 0f1f0bd02db0b1ae8c4491594c7d1cfaa5a0a90c Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 17 04:10:50 2023 -0400 . commit d18fddb5d103a9e32219a250db5a12040c2e2e94 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 04:10:17 2023 -0400 . commit 025d686fa07cc2484842878bfb61086a25232e20 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 17 03:33:53 2023 -0400 . commit 40e6d011a9373ad1c9519271e8b3ef1f039a42ab Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 16 16:47:28 2023 -0400 . commit b0bfe0db5af9bd5d1dee2cece2354785475bbde5 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 14:27:11 2023 -0400 . commit 45875076c01911b086cdad37f097ff1bce90c97a Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 13:55:01 2023 -0400 . commit df0f8ac3d45a4e24ef1d6e9b19be32598fe77430 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 13:25:56 2023 -0400 . commit 49c8f8193f3d847bd3a4780624a4bdc1ad9fe636 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 13:00:45 2023 -0400 . commit dc1591c3b82fd921a366d5df3b6023acd435e210 Merge: 1ab8301 ea8066d Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 04:16:08 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 1ab83017bec3c84cd61a2d1932f70367337199e0 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 04:16:02 2023 -0400 . commit ba9c3f96e41cb1271341c407b771ea3da01ea46e Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 16 04:15:46 2023 -0400 . commit ea8066d90f1641b516fb60224763ada2af2a428e Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 15 18:06:44 2023 -0400 . commit 5cc85602ce355ac341ee69ac6931744a4d252163 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 15 03:03:48 2023 -0400 . commit fa6493a393c4f61532b91408e6546fd17f587486 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 14 17:17:50 2023 -0400 . commit b7937e39049ac61507a95c8e8345a9622c7ace56 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 14 16:22:38 2023 -0400 . commit 1fc71a9a93708b2509e47f88ae0e48350a8cb7e2 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Thu Apr 13 22:25:39 2023 -0400 . commit 9e6679cbe0fd54db2e5ac2427f2e2ef1193c8578 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Thu Apr 13 01:56:05 2023 -0400 . commit 8f0382f9a5e632f55cbafaa4dfe778cfd48e799b Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 12 13:49:20 2023 -0400 . commit 020ad452eb38f39bacc9becd519c4deb7bf75200 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 12 01:18:37 2023 -0400 . commit a779a3622bfc7cf44ea16aca494c0169508a02de Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 12 00:27:01 2023 -0400 . commit 6b2762ec49d24304a70552c76cae6457204c1bd9 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Wed Apr 12 00:06:10 2023 -0400 . commit 50228c85aa6d6ccd03a8b10abcc9be259689e22f Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 11 23:04:03 2023 -0400 . commit 4f40c2604ddbfa527c7cc414903e65a2e650c8e6 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 11 21:42:30 2023 -0400 . commit b59ab4008e4d385853923e6ef8686aeb06016657 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 21:18:29 2023 -0400 . commit 71e866eae4b1f5277a58574a22112cbbc5ee8217 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 21:10:32 2023 -0400 . commit c960b981ead6f7a54deda6f5598ba75f11eb2b60 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 20:35:47 2023 -0400 . commit 7245012bb8a81a2bc81b45576b53c8a40b95b075 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 20:35:37 2023 -0400 . commit 5414f79cf47236bf052975d58f6f3cfd6f974dae Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 19:56:24 2023 -0400 neovim theme handle linked hi commit b646b3379ab80aff56174643aa3cf4c2877115c4 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 04:42:33 2023 -0400 . commit 7c40fed18ee3e867883c097c9654c9953d15f874 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 04:33:39 2023 -0400 . commit 470e697fc356e173a5ea014539ef8595582a5178 Merge: 1a033ed 540e599 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 04:07:13 2023 -0400 Merge branch 'gitlab' of gitlab.com:tangnachuan1208/dotfiles into gitlab commit 1a033ed725625e45a9d6d6e7f725e769c05313f2 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 11 04:07:09 2023 -0400 . commit 540e599ba85869fe236c8c1a9ef2729ace1a9a60 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Tue Apr 11 03:28:57 2023 -0400 . commit 353baed95808a186b1c88bb19a253dddd58636ff Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 10 16:09:51 2023 -0400 . commit 2646334fca2f50321c1e722d9f4902b23d68e03d Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 10 14:05:13 2023 -0400 . commit f03e8c05e2df0012e5b818847bd5055f226a16fd Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 10 05:58:25 2023 -0400 . commit 425c4726611b41bcc06310228d53b32f4b2c4ff3 Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 10 13:04:29 2023 -0400 . commit 58987e779b5b262e508bdb0fcfe64d9ac8260a34 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 10 05:05:02 2023 -0400 . commit acea1d24abd1c8944c57a7b8cf42d83c268ad8a6 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Apr 10 04:24:11 2023 -0400 . commit aae699d87bb779c08ca0ee9d753591950e2e1ded Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 10 01:16:38 2023 -0400 . commit 6c9a99677b547a51058b20935aaa000eaa0b8bfe Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 9 20:51:34 2023 -0400 . commit d3be402926167053f93ee6e73157286c34c9b96e Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 9 17:13:17 2023 -0400 . commit 3467157ffc607f2f25eca1937979fd9e3f844991 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 9 17:02:07 2023 -0400 . commit a7f0bf2cf8c23e993c520556ab9d56992620a7ef Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 9 14:15:45 2023 -0400 . commit 011f56acb8d952df923ed268099c59dec4550b05 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 9 12:40:49 2023 -0400 . commit a8100759f84aff64d137b0347f3ee1a13735563c Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sun Apr 9 01:58:34 2023 -0400 . commit 937655d11ff4dfb5f53f000726d90ad23c18001f Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 8 21:15:53 2023 -0400 . commit 5f028a3fdac8bf999b323eae1687d5e9cd90c582 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 8 18:59:57 2023 -0400 . commit 0a8c4d2c36bb32244ae8c73770be97cf9544d6ce Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 8 15:34:24 2023 -0400 . commit 6dc51cd6ec29277a2a310a12c8a5e531b2fc1cbf Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 8 12:55:56 2023 -0400 . commit cdb43ca867fdbaf9590a61d7e964135bf1fbb446 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 8 02:54:41 2023 -0400 . commit 4950f3f01ed0fcfb0ec65040c5c933e176837812 Author: Donald T <tang.1208@osu.edu> Date: Fri Apr 7 02:27:05 2023 -0400 . commit 42a046c3bd3eb49360814c589da0699e5b55abd2 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 6 22:20:06 2023 -0400 . commit 659febb83e50b8248d6d11d81ca93e8602cc8bc8 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 6 18:49:28 2023 -0400 . commit 6d9503b24c23fa2d471b6c6411c61fc39f227147 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 6 01:59:15 2023 -0400 . commit add1eb8588f0d713bf606d8630f13e136aa2b629 Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 6 01:59:07 2023 -0400 . commit 5e742f86d4b66950aabe4db5de3170d155e2651f Author: Donald T <tang.1208@osu.edu> Date: Thu Apr 6 01:31:03 2023 -0400 fix: non bottom windowns' fillchars commit a5106e1f03272f1a57b53f00700e49eee95e16fa Author: Donald T <tang.1208@osu.edu> Date: Wed Apr 5 13:03:17 2023 -0400 . commit 015d0777ded7d5dcbb2621a58ce00eca0f76a35c Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 4 13:48:13 2023 -0400 . commit ae4c58b44149e8abe20c930b312c95385181ff8c Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 4 13:21:51 2023 -0400 . commit 88e20f1483f263a08a9031a6f65caa25bc73a564 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 4 13:21:41 2023 -0400 . commit ac32272023fd5e0fe236f7c1ea5fde1442e15ee3 Author: Donald T <tang.1208@osu.edu> Date: Tue Apr 4 05:41:40 2023 -0400 . commit 30da5d0a4b4bfd180f40d3d27e2f68553fcd6f0a Author: Donald T <tang.1208@osu.edu> Date: Mon Apr 3 18:20:15 2023 -0400 add global statusline commit 1cb22a5a558b94506e024b396ef96c39f25b54d1 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 2 05:14:01 2023 -0400 . commit a266737bc28d108efa6b6d9377bebafbb44a4cc6 Author: Donald T <tang.1208@osu.edu> Date: Sun Apr 2 02:18:17 2023 -0400 add demo commit 33c6f5dc475f2a0b02a72f64c954204c4abeb0bd Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 20:45:23 2023 -0400 . commit 888f8aab0a34ca47d2129b6d1843e44ad8fe419d Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 18:47:35 2023 -0400 . commit ea82974dc10729396e0a80a52f413140f39d7d9b Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 18:29:14 2023 -0400 . commit 894f37a2073fa6314e6fc32d07ff1337376d8c40 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 1 16:28:55 2023 -0400 add trace.vim commit e280e7a1d60cae9fd6ec173f6c77ffacb47a5328 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Sat Apr 1 16:17:02 2023 -0400 . commit ef3e51bbe50211b4f3db4f42bfde4fac1547b277 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 15:19:20 2023 -0400 . commit 6e7f86b535bf0eced8f13d0f88efd5178604ddd5 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 15:15:35 2023 -0400 . commit 9e942741c54ed648f3b15bf587b62118be9b5373 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 14:40:32 2023 -0400 . commit a1a4be8f93fa32f2691087796c4d1c545761258b Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 14:38:37 2023 -0400 . commit 90a8f6add2e8bd8c973992145c831c2e2688ccb9 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 14:35:24 2023 -0400 . commit 4100fb3b815dce519c7b305e6b63897082bacdd8 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 05:40:59 2023 -0400 . commit d581fb1c276c355bf85f73689b33d97ef0c5ce20 Author: Donald T <tang.1208@osu.edu> Date: Sat Apr 1 05:11:14 2023 -0400 . commit 30a5a319d690665e106fb074750da87da0fc17d9 Author: Donald T <tang.1208@osu.edu> Date: Fri Mar 31 13:09:15 2023 -0400 . commit 0f61b98009dd804f9e00c92909d5f52143f66143 Author: Donald T <tang.1208@osu.edu> Date: Fri Mar 31 03:47:44 2023 -0400 . commit e7cd4991139f3a27f5db40cc9034bf44672a9517 Author: Donald T <tang.1208@osu.edu> Date: Fri Mar 31 02:56:40 2023 -0400 win compatibility commit 179ac4f4057c0a6b88e5abde14414d0a4c785006 Author: Donald T <tang.1208@osu.edu> Date: Fri Mar 31 02:09:51 2023 -0400 win compatibility commit 212e64eaebc7ce59866f537b41b42a22cc2212c1 Author: Donald T <tang.1208@osu.edu> Date: Fri Mar 31 01:01:33 2023 -0400 win compatibility commit 21e06398719f2b363e8f48ae72a7017ffe5912a7 Author: Donald T <tang.1208@osu.edu> Date: Thu Mar 30 19:37:04 2023 -0400 . commit 79660071b4d68f9e07a71179e77b2e994e5ca7df Author: Donald T <tang.1208@osu.edu> Date: Thu Mar 30 16:11:00 2023 -0400 fix airline coc extension not updated properly commit bd24de81a9bb8d2fb29ef48908b3c26c5f246550 Author: Donald T <tang.1208@osu.edu> Date: Thu Mar 30 14:22:47 2023 -0400 add my own transparent method commit 15c3fc74c329ba256d36b0056756132c5ce296b8 Author: Donald T <tang.1208@osu.edu> Date: Thu Mar 30 04:58:41 2023 -0400 . commit 2405ae16e8cc26f51a641d7a71a7ab5d7972b1e6 Author: Donald T <tang.1208@osu.edu> Date: Thu Mar 30 02:50:17 2023 -0400 . commit f6d251b4ced41b855737fe713f2e18d98af988d5 Author: Donald T <tang.1208@osu.edu> Date: Thu Mar 30 00:00:48 2023 -0400 . commit 67c25293ddb51686e34a76c7437752de244c8e12 Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 23:48:17 2023 -0400 . commit 3bba91fdb46d23b50e9ef9805274ab9583f53572 Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 13:15:00 2023 -0400 . commit 22300562576222261d3b75f03fbd9ca6b17c5d7a Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 12:35:50 2023 -0400 . commit a42a2ccfa022070524a8b4aa5c3eaed884c2826f Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 03:51:15 2023 -0400 imporve preview script to support cat commit d69f83aaa0af5310e639af72c0d5d9831a3559fe Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 01:24:50 2023 -0400 . commit 29fbf97bbbd636f569b6ca366ce5c8d24bfb537e Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 01:19:37 2023 -0400 move theme related function commit be7844c3078596bbd29548e7adad8fa4eee707e1 Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 00:40:10 2023 -0400 move more functions to utils commit 4f54fd428a8fbbf507324feb5390f84d86adf0a1 Author: Donald T <tang.1208@osu.edu> Date: Wed Mar 29 00:01:29 2023 -0400 add config for coc-fzf commit b8f095f7c7cfa55f0963a3c0f580896c7a3f50bc Author: Donald T <tang.1208@osu.edu> Date: Tue Mar 28 22:44:53 2023 -0400 move functions commit 8e8610f5214defae8fd7b7cd7e329278a23a7469 Author: Donald T <tang.1208@osu.edu> Date: Tue Mar 28 01:48:36 2023 -0400 . commit 2797153564ac377c5c39e3f34a5736cda5530b51 Author: Donald T <tang.1208@osu.edu> Date: Tue Mar 28 00:54:26 2023 -0400 . commit 90e1382038b88a7807ec09fc23dbc38fb5707d39 Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 22:50:23 2023 -0400 . commit 37681413115c5e746c25e252ee2ef98addfe5b9d Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 22:36:21 2023 -0400 . commit 839816c3eb10093ed3a1200f43470b4841273a3b Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 20:19:20 2023 -0400 fix path issue commit 5581395825ca4876e67abf8cdc2567d431a3c1cb Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 19:52:13 2023 -0400 . commit 141b58a12b8f1bcd43db6902752c402e02dbd371 Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 19:52:01 2023 -0400 . commit c0de4df26f83cebd99d6a65a9ad42e4de086c08a Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 19:16:21 2023 -0400 add fish config and imporve install script commit c7313fd820c0cd0ad7727fda98c417f62c6c23de Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 18:08:49 2023 -0400 fix bugs commit 5de8083028596f91da45e6d2d7abcc40f7bdb6ad Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 18:00:02 2023 -0400 fix ariline bug commit 057a255478d3ee08095f092cf671cd1fbdfc916d Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 16:07:07 2023 -0400 . commit 13af63e75a4cd1dce1407db8c09ca6b7b74dcd7f Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 15:36:15 2023 -0400 . commit 1969e30302e1fc2a84293bd9d3e29d98c0a2abec Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 15:24:47 2023 -0400 . commit fd7a79c760ef9942d033eb206c17148aa11ddc9b Author: Donald T <tang.1208@osu.edu> Date: Mon Mar 27 14:06:49 2023 -0400 . commit 7f39e43e8e58139c1a55e889b8c525f767239b79 Author: Nachuan Tang <tangnachuan1208@gmail.com> Date: Mon Mar 27 04:07:45 2023 -0400 fix fzf preview not working in windows commit 2b3784d04bbb1c1412c5e46c35d4825ef492196a Author: Nachuan Tang <tang.1208@osu.edu> Date: Mon Mar 27 03:02:05 2023 -0400 . commit 9c5ee3626d7f9416ec243c3fcb2d5b41102a1792 Author: Nachuan Tang <tang.1208@osu.edu> Date: Sun Mar 26 20:14:31 2023 -0400 . commit d19b6b79d898a40385553d02f64aa3690e5aeb62 Author: Nachuan Tang <tang.1208@osu.edu> Date: Sun Mar 26 06:11:39 2023 -0400 . commit 49c77cc5135f5578b2268b4819311c45f6a00702 Author: Nachuan Tang <tang.1208@osu.edu> Date: Sun Mar 26 04:52:33 2023 -0400 . commit 870f45a06cb849e0d91b6dac9ce1da8d3f2f1f7e Author: Nachuan Tang <tang.1208@osu.edu> Date: Sun Mar 26 04:50:01 2023 -0400 structure change commit 251a36fbd66b861dc2a96a403a73dcdc20f0289c Author: Nachuan Tang <tang.1208@osu.edu> Date: Sun Mar 26 02:38:05 2023 -0400 .
This commit is contained in:
@@ -0,0 +1 @@
|
||||
theme_config.vim
|
||||
@@ -0,0 +1,85 @@
|
||||
" Base16 Classic Dark vim-airline-theme (https://github.com/dawikur/base16-vim-airline-themes)
|
||||
" For vim-airline (https://github.com/vim-airline/vim-airline)
|
||||
" By Jason Heeris (http://heeris.id.au)
|
||||
|
||||
let s:scheme_slug = 'sunbather_dark'
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette = {}
|
||||
|
||||
" GUI color definitions
|
||||
let s:gui00 = '#151515'
|
||||
let s:gui01 = '#202020'
|
||||
let s:gui02 = '#303030'
|
||||
let s:gui03 = '#505050'
|
||||
let s:gui04 = '#B0B0B0'
|
||||
let s:gui05 = '#D0D0D0'
|
||||
let s:gui06 = '#E0E0E0'
|
||||
let s:gui07 = '#F5F5F5'
|
||||
let s:gui08 = '#AC4142'
|
||||
let s:gui09 = '#D28445'
|
||||
let s:gui0A = '#F4BF75'
|
||||
let s:gui0B = '#90A959'
|
||||
let s:gui0C = '#75B5AA'
|
||||
let s:gui0D = '#6A9FB5'
|
||||
let s:gui0E = '#AA759F'
|
||||
let s:gui0F = '#8F5536'
|
||||
|
||||
" Terminal color definitions
|
||||
let s:cterm00 = "00"
|
||||
let s:cterm03 = "08"
|
||||
let s:cterm05 = "07"
|
||||
let s:cterm07 = "15"
|
||||
let s:cterm08 = "01"
|
||||
let s:cterm0A = "03"
|
||||
let s:cterm0B = "02"
|
||||
let s:cterm0C = "06"
|
||||
let s:cterm0D = "04"
|
||||
let s:cterm0E = "05"
|
||||
if exists("base16colorspace") && base16colorspace == "256"
|
||||
let s:cterm01 = "18"
|
||||
let s:cterm02 = "19"
|
||||
let s:cterm04 = "20"
|
||||
let s:cterm06 = "21"
|
||||
let s:cterm09 = "16"
|
||||
let s:cterm0F = "17"
|
||||
else
|
||||
let s:cterm01 = "10"
|
||||
let s:cterm02 = "11"
|
||||
let s:cterm04 = "12"
|
||||
let s:cterm06 = "13"
|
||||
let s:cterm09 = "09"
|
||||
let s:cterm0F = "14"
|
||||
endif
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.normal = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui04, s:cterm01, s:cterm04 ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.normal_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.insert = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui0B, s:cterm01, s:cterm0B ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.insert_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.replace = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui0E, s:cterm01, s:cterm0E ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.replace_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.visual = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui09, s:cterm01, s:cterm09 ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.visual_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.inactive = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui01, s:cterm01, s:cterm01 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ],
|
||||
\ [ s:gui05, s:gui01, s:cterm05, s:cterm01 ])
|
||||
@@ -0,0 +1,85 @@
|
||||
" Base16 Summerfruit Light vim-airline-theme (https://github.com/dawikur/base16-vim-airline-themes)
|
||||
" For vim-airline (https://github.com/vim-airline/vim-airline)
|
||||
" By Christopher Corley (http://christop.club/)
|
||||
|
||||
let s:scheme_slug = 'sunbather_light'
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette = {}
|
||||
|
||||
" GUI color definitions
|
||||
let s:gui00 = '#FFFFFF'
|
||||
let s:gui01 = '#E0E0E0'
|
||||
let s:gui02 = '#D0D0D0'
|
||||
let s:gui03 = '#B0B0B0'
|
||||
let s:gui04 = '#000000'
|
||||
let s:gui05 = '#101010'
|
||||
let s:gui06 = '#151515'
|
||||
let s:gui07 = '#202020'
|
||||
let s:gui08 = '#FF0086'
|
||||
let s:gui09 = '#FD8900'
|
||||
let s:gui0A = '#ABA800'
|
||||
let s:gui0B = '#00C918'
|
||||
let s:gui0C = '#1FAAAA'
|
||||
let s:gui0D = '#3777E6'
|
||||
let s:gui0E = '#AD00A1'
|
||||
let s:gui0F = '#CC6633'
|
||||
|
||||
" Terminal color definitions
|
||||
let s:cterm00 = "00"
|
||||
let s:cterm03 = "08"
|
||||
let s:cterm05 = "07"
|
||||
let s:cterm07 = "15"
|
||||
let s:cterm08 = "01"
|
||||
let s:cterm0A = "03"
|
||||
let s:cterm0B = "02"
|
||||
let s:cterm0C = "06"
|
||||
let s:cterm0D = "04"
|
||||
let s:cterm0E = "05"
|
||||
if exists("base16colorspace") && base16colorspace == "256"
|
||||
let s:cterm01 = "18"
|
||||
let s:cterm02 = "19"
|
||||
let s:cterm04 = "20"
|
||||
let s:cterm06 = "21"
|
||||
let s:cterm09 = "16"
|
||||
let s:cterm0F = "17"
|
||||
else
|
||||
let s:cterm01 = "10"
|
||||
let s:cterm02 = "11"
|
||||
let s:cterm04 = "12"
|
||||
let s:cterm06 = "13"
|
||||
let s:cterm09 = "09"
|
||||
let s:cterm0F = "14"
|
||||
endif
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.normal = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui04, s:cterm01, s:cterm04 ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.normal_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.insert = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui0B, s:cterm01, s:cterm0B ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.insert_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.replace = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui0E, s:cterm01, s:cterm0E ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.replace_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.visual = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui09, s:cterm01, s:cterm09 ],
|
||||
\ [ s:gui04, s:gui02, s:cterm04, s:cterm02 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ])
|
||||
let g:airline#themes#{s:scheme_slug}#palette.visual_modified = {
|
||||
\ 'airline_c' : [ s:gui07, s:gui01, s:cterm07, s:cterm01 ]}
|
||||
|
||||
let g:airline#themes#{s:scheme_slug}#palette.inactive = airline#themes#generate_color_map(
|
||||
\ [ s:gui01, s:gui01, s:cterm01, s:cterm01 ],
|
||||
\ [ s:gui04, s:gui01, s:cterm04, s:cterm01 ],
|
||||
\ [ s:gui05, s:gui01, s:cterm05, s:cterm01 ])
|
||||
@@ -0,0 +1,27 @@
|
||||
" vim build with clipboard support doesn't need this and it work
|
||||
" better than neovim
|
||||
|
||||
func s:helper()
|
||||
call system('printf "%s" '.shellescape(join(v:event['regcontents'], "\n")).' | xclip -sel clip' )
|
||||
endfunc
|
||||
|
||||
func! clipboard#get()
|
||||
endfunc
|
||||
|
||||
func! clipboard#enable()
|
||||
augroup WSLClipboard
|
||||
au!
|
||||
au TextYankPost * call s:helper()
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
func! clipboard#disable()
|
||||
augroup WSLClipboard
|
||||
au!
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
func! clipboard#paste()
|
||||
return system('xclip -o -sel clip' )
|
||||
endfunc
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
let s:path = get(g:, '_config_path', fnamemodify(
|
||||
\ resolve(expand('<sfile>:p')), ':h:h').'/_config.vim')
|
||||
let s:config = {}
|
||||
|
||||
function! config#saveConfig()
|
||||
let p = utils#readvar(s:path)
|
||||
if type(p) != type({})
|
||||
let p = {}
|
||||
endif
|
||||
let vim_type = has('nvim') ? 'nvim' : 'vim'
|
||||
let config = has_key(p, vim_type) && type(p[vim_type]) == v:t_dict
|
||||
\ ? p[vim_type] : {}
|
||||
let config = utils#merge(config, s:config)
|
||||
|
||||
" vim and nvim may have diferenrt available plugins
|
||||
let p[vim_type] = config
|
||||
call utils#savevar(p, s:path)
|
||||
endfunction
|
||||
|
||||
function! s:loadConfig()
|
||||
let result = utils#readvar(s:path)
|
||||
" if it is dictionary
|
||||
let vim_type = has('nvim') ? 'nvim' : 'vim'
|
||||
if type(result) == v:t_dict
|
||||
if has_key(result, vim_type)
|
||||
let config = result[vim_type]
|
||||
if type(config) == v:t_dict
|
||||
let s:config = config
|
||||
return
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! config#setConfig(dict)
|
||||
let s:config = utils#merge(s:config, a:config)
|
||||
endfunction
|
||||
|
||||
function! config#init()
|
||||
call config#loadConfig()
|
||||
augroup config
|
||||
autocmd!
|
||||
autocmd VimLeave * call config#saveConfig()
|
||||
augroup END
|
||||
endfunction
|
||||
@@ -0,0 +1,169 @@
|
||||
|
||||
" this intent to create a list of options that can be toggled on/off
|
||||
|
||||
let s:options = {}
|
||||
|
||||
if !has('nvim')
|
||||
import autoload 'utils/selector.vim'
|
||||
endif
|
||||
|
||||
" opt is a dictionary with the following keys(* = required):
|
||||
" togglefunc and enablefunc/disablefunc are mutually exclusive
|
||||
" params:
|
||||
" - name: name of the option
|
||||
" - opt: a dictionary with following options():
|
||||
" - desc: description,
|
||||
" - togglefunc: function reference, if exists, enablefunc and disablefunc
|
||||
" will be ignored,
|
||||
" - enablefunc: function reference, if this exists, disablefunc must exists
|
||||
" as well and vice verse
|
||||
" - disablefunc: function reference,
|
||||
" - isEnabled: string, true or false or function reference. only needed when
|
||||
" using enablefunc and disablefunc
|
||||
function! options#add(name, opt) abort
|
||||
if (!has_key(a:opt, 'togglefunc')
|
||||
\ && (!has_key(a:opt, 'enablefunc') || !has_key(a:opt, 'disablefunc')))
|
||||
throw 'invalid option (togglefunc or enablefunc/disablefunc must be set))'
|
||||
endif
|
||||
|
||||
if !has_key(a:opt, 'isEnabled') && !has_key(a:opt, 'togglefunc')
|
||||
throw 'specify initial state(isEnabled) or set togglefunc'
|
||||
endif
|
||||
|
||||
for key in ['togglefunc', 'enablefunc', 'disablefunc']
|
||||
if has_key(a:opt, key) && type(a:opt[key]) != v:t_func
|
||||
throw key . ' must be a function reference'
|
||||
endif
|
||||
endfor
|
||||
|
||||
if !has_key(a:opt, 'desc')
|
||||
let a:opt['desc'] = ''
|
||||
endif
|
||||
|
||||
let s:options[a:name] = a:opt
|
||||
endfunction
|
||||
|
||||
" Register a simple vim option
|
||||
" params:
|
||||
" - name: name of the option
|
||||
" - dictionary(optional):
|
||||
" - desc: description of the option
|
||||
function! options#addVimOption(name, ...) abort
|
||||
let opt = {}
|
||||
|
||||
func opt.togglefunc(key)
|
||||
if eval('&' . a:key)
|
||||
execute('set no' . a:key)
|
||||
else
|
||||
execute('set ' . a:key)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
if a:0 > 0
|
||||
let opt['desc'] = a:1
|
||||
endif
|
||||
|
||||
call options#add(a:name, opt)
|
||||
endfunction
|
||||
|
||||
function! options#getAll() abort
|
||||
let list = []
|
||||
for [key, val] in items(s:options)
|
||||
let desc = val.desc != '' ? ' - ' . val.desc : ''
|
||||
call add(list, [key, key . desc])
|
||||
endfor
|
||||
return list
|
||||
endfunction
|
||||
|
||||
function! options#getAllRaw() abort
|
||||
let list = []
|
||||
for [key, val] in items(s:options)
|
||||
call add(list, [key, desc])
|
||||
endfor
|
||||
return list
|
||||
endfunction
|
||||
|
||||
function! options#toggle(name) abort
|
||||
if !has_key(s:options, a:name)
|
||||
throw 'invalid option name: ' . a:name
|
||||
endif
|
||||
|
||||
let opt = s:options[a:name]
|
||||
if has_key(opt, 'togglefunc')
|
||||
call opt.togglefunc(a:name)
|
||||
else
|
||||
if type(opt.isEnabled) == v:t_func
|
||||
let isEnabled = opt.isEnabled()
|
||||
else
|
||||
let isEnabled = opt.isEnabled
|
||||
endif
|
||||
if isEnabled
|
||||
call opt.disablefunc()
|
||||
else
|
||||
call opt.enablefunc()
|
||||
endif
|
||||
if type(opt.isEnabled) != v:t_func
|
||||
let s:options[a:name].isEnabled = opt.isEnabled ? v:false : v:true
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! options#preSet()
|
||||
call options#addVimOption('number', 'show line number')
|
||||
call options#addVimOption('relativenumber')
|
||||
|
||||
let colorcolumnOpt = {
|
||||
\ 'desc': 'show color column',
|
||||
\ 'isEnabled': &colorcolumn != ''
|
||||
\ }
|
||||
function colorcolumnOpt.togglefunc(...)
|
||||
if &colorcolumn == ''
|
||||
let &colorcolumn = '80'
|
||||
else
|
||||
let &colorcolumn = ''
|
||||
endif
|
||||
endfunction
|
||||
|
||||
call options#add('colorcolumn', colorcolumnOpt)
|
||||
|
||||
let toggleBgOpt = {
|
||||
\ 'desc': 'toggle dark/light theme',
|
||||
\ }
|
||||
function toggleBgOpt.togglefunc(...)
|
||||
call theme#toggleBg()
|
||||
endfunction
|
||||
call options#add('dark/light', toggleBgOpt)
|
||||
endfunction
|
||||
|
||||
function! s:select(wid, result)
|
||||
let result = a:result[0]
|
||||
if result != v:null
|
||||
let key = s:rmap[result]
|
||||
call options#toggle(key)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! options#fzf_options()
|
||||
let list = []
|
||||
let s:rmap = {}
|
||||
for [key, val] in items(s:options)
|
||||
let desc = val.desc != '' ? key . ' - ' . val.desc : key
|
||||
call add(list, desc)
|
||||
let s:rmap[desc] = key
|
||||
endfor
|
||||
let s:fzf_list = list
|
||||
call selector.Start( list,
|
||||
\ {
|
||||
\ 'select_cb' : function('s:select'),
|
||||
\ 'yoffset' : 0.3,
|
||||
\ 'height' : 0.4,
|
||||
\ 'title' : 'Options',
|
||||
\ 'width' : 0.4
|
||||
\ })
|
||||
endfunc
|
||||
|
||||
function! options#init()
|
||||
call options#preSet()
|
||||
command! -nargs=0 Options call options#fzf_options()
|
||||
nnoremap <silent> <leader>fo :Options<CR>
|
||||
endfunction
|
||||
@@ -0,0 +1,14 @@
|
||||
func! os#getOS()
|
||||
if has("win64") || has("win32") || has("win16")
|
||||
return "Windows"
|
||||
else
|
||||
return substitute(system('uname'), '\n', '', '')
|
||||
endif
|
||||
endfunc
|
||||
|
||||
function! os#setWindows()
|
||||
set updatetime=50
|
||||
set shell=powershell
|
||||
endfunction
|
||||
|
||||
|
||||
@@ -0,0 +1,383 @@
|
||||
let s:path = get(g:, 'theme_config_path', fnamemodify(
|
||||
\ resolve(expand('<sfile>:p')), ':h:h').'/theme_config.vim')
|
||||
|
||||
let s:themefixes = []
|
||||
|
||||
let s:bgType = has('termguicolors') ? 'guibg' : 'ctermbg'
|
||||
|
||||
" sometimes even in termguicolors, when guibg is not set, the bg will fall
|
||||
" back to use ctermbg, so we have to set them both to none
|
||||
let s:bgNonType = !has('termguicolors') ? 'guibg=NONE' : 'ctermbg=NONE'
|
||||
let s:transBlendOpt = has('nvim') ? ' blend=0' : ''
|
||||
|
||||
let s:default_config = {
|
||||
\ 'background': 'dark',
|
||||
\ 'light': {
|
||||
\ 'theme': 'sunbather_light',
|
||||
\ 'default': 'sunbather_light',
|
||||
\ 'transparent': v:false,
|
||||
\ 'airline_theme': 'sunbather_light',
|
||||
\ },
|
||||
\ 'dark': {
|
||||
\ 'theme': 'base16-harmonic-dark',
|
||||
\ 'default': 'base16-harmonic-dark',
|
||||
\ 'transparent': v:false,
|
||||
\ 'airline_theme': 'base16-harmonic-dark',
|
||||
\ },
|
||||
\ }
|
||||
|
||||
" When enable transparent background, these group will be set to transparent
|
||||
let s:transgroups = [
|
||||
\ 'Normal', 'NormalNC', 'Comment', 'Constant', 'Special', 'Identifier',
|
||||
\ 'Folded', 'Statusline', 'StatuslineNC',
|
||||
\ 'Statement', 'PreProc', 'Type', 'Underlined', 'String', 'Function',
|
||||
\ 'Conditional', 'Repeat', 'Operator', 'Structure', 'LineNr', 'NonText',
|
||||
\ 'SignColumn', 'CursorLineNr', 'EndOfBuffer', 'VertSplit',
|
||||
\ 'DiagnosticSignWarn', 'DiagnosticSignError', 'DiagnosticSignInfo',]
|
||||
|
||||
" background group that will be set to normal's background color
|
||||
let s:cleanbg = ['DiagnosticSignWarn', 'DiagnosticSignError', 'DiagnosticSignInfo',
|
||||
\ 'VertSplit', 'LineNr', 'SignColumn', 'NormalFloat']
|
||||
|
||||
let s:config = get(g:, 'theme_config', s:default_config)
|
||||
|
||||
function! theme#setConfig(bg, key, value)
|
||||
let s:config[a:bg][a:key] = a:value
|
||||
endfunction
|
||||
" register extra transparent hi group
|
||||
function! theme#getCleanBg()
|
||||
return s:cleanbg
|
||||
endfunction
|
||||
|
||||
function! theme#getBgType()
|
||||
return s:bgType
|
||||
endfunction
|
||||
|
||||
function! theme#getTransGroup()
|
||||
return s:transgroups
|
||||
endfunction
|
||||
|
||||
" register extra transparent hi group
|
||||
function theme#addCleanBg(group)
|
||||
let li = type(a:group) == 1 ? [a:group] : a:group
|
||||
for hi in li
|
||||
if index(s:cleanbg, hi) == -1
|
||||
call add(s:cleanbg, hi)
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
" register extra transparent hi group
|
||||
function theme#addTransGroup(group)
|
||||
let li = type(a:group) == 1 ? [a:group] : a:group
|
||||
for hi in li
|
||||
if index(s:transgroups, hi) == -1
|
||||
call add(s:transgroups, hi)
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! theme#setColor(bg, ...)
|
||||
let colors_name = a:0 > 0 ? a:1 : s:config[a:bg].theme
|
||||
if !utils#hascolorscheme(colors_name)
|
||||
let colors_name = 'default'
|
||||
endif
|
||||
noa let &bg = a:bg
|
||||
call theme#setStlColor(a:bg)
|
||||
let s:config.background = a:bg
|
||||
let s:config[a:bg].theme = colors_name
|
||||
noa execute("colorscheme " . colors_name)
|
||||
if &background != a:bg
|
||||
noa let &bg = a:bg
|
||||
endif
|
||||
" some theme will pick their own airline theme or airline will
|
||||
" automatically pick theme based on colorscheme
|
||||
if exists('g:airline_theme') && g:airline_theme != s:config[a:bg].airline_theme
|
||||
call theme#setStlColor(a:bg, g:airline_theme)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Change bottom airline/lualine theme
|
||||
function! theme#setStlColor(bg, ...)
|
||||
if has('nvim-0.5')
|
||||
" lualine will change theme automatically
|
||||
else
|
||||
if utils#hasplug('vim-airline') && exists(':AirlineTheme')
|
||||
let theme = a:0 > 0 ? a:1 : s:config[a:bg].airline_theme
|
||||
try
|
||||
execute('AirlineTheme ' . theme)
|
||||
catch
|
||||
let theme = s:default_config[a:bg].airline_theme
|
||||
execute('AirlineTheme ' . theme)
|
||||
endtry
|
||||
let s:config[a:bg].airline_theme = theme
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! theme#inTransparent()
|
||||
return s:config[&background].transparent
|
||||
endfunction
|
||||
|
||||
" return 1 if link to other group
|
||||
" return 2 if not exists
|
||||
" return 0 if normal
|
||||
function! s:hiType(group)
|
||||
try
|
||||
let hi = execute('hi '.a:group)
|
||||
if hi =~# 'link'
|
||||
return 2
|
||||
endif
|
||||
catch
|
||||
return 1
|
||||
endtry
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
function s:applyTransparent()
|
||||
let tail = ' ' . s:bgType . '=NONE term=NONE gui=NONE cterm=NONE '
|
||||
if has('nvim')
|
||||
let tail .= s:transBlendOpt
|
||||
else
|
||||
let tail .= s:bgNonType
|
||||
endif
|
||||
for group in s:transgroups
|
||||
if s:hiType(group) != 0
|
||||
continue
|
||||
endif
|
||||
" cterm and term sometimes are set to reverse so we need to clean them
|
||||
" too
|
||||
" for the last part, we can't clear all terms or it will fall back to
|
||||
" default which is not transparent
|
||||
execute('hi! '.group . tail)
|
||||
endfor
|
||||
call s:generalThemeFix()
|
||||
" for group in s:cleanbg
|
||||
" if s:hiType(group) != 0
|
||||
" continue
|
||||
" endif
|
||||
" execute('hi! '.group . tail)
|
||||
" endfor
|
||||
endfunction
|
||||
|
||||
" some callback function to enable transparent background
|
||||
" for specific colorscheme
|
||||
|
||||
" or general callback for all colorscheme when specific colorscheme callback
|
||||
" is not available
|
||||
" g:dark_transparent_enable_cb
|
||||
" g:light_transparent_enable_cb
|
||||
|
||||
function! theme#enableTransparent() abort
|
||||
let colorscheme_name = utils#colorschemename()
|
||||
let bg = &background
|
||||
if exists('g:'.bg.'_transparent_enable_cb') && g:dark_transparent_enable_cb != ''
|
||||
let cb_name = get(g:, bg.'_transparent_enable_cb', '')
|
||||
if cb_name != ''
|
||||
execute('call '.cb_name.'()')
|
||||
endif
|
||||
elseif exists('g:Transparent_enable_func')
|
||||
if type(g:Transparent_enable_func) != v:t_func
|
||||
echoerr 'g:Transparent_enable_func is not a function'
|
||||
endif
|
||||
call g:Transparent_enable_func()
|
||||
else
|
||||
call s:applyTransparent()
|
||||
augroup SetTransparent
|
||||
autocmd!
|
||||
autocmd ColorScheme * call s:applyTransparent()
|
||||
augroup END
|
||||
endif
|
||||
let s:config[bg].transparent = v:true
|
||||
endfunction
|
||||
|
||||
function! theme#disableTransparent() abort
|
||||
augroup SetTransparent
|
||||
autocmd!
|
||||
augroup END
|
||||
let bg = &background
|
||||
let s:config[bg].transparent = v:false
|
||||
let colorscheme_name = utils#colorschemename()
|
||||
if exists('g:'.bg.'_transparent_disable_cb')
|
||||
let cb_name = get(g:, bg.'_transparent_disable_cb', '')
|
||||
if cb_name != ''
|
||||
execute('call '.cb_name.'()')
|
||||
endif
|
||||
elseif exists('g:Transparent_disable_func')
|
||||
if type(g:Transparent_disable_func) != v:t_func
|
||||
echoerr 'g:Transparent_disable_func is not a function'
|
||||
endif
|
||||
call g:Transparent_disable_func()
|
||||
else
|
||||
execute('colorscheme ' . s:config[bg].theme)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" ToggleTransparent background
|
||||
function! theme#toggleTransparent()
|
||||
if s:config[&background].transparent
|
||||
call theme#disableTransparent()
|
||||
else
|
||||
call theme#enableTransparent()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Allow to trigger background
|
||||
function! theme#toggleBg()
|
||||
" Inversion
|
||||
let newbg = &background == "dark" ? 'light' : 'dark'
|
||||
call theme#setColor(newbg)
|
||||
if s:config[&background].transparent
|
||||
call theme#enableTransparent()
|
||||
elseif !s:config[&background].transparent
|
||||
call theme#disableTransparent()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! theme#saveConfig()
|
||||
let p = utils#readvar(s:path)
|
||||
if type(p) != type({})
|
||||
let p = {}
|
||||
endif
|
||||
|
||||
let vim_type = has('nvim') ? 'nvim' : 'vim'
|
||||
|
||||
let config = has_key(p, vim_type) && type(p[vim_type]) == 4
|
||||
\ ? p[vim_type] : {}
|
||||
|
||||
let config = utils#merge(config, s:config)
|
||||
|
||||
" vim and nvim may have diferenrt available plugins
|
||||
let p[vim_type] = config
|
||||
call utils#savevar(p, s:path)
|
||||
endfunction
|
||||
|
||||
function! theme#loadConfig()
|
||||
let result = utils#readvar(s:path)
|
||||
" if it is dictionary
|
||||
let vim_type = has('nvim') ? 'nvim' : 'vim'
|
||||
if type(result) == 4
|
||||
if has_key(result, vim_type)
|
||||
let config = result[vim_type]
|
||||
if type(config) == 4
|
||||
return config
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
return {}
|
||||
endfunction
|
||||
|
||||
function! theme#getHiTerms(group)
|
||||
let output = execute('hi ' . a:group)
|
||||
if stridx(output, 'links to') > 0
|
||||
let higroup = matchstr(output, 'links.to.\?\zs\S\+\ze')
|
||||
return theme#getHiTerms(higroup)
|
||||
endif
|
||||
let list = split(output, '')
|
||||
let dict = {}
|
||||
|
||||
for item in list
|
||||
if stridx(item, '=') > 0
|
||||
let splited = split(item, '=')
|
||||
let dict[splited[0]] = splited[1]
|
||||
endif
|
||||
endfor
|
||||
|
||||
for item in ['guibg', 'ctermbg', 'term', 'cterm', 'guifg', 'ctermfg']
|
||||
if ! has_key(dict, item)
|
||||
let dict[item] = 'NONE'
|
||||
endif
|
||||
endfor
|
||||
return dict
|
||||
endfunction
|
||||
|
||||
function! theme#getHiTerm(group, term)
|
||||
" Store output of group to variable
|
||||
let output = theme#getHiTerms(a:group)
|
||||
return output[a:term]
|
||||
endfunction
|
||||
|
||||
function! s:regiesterThemeFix(Func)
|
||||
call add(s:theme_fix, a:Func)
|
||||
endfunction
|
||||
|
||||
function! s:generalThemeFix()
|
||||
" The following is for getting rid of the vim split bar and match its
|
||||
" and number cols' color with backgroud
|
||||
" if theme#inTransparent()
|
||||
" return
|
||||
" endif
|
||||
if &bg != s:config.background
|
||||
execute('set bg=' . s:config.background)
|
||||
endif
|
||||
|
||||
let normal = theme#getHiTerms('normal')
|
||||
let hiTerms = ' '
|
||||
for term in ['guibg', 'ctermbg', 'term', 'cterm']
|
||||
let hiTerms .= term . '=' . normal[term] . ' '
|
||||
endfor
|
||||
|
||||
for group in s:cleanbg
|
||||
" if s:hiType(group) != 0
|
||||
" continue
|
||||
" endif
|
||||
" transBlendOpt is used to prevent hi from being clear
|
||||
execute('hi! ' . group . hiTerms)
|
||||
endfor
|
||||
|
||||
" highlight cursorline number only
|
||||
" this needs option set cursorlineopt=number
|
||||
if s:hiType('CursorLineNr') == 0
|
||||
hi! CursorLineNr guibg=NONE ctermbg=NONE cterm=bold gui=bold
|
||||
endif
|
||||
|
||||
for Func in s:themefixes
|
||||
call Func()
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! theme#Init()
|
||||
if has('termguicolors')
|
||||
set termguicolors
|
||||
endif
|
||||
|
||||
if has('nvim')
|
||||
set fillchars+=stl:\ ,stlnc:\ ,
|
||||
endif
|
||||
|
||||
let s:config = utils#merge(s:default_config, theme#loadConfig())
|
||||
|
||||
let bg = s:config.background
|
||||
if utils#hascolorscheme(s:config[bg].theme)
|
||||
call theme#setColor(bg)
|
||||
else
|
||||
call theme#setColor(bg, s:config[bg].default)
|
||||
endif
|
||||
|
||||
if s:config[bg].transparent
|
||||
call theme#enableTransparent()
|
||||
else
|
||||
call theme#disableTransparent()
|
||||
endif
|
||||
call s:generalThemeFix()
|
||||
|
||||
if exists('*options#add')
|
||||
let toggle_transparent = { 'desc' : 'Toggle transparent background' }
|
||||
func toggle_transparent.togglefunc(...)
|
||||
call theme#toggleTransparent()
|
||||
endfunc
|
||||
call options#add('toggle_transparent', toggle_transparent)
|
||||
endif
|
||||
|
||||
augroup GeneralTheme
|
||||
autocmd!
|
||||
autocmd ColorScheme * call s:generalThemeFix()
|
||||
autocmd ColorScheme * let s:config.background = &bg | call theme#setColor(&bg, expand('<amatch>'))
|
||||
autocmd VimLeave * call theme#saveConfig()
|
||||
augroup END
|
||||
|
||||
endfunction
|
||||
|
||||
function! theme#getConfig()
|
||||
return s:config
|
||||
endfunction
|
||||
@@ -0,0 +1,194 @@
|
||||
|
||||
" return a python version available (from 3 to 2)
|
||||
fun! utils#get_usable_py()
|
||||
let py = ''
|
||||
if executable('python3')
|
||||
let py = 'python3'
|
||||
elseif executable('python2')
|
||||
let py = 'python2'
|
||||
elseif executable('python')
|
||||
let py = 'python'
|
||||
endif
|
||||
return py
|
||||
endfun
|
||||
|
||||
" Check if plugin exists
|
||||
function! utils#hasplug(plug_name, ...)
|
||||
let plug_dir_name = get(a:, 1, a:plug_name) " optional argument for the name of plug's folder
|
||||
if has_key(g:plugs, a:plug_name) && isdirectory(g:plugin_dir . "/" . plug_dir_name)
|
||||
if has_key(g:plugs[a:plug_name], 'for') || has_key(g:plugs[a:plug_name], 'on')
|
||||
if (has_key(g:plugs[a:plug_name], 'for') && len(g:plugs[a:plug_name]['for']) == 0) ||
|
||||
\ (has_key(g:plugs[a:plug_name], 'on') && len(g:plugs[a:plug_name]['on']) == 0)
|
||||
return v:false
|
||||
endif
|
||||
endif
|
||||
return v:true
|
||||
endif
|
||||
return v:false
|
||||
endfunction
|
||||
|
||||
" This function is used to save a variable to a file
|
||||
function! utils#savevar(var, file)
|
||||
let serialized = string(a:var)
|
||||
call writefile([serialized], a:file)
|
||||
endfun
|
||||
|
||||
" This function is used to retrieve a variable from a file
|
||||
" only first line is count
|
||||
function! utils#readvar(file)
|
||||
if !filereadable(a:file)
|
||||
return v:null
|
||||
endif
|
||||
let serialized = readfile(a:file)
|
||||
if(len(serialized) == 0)
|
||||
return v:null
|
||||
endif
|
||||
execute "let result = " . serialized[0]
|
||||
return result
|
||||
endfun
|
||||
|
||||
" Merge two dictionaries, also recursively merging nested keys.
|
||||
" Use extend() if you don't need to merge nested keys.
|
||||
fun! utils#merge(defaults, override)
|
||||
let l:new = copy(a:defaults)
|
||||
for [l:k, l:v] in items(a:override)
|
||||
let l:new[l:k] = (type(l:v) is v:t_dict && type(get(l:new, l:k)) is v:t_dict)
|
||||
\ ? utils#merge(l:new[l:k], l:v)
|
||||
\ : l:v
|
||||
endfor
|
||||
return l:new
|
||||
endfun
|
||||
|
||||
"Remove all trailing whitespace by pressing <leader>ws
|
||||
fun! utils#trimwhitespace()
|
||||
let l:save = winsaveview()
|
||||
keeppatterns %s/\s*\r\=$//e
|
||||
call winrestview(l:save)
|
||||
endfun
|
||||
|
||||
function! utils#hascolorscheme(name)
|
||||
let scheme = a:name
|
||||
let colors = globpath(&runtimepath, printf('colors/%s.vim', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/start/*/colors/%s.vim', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/opt/*/colors/%s.vim', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
if has('nvim')
|
||||
let colors = globpath(&runtimepath, printf('colors/%s.lua', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/start/*/colors/%s.lua', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/opt/*/colors/%s.lua', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
endif
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
" get current colorscheme name
|
||||
" return default if not found
|
||||
function! utils#colorschemename()
|
||||
return execute('colo')[1:]
|
||||
try
|
||||
return g:colors_name
|
||||
catch /^Vim:E121/
|
||||
return "default"
|
||||
catch /.*/
|
||||
return "default"
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" debug function print out highlight group of cursor position
|
||||
function! utils#showHiGroup(...)
|
||||
if !exists("*synstack")
|
||||
return
|
||||
endif
|
||||
let l = a:0 == 2 ? a:1 : line('.')
|
||||
let c = a:0 == 2 ? a:2 : col('.')
|
||||
echo map(synstack(l, c), 'synIDattr(v:val, "name")')
|
||||
|
||||
:echo "hi<" . synIDattr(synID(l,c,1),"name") . '> trans<'
|
||||
\ . synIDattr(synID(l,c,0),"name") . "> lo<"
|
||||
\ . synIDattr(synIDtrans(synID(l,c,1)),"name") . ">"
|
||||
|
||||
endfunc
|
||||
|
||||
" get highlight group information and return as dictionary
|
||||
function! utils#getHi(group)
|
||||
let output = execute('hi ' . a:group)
|
||||
let list = split(output, '\s\+')
|
||||
let dict = {}
|
||||
for item in list
|
||||
if match(item, '=') > 0
|
||||
let splited = split(item, '=')
|
||||
let dict[splited[0]] = splited[1]
|
||||
endif
|
||||
endfor
|
||||
return dict
|
||||
endfunction
|
||||
|
||||
function! utils#isTransparent()
|
||||
let dict = utils#getHi('Normal')
|
||||
let isGui = &termguicolors
|
||||
if isGui
|
||||
if !has_key(dict, 'guibg')
|
||||
return 1
|
||||
endif
|
||||
elseif !isGui
|
||||
if !has_key(dict, 'ctermfg')
|
||||
return 1
|
||||
endif
|
||||
endif
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
function! s:scratch()
|
||||
split
|
||||
noswapfile hide enew
|
||||
setlocal buftype=nofile
|
||||
setlocal bufhidden=hide
|
||||
setlocal nobuflisted
|
||||
endfunction
|
||||
|
||||
" search highlight group with pattern
|
||||
function! utils#searchHi(pattern)
|
||||
execute("filter /" . a:pattern . "/ highlight")
|
||||
" color not working
|
||||
" let temp_reg = @"
|
||||
" redir @"
|
||||
" silent! execute("filter /" . a:pattern . "/ highlight")
|
||||
" redir END
|
||||
" let output = copy(@")
|
||||
" let @" = temp_reg
|
||||
" call s:scratch()
|
||||
" put! =output
|
||||
endfunc
|
||||
|
||||
function! utils#swapword()
|
||||
let word = expand("<cword>")
|
||||
let l1 = g:swap_dict[0]
|
||||
let l2 = g:swap_dict[1]
|
||||
let inx = index(l1, word)
|
||||
if inx != -1
|
||||
let newword = l2[inx]
|
||||
else
|
||||
let inx = index(l2, word)
|
||||
if inx != -1
|
||||
let newword = l1[inx]
|
||||
endif
|
||||
endif
|
||||
if inx != -1
|
||||
execute "normal ciw" . newword . "\<Esc>"
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! utils#files(...)
|
||||
if a:0 > 0
|
||||
let path = a:1
|
||||
else
|
||||
let path = getcwd()
|
||||
endif
|
||||
let files = glob(path . '/**', 1, 1, 1)
|
||||
return files
|
||||
endfunction
|
||||
|
||||
Executable
+98
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
""" preview.py theme arg
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
class bcolors:
|
||||
HEADER = '\033[95m'
|
||||
OKBLUE = '\033[94m'
|
||||
OKCYAN = '\033[96m'
|
||||
OKGREEN = '\033[92m'
|
||||
WARNING = '\033[93m'
|
||||
RED = '\033[31m'
|
||||
YELLOW = '\033[33m'
|
||||
FAIL = '\033[91m'
|
||||
ENDC = '\033[0m'
|
||||
BOLD = '\033[1m'
|
||||
UNDERLINE = '\033[4m'
|
||||
|
||||
def is_tool(name):
|
||||
"""Check whether `name` is on PATH and marked as executable."""
|
||||
from shutil import which
|
||||
return which(name) is not None
|
||||
|
||||
def get_preview_tool():
|
||||
exec = None
|
||||
if is_tool('bat'):
|
||||
exec = 'bat'
|
||||
elif is_tool('batcat'):
|
||||
exec = 'batcat'
|
||||
elif is_tool('cat'):
|
||||
exec = 'cat'
|
||||
return exec
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
theme = sys.argv[1]
|
||||
if theme == 'light':
|
||||
theme = 'ansi'
|
||||
tcolor = '31'
|
||||
color = bcolors.RED
|
||||
else:
|
||||
theme = '1337'
|
||||
tcolor = '33'
|
||||
color = bcolors.YELLOW
|
||||
|
||||
filepath = ''.join(sys.argv[2:])
|
||||
args = filepath.split(":")
|
||||
args += [None, None]
|
||||
|
||||
file = args[0]
|
||||
center = args[1]
|
||||
# print(sys.argv[2:])
|
||||
# exit(0)
|
||||
# if os.name == 'nt':
|
||||
# file += args[1]
|
||||
# center = args[2]
|
||||
|
||||
if file == None or not os.path.isfile(file):
|
||||
print("File not found {}".format(file))
|
||||
exit(0)
|
||||
|
||||
if center is None: center = 0
|
||||
|
||||
batcmd = get_preview_tool()
|
||||
cmdstr = None
|
||||
|
||||
if file[0] == '-':
|
||||
file = './' + file
|
||||
if batcmd:
|
||||
if batcmd == 'cat':
|
||||
if center:
|
||||
cmdstr = 'cat -n {} | perl -pe "s/^.*?\s{}\s.*?$/\e[1;{}m$&\e[0m/g"'.format(file, center, tcolor)
|
||||
else:
|
||||
cmdstr = 'cat -n {}'.format(file)
|
||||
elif batcmd == 'bat':
|
||||
cmdstr = 'bat --theme={} --style=numbers --color=always \
|
||||
--pager=never --highlight-line={} "{}"'.format(theme, center, file)
|
||||
if cmdstr:
|
||||
os.system(cmdstr)
|
||||
else:
|
||||
f = open(file, 'r')
|
||||
Lines = f.readlines()
|
||||
center = int(center)
|
||||
linenr = 1
|
||||
|
||||
for line in Lines:
|
||||
if linenr == center:
|
||||
print("{}{:4d} {}{}".format(color, linenr, line, bcolors.ENDC), end='')
|
||||
else:
|
||||
print("{:4d} {}".format(linenr, line), end='')
|
||||
linenr += 1
|
||||
f.close()
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
" Name: sunbather.vim
|
||||
" Version: 0.1.0
|
||||
" Maintainer: github.com/nikolvs
|
||||
" License: The MIT License (MIT)
|
||||
"
|
||||
" A minimal pink colorscheme for Vim.
|
||||
"
|
||||
" Forked from paramount:
|
||||
" https://github.com/owickstrom/vim-colors-paramount
|
||||
"
|
||||
"""
|
||||
hi clear
|
||||
|
||||
if exists('syntax on')
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
let g:colors_name='sunbather_dark'
|
||||
|
||||
let s:black = { "gui": "#000000", "cterm": "232" }
|
||||
let s:medium_gray = { "gui": "#767676", "cterm": "243" }
|
||||
let s:white = { "gui": "#F1F1F1", "cterm": "15" }
|
||||
let s:actual_white = { "gui": "#FFFFFF", "cterm": "231" }
|
||||
let s:subtle_black = { "gui": "#121212", "cterm": "233" }
|
||||
let s:light_black = { "gui": "#262626", "cterm": "235" }
|
||||
let s:lighter_black = { "gui": "#4E4E4E", "cterm": "239" }
|
||||
let s:light_gray = { "gui": "#A8A8A8", "cterm": "248" }
|
||||
let s:lighter_gray = { "gui": "#C6C6C6", "cterm": "251" }
|
||||
let s:lightest_gray = { "gui": "#EEEEEE", "cterm": "255" }
|
||||
let s:dark_pink = { "gui": "#ff5f87", "cterm": "204" }
|
||||
let s:light_pink = { "gui": "#d75f87", "cterm": "168" }
|
||||
let s:dark_red = { "gui": "#C30771", "cterm": "1" }
|
||||
let s:light_red = { "gui": "#E32791", "cterm": "1" }
|
||||
let s:orange = { "gui": "#D75F5F", "cterm": "167" }
|
||||
let s:darker_blue = { "gui": "#005F87", "cterm": "18" }
|
||||
let s:dark_blue = { "gui": "#008EC4", "cterm": "32" }
|
||||
let s:blue = { "gui": "#20BBFC", "cterm": "12" }
|
||||
let s:light_blue = { "gui": "#b6d6fd", "cterm": "153" }
|
||||
let s:dark_cyan = { "gui": "#20A5BA", "cterm": "6" }
|
||||
let s:light_cyan = { "gui": "#4FB8CC", "cterm": "14" }
|
||||
let s:dark_green = { "gui": "#10A778", "cterm": "2" }
|
||||
let s:light_green = { "gui": "#5FD7A7", "cterm": "10" }
|
||||
let s:light_purple = { "gui": "#a790d5", "cterm": "140" }
|
||||
let s:yellow = { "gui": "#F3E430", "cterm": "11" }
|
||||
let s:light_yellow = { "gui": "#ffff87", "cterm": "228" }
|
||||
let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" }
|
||||
|
||||
let s:background = 'dark'
|
||||
|
||||
let s:bg = s:black
|
||||
let s:bg_subtle = s:lighter_black
|
||||
let s:bg_very_subtle = s:subtle_black
|
||||
let s:norm = s:lighter_gray
|
||||
let s:norm_subtle = s:medium_gray
|
||||
let s:pink = s:light_pink
|
||||
let s:cyan = s:light_cyan
|
||||
let s:green = s:light_green
|
||||
let s:red = s:light_red
|
||||
let s:visual = s:light_pink
|
||||
let s:yellow = s:light_yellow
|
||||
|
||||
" https://github.com/noahfrederick/vim-hemisu/
|
||||
function! s:h(group, style)
|
||||
execute "highlight" a:group
|
||||
\ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE")
|
||||
\ "guibg=" (has_key(a:style, "bg") ? a:style.bg.gui : "NONE")
|
||||
\ "guisp=" (has_key(a:style, "sp") ? a:style.sp.gui : "NONE")
|
||||
\ "gui=" (has_key(a:style, "gui") ? a:style.gui : "NONE")
|
||||
\ "ctermfg=" (has_key(a:style, "fg") ? a:style.fg.cterm : "NONE")
|
||||
\ "ctermbg=" (has_key(a:style, "bg") ? a:style.bg.cterm : "NONE")
|
||||
\ "cterm=" (has_key(a:style, "cterm") ? a:style.cterm : "NONE")
|
||||
endfunction
|
||||
|
||||
call s:h("Normal", {"bg": s:bg, "fg": s:norm})
|
||||
|
||||
" restore &background's value in case changing Normal changed &background (:help :hi-normal-cterm)
|
||||
execute "set background=" . s:background
|
||||
|
||||
call s:h("Cursor", {"bg": s:pink, "fg": s:norm })
|
||||
call s:h("Comment", {"fg": s:bg_subtle, "gui": "italic"})
|
||||
|
||||
call s:h("Constant", {"fg": s:pink})
|
||||
hi! link Character Constant
|
||||
hi! link Number Constant
|
||||
hi! link Boolean Constant
|
||||
hi! link Float Constant
|
||||
hi! link String Constant
|
||||
|
||||
"call s:h("Identifier", {"fg": s:dark_blue})
|
||||
hi! link Identifier Normal
|
||||
hi! link Function Identifier
|
||||
|
||||
call s:h("Statement", {"fg": s:norm_subtle})
|
||||
hi! link Conditonal Statement
|
||||
hi! link Repeat Statement
|
||||
hi! link Label Statement
|
||||
hi! link Keyword Statement
|
||||
hi! link Exception Statement
|
||||
|
||||
call s:h("Operator", {"fg": s:norm, "cterm": "bold", "gui": "bold"})
|
||||
|
||||
call s:h("PreProc", {"fg": s:norm_subtle})
|
||||
hi! link Include PreProc
|
||||
hi! link Define PreProc
|
||||
hi! link Macro PreProc
|
||||
hi! link PreCondit PreProc
|
||||
|
||||
call s:h("Type", {"fg": s:norm})
|
||||
hi! link StorageClass Type
|
||||
hi! link Structure Type
|
||||
hi! link Typedef Type
|
||||
|
||||
call s:h("Special", {"fg": s:norm_subtle, "gui": "italic"})
|
||||
hi! link SpecialChar Special
|
||||
hi! link Tag Special
|
||||
hi! link Delimiter Special
|
||||
hi! link SpecialComment Special
|
||||
hi! link Debug Special
|
||||
|
||||
call s:h("Underlined", {"fg": s:norm, "gui": "underline", "cterm": "underline"})
|
||||
call s:h("Ignore", {"fg": s:bg})
|
||||
call s:h("Error", {"fg": s:actual_white, "bg": s:red, "cterm": "bold"})
|
||||
call s:h("Todo", {"fg": s:pink, "gui": "underline", "cterm": "underline"})
|
||||
call s:h("SpecialKey", {"fg": s:light_green})
|
||||
call s:h("NonText", {"fg": s:medium_gray})
|
||||
call s:h("Directory", {"fg": s:dark_blue})
|
||||
call s:h("ErrorMsg", {"fg": s:red})
|
||||
call s:h("IncSearch", {"bg": s:yellow, "fg": s:light_black})
|
||||
call s:h("Search", {"bg": s:light_green, "fg": s:light_black})
|
||||
call s:h("MoreMsg", {"fg": s:medium_gray, "cterm": "bold", "gui": "bold"})
|
||||
hi! link ModeMsg MoreMsg
|
||||
call s:h("LineNr", {"fg": s:bg_subtle})
|
||||
call s:h("CursorLineNr", {"fg": s:pink, "bg": s:bg_very_subtle})
|
||||
call s:h("Question", {"fg": s:red})
|
||||
call s:h("StatusLine", {"bg": s:bg_very_subtle})
|
||||
call s:h("StatusLineNC", {"bg": s:bg_very_subtle, "fg": s:medium_gray})
|
||||
call s:h("VertSplit", {"bg": s:bg_very_subtle, "fg": s:bg_very_subtle})
|
||||
call s:h("Title", {"fg": s:dark_blue})
|
||||
call s:h("Visual", {"fg": s:norm, "bg": s:visual})
|
||||
call s:h("VisualNOS", {"bg": s:bg_subtle})
|
||||
call s:h("WarningMsg", {"fg": s:yellow})
|
||||
call s:h("WildMenu", {"fg": s:bg, "bg": s:norm})
|
||||
call s:h("Folded", {"fg": s:medium_gray})
|
||||
call s:h("FoldColumn", {"fg": s:bg_subtle})
|
||||
call s:h("DiffAdd", {"fg": s:green})
|
||||
call s:h("DiffDelete", {"fg": s:red})
|
||||
call s:h("DiffChange", {"fg": s:dark_yellow})
|
||||
call s:h("DiffText", {"fg": s:dark_blue})
|
||||
call s:h("SignColumn", {"fg": s:light_green})
|
||||
|
||||
|
||||
if has("gui_running")
|
||||
call s:h("SpellBad", {"gui": "underline", "sp": s:red})
|
||||
call s:h("SpellCap", {"gui": "underline", "sp": s:light_green})
|
||||
call s:h("SpellRare", {"gui": "underline", "sp": s:light_purple})
|
||||
call s:h("SpellLocal", {"gui": "underline", "sp": s:dark_green})
|
||||
else
|
||||
call s:h("SpellBad", {"cterm": "underline", "fg": s:red})
|
||||
call s:h("SpellCap", {"cterm": "underline", "fg": s:light_green})
|
||||
call s:h("SpellRare", {"cterm": "underline", "fg": s:light_purple})
|
||||
call s:h("SpellLocal", {"cterm": "underline", "fg": s:dark_green})
|
||||
endif
|
||||
|
||||
call s:h("Pmenu", {"fg": s:norm, "bg": s:bg_very_subtle})
|
||||
call s:h("PmenuSel", {"fg": s:subtle_black, "bg": s:pink})
|
||||
call s:h("PmenuSbar", {"fg": s:norm, "bg": s:bg_subtle})
|
||||
call s:h("PmenuThumb", {"fg": s:norm, "bg": s:bg_subtle})
|
||||
call s:h("TabLine", {"fg": s:norm, "bg": s:bg_very_subtle})
|
||||
call s:h("TabLineSel", {"fg": s:subtle_black, "bg": s:pink, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("TabLineFill", {"fg": s:norm, "bg": s:bg_very_subtle})
|
||||
call s:h("CursorColumn", {"bg": s:bg_very_subtle})
|
||||
call s:h("CursorLine", {"bg": s:bg_very_subtle})
|
||||
call s:h("ColorColumn", {"bg": s:bg_subtle})
|
||||
|
||||
call s:h("MatchParen", {"bg": s:bg_subtle, "fg": s:norm})
|
||||
call s:h("qfLineNr", {"fg": s:medium_gray})
|
||||
|
||||
call s:h("htmlH1", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH2", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH3", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH4", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH5", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH6", {"bg": s:bg, "fg": s:norm})
|
||||
|
||||
" Syntastic
|
||||
call s:h("SyntasticWarningSign", {"fg": s:yellow})
|
||||
call s:h("SyntasticWarning", {"bg": s:yellow, "fg": s:black, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("SyntasticErrorSign", {"fg": s:red})
|
||||
call s:h("SyntasticError", {"bg": s:red, "fg": s:white, "gui": "bold", "cterm": "bold"})
|
||||
|
||||
" which-key.nvim
|
||||
call s:h("WhichKey", {"bg": s:bg, "fg": s:pink, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("WhichKeyDesc", {"bg": s:bg, "fg": s:norm_subtle, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("WhichKeySeparator", {"bg": s:bg, "fg": s:norm, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("WhichKeyFloat", {"bg": s:bg})
|
||||
|
||||
hi link WhichKeyGroup WhichKey
|
||||
|
||||
" Neomake
|
||||
hi link NeomakeWarningSign SyntasticWarningSign
|
||||
hi link NeomakeErrorSign SyntasticErrorSign
|
||||
|
||||
" ALE
|
||||
hi link ALEWarningSign SyntasticWarningSign
|
||||
hi link ALEErrorSign SyntasticErrorSign
|
||||
|
||||
" Signify, git-gutter
|
||||
hi link SignifySignAdd LineNr
|
||||
hi link SignifySignDelete LineNr
|
||||
hi link SignifySignChange LineNr
|
||||
hi link GitGutterAdd LineNr
|
||||
hi link GitGutterDelete LineNr
|
||||
hi link GitGutterChange LineNr
|
||||
hi link GitGutterChangeDelete LineNr
|
||||
@@ -0,0 +1,214 @@
|
||||
" Name: sunbather.vim
|
||||
" Version: 0.1.0
|
||||
" Maintainer: github.com/nikolvs
|
||||
" License: The MIT License (MIT)
|
||||
"
|
||||
" A minimal pink colorscheme for Vim.
|
||||
"
|
||||
" Forked from paramount:
|
||||
" https://github.com/owickstrom/vim-colors-paramount
|
||||
"
|
||||
"""
|
||||
hi clear
|
||||
|
||||
if exists('syntax on')
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
let g:colors_name='sunbather_light'
|
||||
|
||||
let s:black = { "gui": "#000000", "cterm": "232" }
|
||||
let s:medium_gray = { "gui": "#767676", "cterm": "243" }
|
||||
let s:white = { "gui": "#F1F1F1", "cterm": "15" }
|
||||
let s:actual_white = { "gui": "#FFFFFF", "cterm": "231" }
|
||||
let s:subtle_black = { "gui": "#121212", "cterm": "233" }
|
||||
let s:light_black = { "gui": "#262626", "cterm": "235" }
|
||||
let s:lighter_black = { "gui": "#4E4E4E", "cterm": "239" }
|
||||
let s:light_gray = { "gui": "#A8A8A8", "cterm": "248" }
|
||||
let s:lighter_gray = { "gui": "#C6C6C6", "cterm": "251" }
|
||||
let s:lightest_gray = { "gui": "#EEEEEE", "cterm": "255" }
|
||||
let s:dark_pink = { "gui": "#ff5f87", "cterm": "204" }
|
||||
let s:light_pink = { "gui": "#d75f87", "cterm": "168" }
|
||||
let s:dark_red = { "gui": "#C30771", "cterm": "1" }
|
||||
let s:light_red = { "gui": "#E32791", "cterm": "1" }
|
||||
let s:orange = { "gui": "#D75F5F", "cterm": "167" }
|
||||
let s:darker_blue = { "gui": "#005F87", "cterm": "18" }
|
||||
let s:dark_blue = { "gui": "#008EC4", "cterm": "32" }
|
||||
let s:blue = { "gui": "#20BBFC", "cterm": "12" }
|
||||
let s:light_blue = { "gui": "#b6d6fd", "cterm": "153" }
|
||||
let s:dark_cyan = { "gui": "#20A5BA", "cterm": "6" }
|
||||
let s:light_cyan = { "gui": "#4FB8CC", "cterm": "14" }
|
||||
let s:dark_green = { "gui": "#10A778", "cterm": "2" }
|
||||
let s:light_green = { "gui": "#5FD7A7", "cterm": "10" }
|
||||
let s:light_purple = { "gui": "#a790d5", "cterm": "140" }
|
||||
let s:yellow = { "gui": "#F3E430", "cterm": "11" }
|
||||
let s:light_yellow = { "gui": "#ffff87", "cterm": "228" }
|
||||
let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" }
|
||||
|
||||
let s:background = 'light'
|
||||
|
||||
let s:bg = s:actual_white
|
||||
let s:bg_subtle = s:light_gray
|
||||
let s:bg_very_subtle = s:lightest_gray
|
||||
let s:norm = s:light_black
|
||||
let s:norm_subtle = s:medium_gray
|
||||
let s:pink = s:dark_pink
|
||||
let s:cyan = s:dark_cyan
|
||||
let s:green = s:dark_green
|
||||
let s:red = s:dark_red
|
||||
let s:visual = s:dark_pink
|
||||
let s:yellow = s:dark_yellow
|
||||
|
||||
" https://github.com/noahfrederick/vim-hemisu/
|
||||
function! s:h(group, style)
|
||||
execute "highlight" a:group
|
||||
\ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE")
|
||||
\ "guibg=" (has_key(a:style, "bg") ? a:style.bg.gui : "NONE")
|
||||
\ "guisp=" (has_key(a:style, "sp") ? a:style.sp.gui : "NONE")
|
||||
\ "gui=" (has_key(a:style, "gui") ? a:style.gui : "NONE")
|
||||
\ "ctermfg=" (has_key(a:style, "fg") ? a:style.fg.cterm : "NONE")
|
||||
\ "ctermbg=" (has_key(a:style, "bg") ? a:style.bg.cterm : "NONE")
|
||||
\ "cterm=" (has_key(a:style, "cterm") ? a:style.cterm : "NONE")
|
||||
endfunction
|
||||
|
||||
call s:h("Normal", {"bg": s:bg, "fg": s:norm})
|
||||
|
||||
" restore &background's value in case changing Normal changed &background (:help :hi-normal-cterm)
|
||||
execute "set background=" . s:background
|
||||
|
||||
call s:h("Cursor", {"bg": s:pink, "fg": s:norm })
|
||||
call s:h("Comment", {"fg": s:bg_subtle, "gui": "italic"})
|
||||
|
||||
call s:h("Constant", {"fg": s:pink})
|
||||
hi! link Character Constant
|
||||
hi! link Number Constant
|
||||
hi! link Boolean Constant
|
||||
hi! link Float Constant
|
||||
hi! link String Constant
|
||||
|
||||
"call s:h("Identifier", {"fg": s:dark_blue})
|
||||
hi! link Identifier Normal
|
||||
hi! link Function Identifier
|
||||
|
||||
call s:h("Statement", {"fg": s:norm_subtle})
|
||||
hi! link Conditonal Statement
|
||||
hi! link Repeat Statement
|
||||
hi! link Label Statement
|
||||
hi! link Keyword Statement
|
||||
hi! link Exception Statement
|
||||
|
||||
call s:h("Operator", {"fg": s:norm, "cterm": "bold", "gui": "bold"})
|
||||
|
||||
call s:h("PreProc", {"fg": s:norm_subtle})
|
||||
hi! link Include PreProc
|
||||
hi! link Define PreProc
|
||||
hi! link Macro PreProc
|
||||
hi! link PreCondit PreProc
|
||||
|
||||
call s:h("Type", {"fg": s:norm})
|
||||
hi! link StorageClass Type
|
||||
hi! link Structure Type
|
||||
hi! link Typedef Type
|
||||
|
||||
call s:h("Special", {"fg": s:norm_subtle, "gui": "italic"})
|
||||
hi! link SpecialChar Special
|
||||
hi! link Tag Special
|
||||
hi! link Delimiter Special
|
||||
hi! link SpecialComment Special
|
||||
hi! link Debug Special
|
||||
|
||||
call s:h("Underlined", {"fg": s:norm, "gui": "underline", "cterm": "underline"})
|
||||
call s:h("Ignore", {"fg": s:bg})
|
||||
call s:h("Error", {"fg": s:actual_white, "bg": s:red, "cterm": "bold"})
|
||||
call s:h("Todo", {"fg": s:pink, "gui": "underline", "cterm": "underline"})
|
||||
call s:h("SpecialKey", {"fg": s:light_green})
|
||||
call s:h("NonText", {"fg": s:medium_gray})
|
||||
call s:h("Directory", {"fg": s:dark_blue})
|
||||
call s:h("ErrorMsg", {"fg": s:red})
|
||||
call s:h("IncSearch", {"bg": s:yellow, "fg": s:light_black})
|
||||
call s:h("Search", {"bg": s:light_green, "fg": s:light_black})
|
||||
call s:h("MoreMsg", {"fg": s:medium_gray, "cterm": "bold", "gui": "bold"})
|
||||
hi! link ModeMsg MoreMsg
|
||||
call s:h("LineNr", {"fg": s:bg_subtle})
|
||||
call s:h("CursorLineNr", {"fg": s:pink, "bg": s:bg_very_subtle})
|
||||
call s:h("Question", {"fg": s:red})
|
||||
call s:h("StatusLine", {"bg": s:bg_very_subtle})
|
||||
call s:h("StatusLineNC", {"bg": s:bg_very_subtle, "fg": s:medium_gray})
|
||||
call s:h("VertSplit", {"bg": s:bg_very_subtle, "fg": s:bg_very_subtle})
|
||||
call s:h("Title", {"fg": s:dark_blue})
|
||||
call s:h("Visual", {"fg": s:norm, "bg": s:visual})
|
||||
call s:h("VisualNOS", {"bg": s:bg_subtle})
|
||||
call s:h("WarningMsg", {"fg": s:yellow})
|
||||
call s:h("WildMenu", {"fg": s:bg, "bg": s:norm})
|
||||
call s:h("Folded", {"fg": s:medium_gray})
|
||||
call s:h("FoldColumn", {"fg": s:bg_subtle})
|
||||
call s:h("DiffAdd", {"fg": s:green})
|
||||
call s:h("DiffDelete", {"fg": s:red})
|
||||
call s:h("DiffChange", {"fg": s:dark_yellow})
|
||||
call s:h("DiffText", {"fg": s:dark_blue})
|
||||
call s:h("SignColumn", {"fg": s:light_green})
|
||||
|
||||
|
||||
if has("gui_running")
|
||||
call s:h("SpellBad", {"gui": "underline", "sp": s:red})
|
||||
call s:h("SpellCap", {"gui": "underline", "sp": s:light_green})
|
||||
call s:h("SpellRare", {"gui": "underline", "sp": s:light_purple})
|
||||
call s:h("SpellLocal", {"gui": "underline", "sp": s:dark_green})
|
||||
else
|
||||
call s:h("SpellBad", {"cterm": "underline", "fg": s:red})
|
||||
call s:h("SpellCap", {"cterm": "underline", "fg": s:light_green})
|
||||
call s:h("SpellRare", {"cterm": "underline", "fg": s:light_purple})
|
||||
call s:h("SpellLocal", {"cterm": "underline", "fg": s:dark_green})
|
||||
endif
|
||||
|
||||
call s:h("Pmenu", {"fg": s:norm, "bg": s:bg_very_subtle})
|
||||
call s:h("PmenuSel", {"fg": s:subtle_black, "bg": s:pink})
|
||||
call s:h("PmenuSbar", {"fg": s:norm, "bg": s:bg_subtle})
|
||||
call s:h("PmenuThumb", {"fg": s:norm, "bg": s:bg_subtle})
|
||||
call s:h("TabLine", {"fg": s:norm, "bg": s:bg_very_subtle})
|
||||
call s:h("TabLineSel", {"fg": s:subtle_black, "bg": s:pink, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("TabLineFill", {"fg": s:norm, "bg": s:bg_very_subtle})
|
||||
call s:h("CursorColumn", {"bg": s:bg_very_subtle})
|
||||
call s:h("CursorLine", {"bg": s:bg_very_subtle})
|
||||
call s:h("ColorColumn", {"bg": s:bg_subtle})
|
||||
|
||||
call s:h("MatchParen", {"bg": s:bg_subtle, "fg": s:norm})
|
||||
call s:h("qfLineNr", {"fg": s:medium_gray})
|
||||
|
||||
call s:h("htmlH1", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH2", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH3", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH4", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH5", {"bg": s:bg, "fg": s:norm})
|
||||
call s:h("htmlH6", {"bg": s:bg, "fg": s:norm})
|
||||
|
||||
" Syntastic
|
||||
call s:h("SyntasticWarningSign", {"fg": s:yellow})
|
||||
call s:h("SyntasticWarning", {"bg": s:yellow, "fg": s:black, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("SyntasticErrorSign", {"fg": s:red})
|
||||
call s:h("SyntasticError", {"bg": s:red, "fg": s:white, "gui": "bold", "cterm": "bold"})
|
||||
|
||||
" which-key.nvim
|
||||
call s:h("WhichKey", {"bg": s:bg, "fg": s:pink, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("WhichKeyDesc", {"bg": s:bg, "fg": s:norm_subtle, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("WhichKeySeparator", {"bg": s:bg, "fg": s:norm, "gui": "bold", "cterm": "bold"})
|
||||
call s:h("WhichKeyFloat", {"bg": s:bg})
|
||||
|
||||
hi link WhichKeyGroup WhichKey
|
||||
|
||||
" Neomake
|
||||
hi link NeomakeWarningSign SyntasticWarningSign
|
||||
hi link NeomakeErrorSign SyntasticErrorSign
|
||||
|
||||
" ALE
|
||||
hi link ALEWarningSign SyntasticWarningSign
|
||||
hi link ALEErrorSign SyntasticErrorSign
|
||||
|
||||
" Signify, git-gutter
|
||||
hi link SignifySignAdd LineNr
|
||||
hi link SignifySignDelete LineNr
|
||||
hi link SignifySignChange LineNr
|
||||
hi link GitGutterAdd LineNr
|
||||
hi link GitGutterDelete LineNr
|
||||
hi link GitGutterChange LineNr
|
||||
hi link GitGutterChangeDelete LineNr
|
||||
@@ -0,0 +1,30 @@
|
||||
if has('gui') || exists('g:neovide')
|
||||
set guifont=Hack\ Nerd\ Font:h13
|
||||
|
||||
" neovide doesn't support copy from host, so we have to map it ourselves
|
||||
|
||||
if exists('g:neovide')
|
||||
|
||||
func! s:enabletp()
|
||||
let g:neovide_transparency=0.9
|
||||
endfunc
|
||||
func! s:disabletp()
|
||||
let g:neovide_transparency=1.0
|
||||
endfunc
|
||||
let g:Transparent_disable_func = function('s:disabletp')
|
||||
let g:Transparent_enable_func = function('s:enabletp')
|
||||
|
||||
let g:neovide_transparency=0.9
|
||||
" let g:neovide_transparency_point=0.8
|
||||
if g:os == 'Darwin'
|
||||
nnoremap <D-v> "+p
|
||||
cnoremap <D-v> <c-r>+
|
||||
inoremap <D-v> <c-r>+
|
||||
else
|
||||
nnoremap <C-v> "+p
|
||||
cnoremap <C-v> <c-r>+
|
||||
inoremap <C-v> <c-r>+
|
||||
endif
|
||||
endif
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,276 @@
|
||||
-- The lua implementation of the fzy string matching algorithm
|
||||
|
||||
local SCORE_GAP_LEADING = -0.005
|
||||
local SCORE_GAP_TRAILING = -0.005
|
||||
local SCORE_GAP_INNER = -0.01
|
||||
local SCORE_MATCH_CONSECUTIVE = 1.0
|
||||
local SCORE_MATCH_SLASH = 0.9
|
||||
local SCORE_MATCH_WORD = 0.8
|
||||
local SCORE_MATCH_CAPITAL = 0.7
|
||||
local SCORE_MATCH_DOT = 0.6
|
||||
local SCORE_MAX = math.huge
|
||||
local SCORE_MIN = -math.huge
|
||||
local MATCH_MAX_LENGTH = 1024
|
||||
|
||||
local fzy = {}
|
||||
|
||||
-- Check if `needle` is a subsequence of the `haystack`.
|
||||
--
|
||||
-- Usually called before `score` or `positions`.
|
||||
--
|
||||
-- Args:
|
||||
-- needle (string)
|
||||
-- haystack (string)
|
||||
-- case_sensitive (bool, optional): defaults to false
|
||||
--
|
||||
-- Returns:
|
||||
-- bool
|
||||
function fzy.has_match(needle, haystack, case_sensitive)
|
||||
if not case_sensitive then
|
||||
needle = string.lower(needle)
|
||||
haystack = string.lower(haystack)
|
||||
end
|
||||
|
||||
local j = 1
|
||||
for i = 1, string.len(needle) do
|
||||
j = string.find(haystack, needle:sub(i, i), j, true)
|
||||
if not j then
|
||||
return false
|
||||
else
|
||||
j = j + 1
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function is_lower(c)
|
||||
return c:match("%l")
|
||||
end
|
||||
|
||||
local function is_upper(c)
|
||||
return c:match("%u")
|
||||
end
|
||||
|
||||
local function precompute_bonus(haystack)
|
||||
local match_bonus = {}
|
||||
|
||||
local last_char = "/"
|
||||
for i = 1, string.len(haystack) do
|
||||
local this_char = haystack:sub(i, i)
|
||||
if last_char == "/" or last_char == "\\" then
|
||||
match_bonus[i] = SCORE_MATCH_SLASH
|
||||
elseif last_char == "-" or last_char == "_" or last_char == " " then
|
||||
match_bonus[i] = SCORE_MATCH_WORD
|
||||
elseif last_char == "." then
|
||||
match_bonus[i] = SCORE_MATCH_DOT
|
||||
elseif is_lower(last_char) and is_upper(this_char) then
|
||||
match_bonus[i] = SCORE_MATCH_CAPITAL
|
||||
else
|
||||
match_bonus[i] = 0
|
||||
end
|
||||
|
||||
last_char = this_char
|
||||
end
|
||||
|
||||
return match_bonus
|
||||
end
|
||||
|
||||
local function compute(needle, haystack, D, M, case_sensitive)
|
||||
-- Note that the match bonuses must be computed before the arguments are
|
||||
-- converted to lowercase, since there are bonuses for camelCase.
|
||||
local match_bonus = precompute_bonus(haystack)
|
||||
local n = string.len(needle)
|
||||
local m = string.len(haystack)
|
||||
|
||||
if not case_sensitive then
|
||||
needle = string.lower(needle)
|
||||
haystack = string.lower(haystack)
|
||||
end
|
||||
|
||||
-- Because lua only grants access to chars through substring extraction,
|
||||
-- get all the characters from the haystack once now, to reuse below.
|
||||
local haystack_chars = {}
|
||||
for i = 1, m do
|
||||
haystack_chars[i] = haystack:sub(i, i)
|
||||
end
|
||||
|
||||
for i = 1, n do
|
||||
D[i] = {}
|
||||
M[i] = {}
|
||||
|
||||
local prev_score = SCORE_MIN
|
||||
local gap_score = i == n and SCORE_GAP_TRAILING or SCORE_GAP_INNER
|
||||
local needle_char = needle:sub(i, i)
|
||||
|
||||
for j = 1, m do
|
||||
if needle_char == haystack_chars[j] then
|
||||
local score = SCORE_MIN
|
||||
if i == 1 then
|
||||
score = ((j - 1) * SCORE_GAP_LEADING) + match_bonus[j]
|
||||
elseif j > 1 then
|
||||
local a = M[i - 1][j - 1] + match_bonus[j]
|
||||
local b = D[i - 1][j - 1] + SCORE_MATCH_CONSECUTIVE
|
||||
score = math.max(a, b)
|
||||
end
|
||||
D[i][j] = score
|
||||
prev_score = math.max(score, prev_score + gap_score)
|
||||
M[i][j] = prev_score
|
||||
else
|
||||
D[i][j] = SCORE_MIN
|
||||
prev_score = prev_score + gap_score
|
||||
M[i][j] = prev_score
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Compute a matching score.
|
||||
--
|
||||
-- Args:
|
||||
-- needle (string): must be a subequence of `haystack`, or the result is
|
||||
-- undefined.
|
||||
-- haystack (string)
|
||||
-- case_sensitive (bool, optional): defaults to false
|
||||
--
|
||||
-- Returns:
|
||||
-- number: higher scores indicate better matches. See also `get_score_min`
|
||||
-- and `get_score_max`.
|
||||
function fzy.score(needle, haystack, case_sensitive)
|
||||
local n = string.len(needle)
|
||||
local m = string.len(haystack)
|
||||
|
||||
if n == 0 or m == 0 or m > MATCH_MAX_LENGTH or n > m then
|
||||
return SCORE_MIN
|
||||
elseif n == m then
|
||||
return SCORE_MAX
|
||||
else
|
||||
local D = {}
|
||||
local M = {}
|
||||
compute(needle, haystack, D, M, case_sensitive)
|
||||
return M[n][m]
|
||||
end
|
||||
end
|
||||
|
||||
-- Compute the locations where fzy matches a string.
|
||||
--
|
||||
-- Determine where each character of the `needle` is matched to the `haystack`
|
||||
-- in the optimal match.
|
||||
--
|
||||
-- Args:
|
||||
-- needle (string): must be a subequence of `haystack`, or the result is
|
||||
-- undefined.
|
||||
-- haystack (string)
|
||||
-- case_sensitive (bool, optional): defaults to false
|
||||
--
|
||||
-- Returns:
|
||||
-- {int,...}: indices, where `indices[n]` is the location of the `n`th
|
||||
-- character of `needle` in `haystack`.
|
||||
-- number: the same matching score returned by `score`
|
||||
function fzy.positions(needle, haystack, case_sensitive)
|
||||
local n = string.len(needle)
|
||||
local m = string.len(haystack)
|
||||
|
||||
if n == 0 or m == 0 or m > MATCH_MAX_LENGTH or n > m then
|
||||
return {}, SCORE_MIN
|
||||
elseif n == m then
|
||||
local consecutive = {}
|
||||
for i = 1, n do
|
||||
consecutive[i] = i
|
||||
end
|
||||
return consecutive, SCORE_MAX
|
||||
end
|
||||
|
||||
local D = {}
|
||||
local M = {}
|
||||
compute(needle, haystack, D, M, case_sensitive)
|
||||
|
||||
local positions = {}
|
||||
local match_required = false
|
||||
local j = m
|
||||
for i = n, 1, -1 do
|
||||
while j >= 1 do
|
||||
if D[i][j] ~= SCORE_MIN and (match_required or D[i][j] == M[i][j]) then
|
||||
match_required = (i ~= 1) and (j ~= 1) and (
|
||||
M[i][j] == D[i - 1][j - 1] + SCORE_MATCH_CONSECUTIVE)
|
||||
positions[i] = j
|
||||
j = j - 1
|
||||
break
|
||||
else
|
||||
j = j - 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return positions, M[n][m]
|
||||
end
|
||||
|
||||
-- Apply `has_match` and `positions` to an array of haystacks.
|
||||
--
|
||||
-- Args:
|
||||
-- needle (string)
|
||||
-- haystack ({string, ...})
|
||||
-- case_sensitive (bool, optional): defaults to false
|
||||
--
|
||||
-- Returns:
|
||||
-- {{idx, positions, score}, ...}: an array with one entry per matching line
|
||||
-- in `haystacks`, each entry giving the index of the line in `haystacks`
|
||||
-- as well as the equivalent to the return value of `positions` for that
|
||||
-- line.
|
||||
function fzy.filter(needle, haystacks, case_sensitive)
|
||||
local result = {}
|
||||
local idx = 1
|
||||
for line in haystacks() do
|
||||
if fzy.has_match(needle, line, case_sensitive) then
|
||||
local p, s = fzy.positions(needle, line, case_sensitive)
|
||||
table.insert(result, vim.list({idx, vim.list(p), s}))
|
||||
end
|
||||
idx = idx + 1
|
||||
end
|
||||
table.sort(result, function(a,b) return a[3] > b[3] end)
|
||||
return vim.list(result)
|
||||
end
|
||||
|
||||
-- The lowest value returned by `score`.
|
||||
--
|
||||
-- In two special cases:
|
||||
-- - an empty `needle`, or
|
||||
-- - a `needle` or `haystack` larger than than `get_max_length`,
|
||||
-- the `score` function will return this exact value, which can be used as a
|
||||
-- sentinel. This is the lowest possible score.
|
||||
function fzy.get_score_min()
|
||||
return SCORE_MIN
|
||||
end
|
||||
|
||||
-- The score returned for exact matches. This is the highest possible score.
|
||||
function fzy.get_score_max()
|
||||
return SCORE_MAX
|
||||
end
|
||||
|
||||
-- The maximum size for which `fzy` will evaluate scores.
|
||||
function fzy.get_max_length()
|
||||
return MATCH_MAX_LENGTH
|
||||
end
|
||||
|
||||
-- The minimum score returned for normal matches.
|
||||
--
|
||||
-- For matches that don't return `get_score_min`, their score will be greater
|
||||
-- than than this value.
|
||||
function fzy.get_score_floor()
|
||||
return MATCH_MAX_LENGTH * SCORE_GAP_INNER
|
||||
end
|
||||
|
||||
-- The maximum score for non-exact matches.
|
||||
--
|
||||
-- For matches that don't return `get_score_max`, their score will be less than
|
||||
-- this value.
|
||||
function fzy.get_score_ceiling()
|
||||
return MATCH_MAX_LENGTH * SCORE_MATCH_CONSECUTIVE
|
||||
end
|
||||
|
||||
-- The name of the currently-running implmenetation, "lua" or "native".
|
||||
function fzy.get_implementation_name()
|
||||
return "lua"
|
||||
end
|
||||
|
||||
return fzy
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
if HasPlug('github-nvim-theme') then
|
||||
require('aerial').setup({
|
||||
-- optionally use on_attach to set keymaps when aerial has attached to a buffer
|
||||
layout = {
|
||||
width = 50,
|
||||
default_direction = "right",
|
||||
preserve_equality = true,
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
-- Jump forwards/backwards with '{' and '}'
|
||||
vim.keymap.set('n', '{', '<cmd>AerialPrev<CR>', { buffer = bufnr })
|
||||
vim.keymap.set('n', '}', '<cmd>AerialNext<CR>', { buffer = bufnr })
|
||||
end
|
||||
})
|
||||
-- You probably also want to set a keymap to toggle aerial
|
||||
vim.keymap.set('n', '<leader>v', '<cmd>AerialToggle!<CR>')
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
if HasPlug('github-nvim-theme') then
|
||||
-- Example config in Lua
|
||||
require("github-theme").setup({
|
||||
-- Overwrite the highlight groups
|
||||
overrides = function(c)
|
||||
return {
|
||||
NormalFloat = { link = 'Pmenu' },
|
||||
}
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
if HasPlug('gitsigns.nvim') then
|
||||
require('gitsigns').setup({
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map('n', ']c', function()
|
||||
if vim.wo.diff then return ']c' end
|
||||
vim.schedule(function() gs.next_hunk() end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true })
|
||||
|
||||
map('n', '[c', function()
|
||||
if vim.wo.diff then return '[c' end
|
||||
vim.schedule(function() gs.prev_hunk() end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true })
|
||||
|
||||
-- Actions
|
||||
map({ 'n', 'v' }, '<leader>hs', ':Gitsigns stage_hunk<CR>')
|
||||
map({ 'n', 'v' }, '<leader>hr', ':Gitsigns reset_hunk<CR>')
|
||||
map('n', '<leader>hS', gs.stage_buffer)
|
||||
map('n', '<leader>hu', gs.undo_stage_hunk)
|
||||
map('n', '<leader>hR', gs.reset_buffer)
|
||||
map('n', '<leader>hp', gs.preview_hunk)
|
||||
map('n', '<leader>hb', function() gs.blame_line { full = true } end)
|
||||
map('n', '<leader>tb', gs.toggle_current_line_blame)
|
||||
map('n', '<leader>hd', gs.diffthis)
|
||||
map('n', '<leader>hD', function() gs.diffthis('~') end)
|
||||
map('n', '<leader>td', gs.toggle_deleted)
|
||||
|
||||
-- Text object
|
||||
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
|
||||
end
|
||||
})
|
||||
vim.fn['theme#addCleanBg']({ 'GitSignsAdd', 'GitSignsStagedChange',
|
||||
'GitSignsStagedDelete', 'GitSignsDelete', 'GitSignsChange',
|
||||
'GitGutterAdd', 'GitGutterChange', 'GitGutterDelete', 'GitGutterChangeDelete',
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
if HasPlug('impatient.nvim') then
|
||||
require('impatient')
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
if not Animation_enable then
|
||||
if HasPlug('indent-blankline.nvim') then
|
||||
-- Example config in Lua
|
||||
require("indent_blankline").setup {
|
||||
show_current_context = true,
|
||||
use_treesitter = true,
|
||||
filetype_exclude = { "lspinfo", "packer", "checkhealth",
|
||||
"help", "man", "", "startify", }
|
||||
-- use_treesitter = true,
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
-------------------OPTIONS-----------------------
|
||||
|
||||
-- enable animation of command like "<C-u>" and "<C-d>", or cursor
|
||||
-- jump animation. (Performence will be effected)
|
||||
Animation_enable = vim.g.animation_enable
|
||||
High_performence = vim.g.high_performence
|
||||
|
||||
-- false basicly enable plugins like noice, nvim-notify etc.
|
||||
Classic_vim_ui = vim.g.classic_vim_ui
|
||||
|
||||
|
||||
------------------VIM OPTIONS-----------------------
|
||||
|
||||
vim.o.signcolumn = 'auto:2'
|
||||
|
||||
------------------UTILITIES----------------------
|
||||
|
||||
Vim_version = vim.version()
|
||||
Vim_version_minor = Vim_version['minor']
|
||||
|
||||
function HasPlug(name)
|
||||
return vim.fn['utils#hasplug'](name)
|
||||
end
|
||||
|
||||
-- use to print object
|
||||
function _G.put(...)
|
||||
local objects = {}
|
||||
for i = 1, select('#', ...) do
|
||||
local v = select(i, ...)
|
||||
table.insert(objects, vim.inspect(v))
|
||||
end
|
||||
|
||||
print(table.concat(objects, '\n'))
|
||||
return ...
|
||||
end
|
||||
|
||||
Which_key = nil
|
||||
function Wk_register(opt)
|
||||
if Which_key == nil then
|
||||
return
|
||||
end
|
||||
Which_key.register(opt)
|
||||
end
|
||||
|
||||
Show_icon = false
|
||||
if HasPlug('nvim-web-devicons') then
|
||||
Show_icon = true
|
||||
end
|
||||
|
||||
|
||||
----------------CONFIGURATION--------------------
|
||||
|
||||
local plugin_setting_paths = vim.fn.split(vim.fn.glob(vim.g.dotvimdir
|
||||
.. "/lua/lua-plugin-settings/*config.lua"), '\n')
|
||||
local plugin_settings = vim.fn.map(plugin_setting_paths, 'fnamemodify(v:val, ":t:r")')
|
||||
|
||||
for _idx, name in pairs(plugin_settings) do
|
||||
require('lua-plugin-settings.'..name)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
if HasPlug('iron.nvim') then
|
||||
local iron = require("iron.core")
|
||||
|
||||
iron.setup {
|
||||
config = {
|
||||
-- Whether a repl should be discarded or not
|
||||
scratch_repl = true,
|
||||
-- Your repl definitions come here
|
||||
repl_definition = {
|
||||
sh = {
|
||||
-- Can be a table or a function that
|
||||
-- returns a table (see below)
|
||||
command = { "zsh" }
|
||||
}
|
||||
},
|
||||
-- How the repl window will be displayed
|
||||
-- See below for more information
|
||||
repl_open_cmd = require('iron.view').bottom(40),
|
||||
},
|
||||
-- Iron doesn't set keymaps by default anymore.
|
||||
-- You can set them here or manually add keymaps to the functions in iron.core
|
||||
keymaps = {
|
||||
send_motion = "<space>sc",
|
||||
visual_send = "<space>sc",
|
||||
send_file = "<space>sf",
|
||||
send_line = "<space>sl",
|
||||
send_mark = "<space>sm",
|
||||
mark_motion = "<space>mc",
|
||||
mark_visual = "<space>mc",
|
||||
remove_mark = "<space>md",
|
||||
cr = "<space>s<cr>",
|
||||
interrupt = "<space>s<space>",
|
||||
exit = "<space>sq",
|
||||
clear = "<space>cl",
|
||||
},
|
||||
-- If the highlight is on, you can change how it looks
|
||||
-- For the available options, check nvim_set_hl
|
||||
highlight = {
|
||||
italic = true
|
||||
},
|
||||
ignore_blank_lines = true, -- ignore blank lines when sending visual select lines
|
||||
}
|
||||
|
||||
-- iron also has a list of commands, see :h iron-commands for all available commands
|
||||
vim.keymap.set('n', '<space>rs', '<cmd>IronRepl<cr>')
|
||||
vim.keymap.set('n', '<space>rr', '<cmd>IronRestart<cr>')
|
||||
vim.keymap.set('n', '<space>rf', '<cmd>IronFocus<cr>')
|
||||
vim.keymap.set('n', '<space>rh', '<cmd>IronHide<cr>')
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
if HasPlug('leap.nvim') then
|
||||
require('leap').add_default_mappings()
|
||||
end
|
||||
@@ -0,0 +1,108 @@
|
||||
|
||||
if HasPlug('lualine.nvim') then
|
||||
|
||||
-- custom lualine plugin show coc lsp status
|
||||
local function cocstatus()
|
||||
local loading = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }
|
||||
local step = #loading
|
||||
local ok, result = pcall(vim.fn.CocAction, 'services')
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
local ft = vim.bo.filetype
|
||||
local state, id
|
||||
for _, entry in ipairs(result) do
|
||||
if entry['languageIds'][1] == ft then
|
||||
state = entry['state']
|
||||
id = entry['id']
|
||||
break
|
||||
end
|
||||
end
|
||||
local speed = 1600
|
||||
local loadidx = (vim.loop.now() % speed)
|
||||
local msg = id
|
||||
if state == "starting" then
|
||||
return msg .. " " .. loading[math.floor(loadidx / (step * (speed / 100))) + 1]
|
||||
elseif state == "running" then
|
||||
return msg
|
||||
end
|
||||
return ''
|
||||
end
|
||||
|
||||
local _section_x = {}
|
||||
local _section_y = {}
|
||||
-- if HasPlug('coc.nvim') then table.insert(_section_x, cocstatus) end
|
||||
table.insert(_section_x, cocstatus)
|
||||
local disabled_filetypes_data = {}
|
||||
if Vim_version_minor < 7 then
|
||||
-- globalstatus only work for nvim >= 0.7
|
||||
disabled_filetypes_data = { -- Filetypes to disable lualine for.
|
||||
statusline = {}, -- only ignores the ft for statusline.
|
||||
winbar = {}, -- only ignores the ft for winbar.
|
||||
'NvimTree',
|
||||
'vista',
|
||||
}
|
||||
end
|
||||
|
||||
local opt = {
|
||||
options = {
|
||||
icons_enabled = Show_icon,
|
||||
theme = 'auto', -- lualine theme
|
||||
-- component_separators = { left = '', right = ''},
|
||||
-- section_separators = { left = '', right = ''},
|
||||
component_separators = { left = '', right = '' },
|
||||
section_separators = { left = '', right = '' },
|
||||
always_divide_middle = false,
|
||||
globalstatus = true,
|
||||
disabled_filetypes = disabled_filetypes_data,
|
||||
refresh = { statusline = 200 }
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { 'mode' },
|
||||
lualine_b = {},
|
||||
lualine_c = {
|
||||
{
|
||||
'buffers',
|
||||
mode = 2,
|
||||
max_length = function()
|
||||
return vim.o.columns - 30
|
||||
end,
|
||||
filetype_names = {
|
||||
TelescopePrompt = 'Telescope',
|
||||
dashboard = 'Dashboard',
|
||||
packer = 'Packer',
|
||||
fzf = 'FZF',
|
||||
alpha = 'Alpha',
|
||||
NvimTree = 'NvimTree',
|
||||
vista = 'Vista',
|
||||
},
|
||||
symbols = {
|
||||
alternate_file = '',
|
||||
},
|
||||
}
|
||||
},
|
||||
-- lualine_x = {'encoding', 'fileformat', 'filetype'},
|
||||
lualine_x = _section_x,
|
||||
lualine_y = _section_y,
|
||||
lualine_z = { 'location' }
|
||||
},
|
||||
}
|
||||
|
||||
require('lualine').setup(opt)
|
||||
|
||||
vim.fn['theme#addTransGroup']({'lualine_c_inactive', 'lualine_c_normal'})
|
||||
|
||||
vim.o.fillchars ='eob: ,vert:│,stl: ,stlnc: ,'
|
||||
|
||||
for i = 1, 9 do
|
||||
-- :nnoremap <silent> <Leader>1 :LualineBuffersJump 1<CR>
|
||||
vim.api.nvim_set_keymap('n', '<Leader>' .. i, ':LualineBuffersJump ' .. i .. '<CR>',
|
||||
{ noremap = true, silent = true, nowait = true })
|
||||
end
|
||||
for i = 10, 20 do
|
||||
-- :nnoremap <silent> <Leader>1 :LualineBuffersJump 1<CR>
|
||||
vim.api.nvim_set_keymap('n', '<Space>' .. i, ':LualineBuffersJump ' .. i .. '<CR>',
|
||||
{ noremap = true, silent = true, nowait = true })
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
if HasPlug('mini.animate') and Animation_enable then
|
||||
local animate = require('mini.animate')
|
||||
animate.setup({
|
||||
cursor = {
|
||||
-- Whether to enable this animation
|
||||
enable = true,
|
||||
-- Timing of animation (how steps will progress in time)
|
||||
-- timing = --<function: implements linear total 250ms animation duration>,
|
||||
},
|
||||
scroll = {
|
||||
-- Whether to enable this animation
|
||||
enable = true,
|
||||
-- Timing of animation (how steps will progress in time)
|
||||
timing = animate.gen_timing.linear({ duration = 150, unit = 'total' }),
|
||||
},
|
||||
open = {
|
||||
-- Whether to enable this animation
|
||||
enable = false,
|
||||
},
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason",
|
||||
"NvimTree", "vista", "toggleterm", "noice" },
|
||||
callback = function()
|
||||
vim.b.minianimate_disable = true
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
if HasPlug('mini.colors') then
|
||||
require('mini.colors').setup()
|
||||
end
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
if HasPlug('mini.indentscope') then
|
||||
MiniIndentscope = require('mini.indentscope')
|
||||
MiniIndentscope.setup({
|
||||
symbol = '│',
|
||||
-- draw = {
|
||||
-- animation = MiniIndentscope.gen_animation.linear({
|
||||
-- easing = 'out',
|
||||
-- duration = 150,
|
||||
-- unit = 'total'
|
||||
-- })
|
||||
-- },
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason",
|
||||
"NvimTree", "vista", "startify", "toggleterm" },
|
||||
callback = function()
|
||||
vim.b.miniindentscope_disable = true
|
||||
end,
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,47 @@
|
||||
if not Classic_vim_ui
|
||||
and HasPlug('noice.nvim')
|
||||
and HasPlug('nvim-notify')
|
||||
and HasPlug('nui.nvim') then
|
||||
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
-- command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
cmdline = {
|
||||
enabled = true, -- enables the Noice cmdline UI
|
||||
view = "cmdline", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
|
||||
opts = {}, -- global options for the cmdline. See section on views
|
||||
format = {
|
||||
-- cmdline = false,
|
||||
search_down = false,
|
||||
search_up = false,
|
||||
help = { pattern = '', icon = '' },
|
||||
},
|
||||
},
|
||||
messages = {
|
||||
-- NOTE: If you enable messages, then the cmdline is enabled automatically.
|
||||
-- This is a current Neovim limitation.
|
||||
enabled = true, -- enables the Noice messages UI
|
||||
view = "notify", -- default view for messages
|
||||
view_error = "notify", -- view for errors
|
||||
view_warn = "notify", -- view for warnings
|
||||
view_history = "messages", -- view for :messages
|
||||
view_search = false, -- view for search count messages. Set to `false` to disable
|
||||
},
|
||||
})
|
||||
|
||||
vim.fn['theme#addTransGroup']({'NotifyERRORBody', 'NotifyWARNBody', 'NotifyINFOBody', 'NotifyDEBUGBody', 'NotifyTRACEBody',
|
||||
'NotifyERRORBorder', 'NotifyWARNBorder', 'NotifyINFOBorder', 'NotifyDEBUGBorder', 'NotifyTRACEBorder'})
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
if HasPlug('nvim-scrollbar') then
|
||||
require("scrollbar").setup({
|
||||
excluded_filetypes = {
|
||||
"prompt",
|
||||
"TelescopePrompt",
|
||||
"noice",
|
||||
"startify",
|
||||
"vista",
|
||||
},
|
||||
excluded_buftypes = {
|
||||
"terminal",
|
||||
"nofile",
|
||||
"help",
|
||||
},
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
if HasPlug('nvim-tree.lua') then
|
||||
|
||||
local api = require('nvim-tree.api')
|
||||
local M = {}
|
||||
|
||||
function M.print_node_path()
|
||||
local node = api.tree.get_node_under_cursor()
|
||||
print(node.absolute_path)
|
||||
end
|
||||
|
||||
function M.on_attach(bufnr)
|
||||
local function opts(desc)
|
||||
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
|
||||
end
|
||||
-- vim.keymap.set('n', 'u', api.node.navigate.parent, opts('Parent Directory'))
|
||||
vim.keymap.set('n', 'u', api.tree.change_root_to_parent, opts('Up'))
|
||||
vim.keymap.set('n', 'a', api.fs.create, opts('Create'))
|
||||
vim.keymap.set('n', 'dd', api.fs.remove, opts('Delete'))
|
||||
vim.keymap.set('n', 'rn', api.fs.rename_basename, opts('Rename: Basename'))
|
||||
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Git Ignore'))
|
||||
vim.keymap.set('n', 'cd', api.tree.change_root_to_node, opts('CD'))
|
||||
vim.keymap.set('n', 'X', api.tree.collapse_all, opts('Collapse'))
|
||||
vim.keymap.set('n', 'O', api.tree.expand_all, opts('Expand All'))
|
||||
vim.keymap.set('n', 'p', M.print_node_path, opts('Print node path'))
|
||||
vim.keymap.set('n', 'o', api.node.open.edit, opts('Open'))
|
||||
vim.keymap.set('n', '<CR>', api.node.open.edit, opts('Open'))
|
||||
end
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<Leader>e', ':NvimTreeFindFileToggle<CR>',
|
||||
{ desc = 'Toggle nvim-tree', noremap = true, silent = true, nowait = true })
|
||||
|
||||
require("nvim-tree").setup({
|
||||
sync_root_with_cwd = true,
|
||||
respect_buf_cwd = true,
|
||||
update_focused_file = {
|
||||
enable = true,
|
||||
update_root = true,
|
||||
},
|
||||
sort_by = "case_sensitive",
|
||||
on_attach = M.on_attach,
|
||||
view = {
|
||||
width = 30,
|
||||
},
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
},
|
||||
git = {
|
||||
ignore = false,
|
||||
},
|
||||
actions = {
|
||||
open_file = {
|
||||
quit_on_open = true,
|
||||
resize_window = true,
|
||||
window_picker = {
|
||||
exclude = {
|
||||
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame", "vista" },
|
||||
buftype = { "nofile", "terminal", "help" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.fn['theme#addTransGroup']({'NvimTreeWinSeparator', 'NvimTreeNormal', 'NvimTreeNormalNC'})
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
if HasPlug('nvim-treesitter') then
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = { "c", "bash", "lua", "python", "vim" },
|
||||
sync_install = false,
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
},
|
||||
indent = {
|
||||
enable = true
|
||||
}
|
||||
}
|
||||
vim.o.foldmethod = 'expr'
|
||||
vim.o.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||
end
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
if HasPlug('project.nvim') then
|
||||
require("project_nvim").setup {
|
||||
detection_methods = { "lsp", "pattern" },
|
||||
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json", "src" },
|
||||
|
||||
-- Don't calculate root dir on specific directories
|
||||
-- Ex: { "~/.cargo/*", ... }
|
||||
exclude_dirs = {},
|
||||
-- Show hidden files in telescope
|
||||
show_hidden = false,
|
||||
-- When set to false, you will get a message when project.nvim changes your
|
||||
-- directory.
|
||||
silent_chdir = false,
|
||||
-- Path where project.nvim will store the project history for use in
|
||||
-- telescope
|
||||
datapath = vim.g.vim_dir .. "/.vimproject/"
|
||||
}
|
||||
|
||||
-- if HasPlug('telescope.nvim') then
|
||||
-- require('telescope').load_extension('projects')
|
||||
-- vim.keymap.set('n', '<leader>fp', require'telescope'.extensions.projects.projects,
|
||||
-- { desc = "Lists projects" })
|
||||
-- end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,113 @@
|
||||
if HasPlug('telescope.nvim') then
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require "telescope.actions.state"
|
||||
local telescope = require("telescope")
|
||||
local builtin = require('telescope.builtin')
|
||||
local telescopeConfig = require("telescope.config")
|
||||
local vimgrep_arguments = { unpack(telescopeConfig.values.vimgrep_arguments) }
|
||||
table.insert(vimgrep_arguments, "--hidden")
|
||||
|
||||
require('telescope.pickers.layout_strategies').horizontal_merged = function(picker, max_columns, max_lines,
|
||||
layout_config)
|
||||
local layout = require('telescope.pickers.layout_strategies').horizontal(picker, max_columns, max_lines,
|
||||
layout_config)
|
||||
layout.prompt.title = ''
|
||||
layout.results.title = ''
|
||||
layout.preview.title = ''
|
||||
-- layout.prompt.borderchars = { '─', '│', '─', '│', '┌', '┐', '┘', '└' }
|
||||
return layout
|
||||
end
|
||||
telescope.setup {
|
||||
defaults = {
|
||||
hidden = true,
|
||||
vimgrep_arguments = vimgrep_arguments,
|
||||
file_ignore_patterns = {"node_modules/", ".git/"},
|
||||
layout_config = {
|
||||
-- prompt_position = "top",
|
||||
},
|
||||
layout_strategy = "horizontal_merged",
|
||||
},
|
||||
pickers = {
|
||||
find_files = {
|
||||
hidden = true,
|
||||
},
|
||||
colorscheme = {
|
||||
enable_preview = true,
|
||||
mappings = {
|
||||
i = {
|
||||
["<CR>"] = function(bufnr)
|
||||
local selection = action_state.get_selected_entry()
|
||||
actions.select_default()
|
||||
local bg = vim.o.background
|
||||
vim.fn['theme#setColor'](bg, selection.value)
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
}
|
||||
}
|
||||
}
|
||||
if HasPlug('telescope-fzf-native.nvim') then
|
||||
telescope.load_extension('fzf')
|
||||
end
|
||||
|
||||
vim.fn['theme#addCleanBg']({ 'TelescopeNormal', 'TelescopeBorder', 'TelescopePromptNormal',
|
||||
'TelescopePromptBorder', 'TelescopePromptPrefix', 'TelescopeResultsTitle', 'TelescopePreviewTitle',
|
||||
'TelescopePromptTitle', 'TelescopePromptCounter' })
|
||||
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = "Search files inside cwd" })
|
||||
-- need to install ripgrep
|
||||
vim.keymap.set('n', '<leader>fr', builtin.live_grep, { desc = "Regex search inside files" })
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "Search buffers" })
|
||||
vim.keymap.set('n', '<leader>fc', builtin.colorscheme, { desc = "Search colorscheme" })
|
||||
vim.keymap.set('n', '<leader>fs', builtin.treesitter, { desc = "Lists Function names, variables, from Treesitter!" })
|
||||
vim.keymap.set('n', '<leader>fh', builtin.highlights, { desc = "Lists highlight" })
|
||||
vim.keymap.set('n', '<leader>fd', builtin.help_tags, { desc = "Lists highlight" })
|
||||
|
||||
Wk_register({ ["<leader>f"] = { name = "+Telescope" } })
|
||||
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "TelescopePreviewerLoaded",
|
||||
command = "setlocal wrap number"
|
||||
})
|
||||
|
||||
-- options picker
|
||||
local pickers = require "telescope.pickers"
|
||||
local finders = require "telescope.finders"
|
||||
local conf = require("telescope.config").values
|
||||
|
||||
function _G.telescope_option_picker()
|
||||
local opts = require("telescope.themes").get_dropdown {}
|
||||
pickers.new(opts, {
|
||||
prompt_title = "Options",
|
||||
finder = finders.new_table {
|
||||
results = vim.fn['options#getAll'](),
|
||||
entry_maker = function(entry)
|
||||
return {
|
||||
value = entry,
|
||||
display = entry[2],
|
||||
ordinal = entry[2],
|
||||
}
|
||||
end
|
||||
},
|
||||
sorter = conf.generic_sorter(opts),
|
||||
attach_mappings = function(prompt_bufnr, map)
|
||||
actions.select_default:replace(function()
|
||||
actions.close(prompt_bufnr)
|
||||
local selection = action_state.get_selected_entry()
|
||||
vim.fn['options#toggle'](selection['value'][1])
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
}):find()
|
||||
end
|
||||
|
||||
vim.keymap.set('n', '<leader>fo', telescope_option_picker, { desc = "Lists Function names, variables, from Treesitter!" })
|
||||
end
|
||||
@@ -0,0 +1,65 @@
|
||||
|
||||
if HasPlug('toggleterm.nvim') then
|
||||
require("toggleterm").setup({
|
||||
|
||||
open_mapping = [[<c-\>]],
|
||||
direction = 'float',
|
||||
float_opts = {
|
||||
border = 'rounded',
|
||||
width = function(term) return math.floor(vim.o.columns * 0.5) end,
|
||||
height = function(term) return math.floor(vim.o.lines * 0.5) end,
|
||||
winblend = 20,
|
||||
row = vim.o.lines * 0.5 - 3,
|
||||
col = vim.o.columns * 0.5,
|
||||
},
|
||||
})
|
||||
function _G.set_terminal_keymaps()
|
||||
local opts = { buffer = 0 }
|
||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', '<C-h>', [[<Cmd>wincmd h<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-l>', [[<Cmd>wincmd l<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||
end
|
||||
|
||||
-- vim.cmd('autocmd TermOpen term://* lua set_terminal_keymaps()')
|
||||
vim.cmd('autocmd FileType toggleterm lua set_terminal_keymaps()')
|
||||
|
||||
local Terminal = require('toggleterm.terminal').Terminal
|
||||
|
||||
local ipythonId = 779
|
||||
local ipython = Terminal:new({
|
||||
size = function(term)
|
||||
if term.direction == "horizontal" then
|
||||
return 15 elseif term.direction == "vertical" then
|
||||
return vim.o.columns * 0.4
|
||||
end
|
||||
end,
|
||||
cmd = "ipython",
|
||||
hidden = true,
|
||||
direction = "vertical",
|
||||
close_on_exit = false,
|
||||
auto_scroll = true,
|
||||
id = ipythonId,
|
||||
})
|
||||
|
||||
function _ipython_toggle()
|
||||
local currentWindow=vim.fn.winnr()
|
||||
ipython:toggle(vim.o.columns * 0.5, 'vertical')
|
||||
vim.cmd(currentWindow .. "wincmd w")
|
||||
end
|
||||
|
||||
vim.api.nvim_set_keymap("n", "<leader>tp", "<cmd>lua _ipython_toggle()<CR>", { noremap = true, silent = true })
|
||||
|
||||
vim.api.nvim_set_keymap("n", "<leader>tl", string.format("<cmd>ToggleTermSendCurrentLine %d<CR>", ipythonId),
|
||||
{ noremap = true, silent = true })
|
||||
-- sends all the (whole) lines in your visual selection
|
||||
vim.api.nvim_set_keymap("v", "<leader>tl", string.format(":ToggleTermSendVisualLines %d<CR>", ipythonId),
|
||||
{ noremap = true, silent = true })
|
||||
-- sends only the visually selected text (this can be a block of text
|
||||
vim.api.nvim_set_keymap("x", "<leader>tl", string.format(":ToggleTermSendVisualSelection %d<CR>", ipythonId),
|
||||
{ noremap = true, silent = true })
|
||||
|
||||
end
|
||||
@@ -0,0 +1,30 @@
|
||||
if HasPlug('vim-illuminate') then
|
||||
local illuminate = require('illuminate')
|
||||
illuminate.configure({
|
||||
providers = {
|
||||
'lsp',
|
||||
'treesitter',
|
||||
'regex',
|
||||
},
|
||||
delay = 0,
|
||||
filetype_overrides = {},
|
||||
filetypes_denylist = {
|
||||
'dirvish',
|
||||
'fugitive',
|
||||
'NvimTree',
|
||||
'help',
|
||||
'vista',
|
||||
'aerial',
|
||||
},
|
||||
filetypes_allowlist = {},
|
||||
modes_denylist = {},
|
||||
modes_allowlist = {},
|
||||
providers_regex_syntax_denylist = {},
|
||||
providers_regex_syntax_allowlist = {},
|
||||
under_cursor = true,
|
||||
large_file_cutoff = nil,
|
||||
large_file_overrides = nil,
|
||||
min_count_to_highlight = 1,
|
||||
})
|
||||
end
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
|
||||
if HasPlug('vim-illuminate') then
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
matchup = {
|
||||
enable = true,
|
||||
disable = { },
|
||||
},
|
||||
}
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
if HasPlug('which-key.nvim') then
|
||||
Which_key = require("which-key")
|
||||
Which_key.setup({
|
||||
triggers_blacklist = {
|
||||
i = { "j", "k" },
|
||||
v = { "j", "k" },
|
||||
c = { "w" },
|
||||
},
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
if exists("g:loaded_vim_config")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vim_config = 1
|
||||
|
||||
let os = os#getOS()
|
||||
|
||||
if os == 'Windows'
|
||||
call os#setWindows()
|
||||
endif
|
||||
|
||||
call options#init()
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
if utils#hasplug('Copilot.vim')
|
||||
" imap <expr> <C-n> <Plug>(copilot-next)
|
||||
" imap <expr> <C-p> <Plug>(copilot-prev)
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
if utils#hasplug('coc-fzf')
|
||||
|
||||
let g:coc_fzf_preview = 'right:50%'
|
||||
nnoremap <silent> <leader>fs :CocFzfList outline<CR>
|
||||
let s:preview_exe = expand(g:dotvimdir.'/bin/preview.py')
|
||||
let g:coc_fzf_opts = ['--border-label', 'Coc Outlines', '--border-label-pos', '9', '--no-scrollbar', '--no-hscroll', '--no-separator']
|
||||
endif
|
||||
@@ -0,0 +1,184 @@
|
||||
if utils#hasplug('coc.nvim')
|
||||
" let g:coc_global_extensions = ['coc-pyright', 'coc-tsserver', 'coc-vimlsp',
|
||||
" \ 'coc-marksman']
|
||||
|
||||
" for tabline info
|
||||
" coc-sumneko-lua offers autocomplete for neovim lua api
|
||||
let g:coc_global_extensions = ['coc-nav', 'coc-sumneko-lua']
|
||||
|
||||
" warning that coc work best for vim >= 8.3
|
||||
let g:coc_disable_startup_warning = 1
|
||||
|
||||
let g:coc_data_home = g:vim_dir . '/coc'
|
||||
let g:coc_config_home = g:vim_dir . '/coc'
|
||||
|
||||
" Use <c-space> to trigger completion.
|
||||
if has('nvim')
|
||||
inoremap <silent><expr> <c-space> coc#refresh()
|
||||
else
|
||||
inoremap <silent><expr> <c-@> coc#refresh()
|
||||
endif
|
||||
|
||||
set updatetime=300
|
||||
|
||||
" Make <CR> auto-select the first completion item and notify coc.nvim to
|
||||
" format on enter, <cr> could be remapped by other vim plugin
|
||||
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
|
||||
" GoTo code navigation.
|
||||
nmap <silent> gd <Plug>(coc-definition)
|
||||
nmap <silent> gy <Plug>(coc-type-definition)
|
||||
nmap <silent> gi <Plug>(coc-implementation)
|
||||
nmap <silent> gr <Plug>(coc-references)
|
||||
|
||||
" Use K to show documentation in preview window.
|
||||
nnoremap <silent> K :call <SID>show_documentation()<CR>
|
||||
|
||||
function! s:show_documentation()
|
||||
if CocAction('hasProvider', 'hover')
|
||||
call CocActionAsync('doHover')
|
||||
else
|
||||
call feedkeys('K', 'in')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
|
||||
" Symbol renaming.
|
||||
nmap <leader>rn <Plug>(coc-rename)
|
||||
|
||||
" Formatting selected code.
|
||||
xmap <space>f <Plug>(coc-format-selected)
|
||||
nmap <space>f <Plug>(coc-format-selected)
|
||||
|
||||
augroup mygroup
|
||||
autocmd!
|
||||
" Setup formatexpr specified filetype(s).
|
||||
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
|
||||
" Update signature help on jump placeholder.
|
||||
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
|
||||
augroup end
|
||||
|
||||
" Apply AutoFix to problem on the current line.
|
||||
nmap <leader>qf <Plug>(coc-fix-current)
|
||||
|
||||
" Remap <C-f> and <C-b> for scroll float windows/popups.
|
||||
if has('nvim-0.4.0') || has('patch-8.2.0750')
|
||||
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
||||
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
||||
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
|
||||
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
|
||||
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
||||
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
||||
endif
|
||||
|
||||
" Mappings for CoCList
|
||||
" Show all diagnostics.
|
||||
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
|
||||
" Manage extensions.
|
||||
" nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
|
||||
" Show commands.
|
||||
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
|
||||
" Find symbol of current document.
|
||||
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
|
||||
" Search workspace symbols.
|
||||
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
|
||||
" Do default action for next item.
|
||||
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
|
||||
" Do default action for previous item.
|
||||
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
|
||||
" Resume latest coc list.
|
||||
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
|
||||
|
||||
"COC LSP SETTING
|
||||
let g:coc_user_config = {
|
||||
\ 'suggest.noselect': v:true,
|
||||
\ 'suggest.enablePreselect': v:false, }
|
||||
|
||||
call coc#config("java.jdt.ls.vmargs", '-javaagent:' . g:dotfiledir . '/config/coc/java/lombok-1.18.26.jar')
|
||||
call coc#config("java.jdt.ls.lombokSupport.enabled", v:false)
|
||||
call coc#config("java.inlayHints.parameterNames.enabled", v:false)
|
||||
call coc#config("inlayHint.enable", v:false)
|
||||
|
||||
if has('nvim')
|
||||
" nvim has tree-sitter
|
||||
call coc#config("semanticTokens.enable", v:false)
|
||||
else
|
||||
call coc#config("semanticTokens.enable", v:true)
|
||||
endif
|
||||
|
||||
call coc#config("sumneko-lua.enableNvimLuaDev", v:true)
|
||||
|
||||
for section in ['suggest', 'diagnostic', 'signature', 'hover']
|
||||
call coc#config(section.'.floatConfig.border', v:true)
|
||||
call coc#config(section.'.floatConfig.rounded', v:true)
|
||||
call coc#config(section.'.floatConfig.highlight', 'Normal')
|
||||
|
||||
" transparent setting (only for neovim)
|
||||
" call coc#config(section.'.floatConfig.winblend', 6)
|
||||
endfor
|
||||
|
||||
function! CocHighlight()
|
||||
hi! CocErrorHighlight guifg=#E74C3C term=underline,bold gui=underline,bold cterm=underline,bold
|
||||
hi! CocErrorSign guifg=#E74C3C
|
||||
|
||||
hi! CocWarningHighlight guifg=#E74C3C term=underline gui=underline cterm=underline
|
||||
hi! CocWarningSign guifg=#E67E22
|
||||
|
||||
hi CocInfoHighlight term=underline gui=underline cterm=underline
|
||||
hi CocHintHighlight term=underline gui=underline cterm=underline
|
||||
hi CocUnusedHighlight term=underline gui=underline cterm=underline
|
||||
endfunction
|
||||
|
||||
call theme#addCleanBg(['CocWarningSign', 'CocErrorSign'])
|
||||
|
||||
augroup CocHighlight
|
||||
autocmd!
|
||||
autocmd ColorScheme * call CocHighlight()
|
||||
augroup END
|
||||
|
||||
function! Breadcrumbs()
|
||||
if ! exists('b:coc_nav')
|
||||
return ''
|
||||
endif
|
||||
let items = b:coc_nav
|
||||
" let t = ' '
|
||||
let t = ' '
|
||||
let c = 0
|
||||
for obj in items
|
||||
let hi = obj['highlight']
|
||||
let name = obj['name']
|
||||
if c == 0
|
||||
let t ..= '%#'.. hi ..'#' .. name .. '%#Normal#'
|
||||
else
|
||||
let t ..= ' %#'.. hi ..'#' .. name .. '%#Normal#'
|
||||
endif
|
||||
let c += 1
|
||||
endfor
|
||||
return t
|
||||
endfunction
|
||||
|
||||
func! s:sigbar_enable()
|
||||
set tabline=%#Normal#🌠%{%Breadcrumbs()%}
|
||||
set showtabline=2
|
||||
endfunc
|
||||
|
||||
func! s:sigbar_disable()
|
||||
set tabline=
|
||||
set showtabline=1
|
||||
endfunc
|
||||
|
||||
" set tabline=%=%#Normal#%=%{%Breadcrumbs()%}
|
||||
" set showtabline=2
|
||||
|
||||
let sigbar_opt = {
|
||||
\ 'desc': 'Show function signature bar',
|
||||
\ 'enablefunc': function('s:sigbar_enable'),
|
||||
\ 'disablefunc': function('s:sigbar_disable'),
|
||||
\ 'isEnabled': 0,
|
||||
\ }
|
||||
call options#add('signature bar', sigbar_opt)
|
||||
|
||||
call theme#addTransGroup(['CocFloating'])
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,3 @@
|
||||
if utils#hasplug('coc.nvim')
|
||||
let g:codi#virtual_text = 0
|
||||
endif
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
if utils#hasplug('ctrlp.vim')
|
||||
let g:ctrlp_map = '<leader>ff'
|
||||
endif
|
||||
@@ -0,0 +1,32 @@
|
||||
|
||||
if utils#hasplug('everforest')
|
||||
let g:everforest_better_performance = 1
|
||||
let g:everforest_background = 'hard'
|
||||
" let g:everforest_enable_italic = 1
|
||||
function! Everforest_trans_enable()
|
||||
let g:everforest_transparent_background = 2
|
||||
colorscheme everforest
|
||||
call theme#setStlColor(&background, 'everforest')
|
||||
" hack to fix caret characters appearing in the statusline when StatusLine
|
||||
" and StatusLineNC has same highlight(https://vi.stackexchange.com/questions/15873/carets-in-status-line)
|
||||
hi StatusLine guifg=#d3c6aa ctermfg=223
|
||||
endfunction
|
||||
function! Everforest_trans_disable()
|
||||
let g:everforest_transparent_background = 0
|
||||
colorscheme everforest
|
||||
call theme#setStlColor(&background, 'everforest')
|
||||
endfunction
|
||||
function! CB_dark_tb_enable_everforest()
|
||||
call Everforest_trans_enable()
|
||||
endfunction
|
||||
function! CB_light_tb_enable_everforest()
|
||||
call Everforest_trans_enable()
|
||||
endfunction
|
||||
function! CB_dark_tb_disable_everforest()
|
||||
call Everforest_trans_disable()
|
||||
endfunction
|
||||
function! CB_light_tb_disable_everforest()
|
||||
call Everforest_trans_disable()
|
||||
endfunction
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,121 @@
|
||||
|
||||
if utils#hasplug("fzf") && utils#hasplug("fzf.vim")
|
||||
" [Buffers] Jump to the existing window if possible
|
||||
let g:fzf_buffers_jump = 1
|
||||
"let $FZF_DEFAULT_COMMAND='find . \( -name node_modules -o -name .git \) -prune -o -print'
|
||||
|
||||
" - CTRL-/ will toggle preview window.
|
||||
let g:fzf_preview_window = ['right:50%']
|
||||
|
||||
hi! fzfborderhi term=bold cterm=bold ctermbg=236 gui=bold guibg=#272c42
|
||||
hi! fzfqueryhi term=underline cterm=underline gui=underline
|
||||
|
||||
let g:fzf_force_termguicolors = 1
|
||||
|
||||
if g:os != 'Windows'
|
||||
let $FZF_DEFAULT_COMMAND = "find . -type f -not -path '*/\.git/*'"
|
||||
endif
|
||||
|
||||
let s:preview_exe = expand(g:dotvimdir.'/bin/preview.py')
|
||||
let s:color_opts = ['--color', 'gutter:-1,bg+:-1,bg:-1,preview-bg:-1,preview-fg:-1,fg+:-1']
|
||||
|
||||
" check if ripgrep is installed
|
||||
function! FzfRg()
|
||||
let s:previewcmd = join([utils#get_usable_py(), s:preview_exe, &bg, '{}'])
|
||||
if ! executable('rg')
|
||||
let cmd = 'grep -R --line-number --exclude-dir=".git;.svn" --color=always -- '.shellescape('')
|
||||
else
|
||||
let cmd = "rg --column --line-number --no-heading --color=always --smart-case -- ".shellescape('')
|
||||
endif
|
||||
|
||||
let options = s:color_opts + ['--border-label', 'Grep', '--border-label-pos', '9', '--no-scrollbar',
|
||||
\ '--no-hscroll', '--no-separator', '--preview', s:previewcmd]
|
||||
let with_preview = fzf#vim#with_preview()
|
||||
if len(with_preview) == 0
|
||||
let with_preview = {'options':['--preview-window','right:50%' ] + options}
|
||||
else
|
||||
" make fzf preview repect colorsheme
|
||||
let with_preview.options = with_preview.options[:-3] + options
|
||||
endif
|
||||
call fzf#vim#grep(cmd, 1, with_preview, 0)
|
||||
endfunction
|
||||
|
||||
function! FzfFiles(...)
|
||||
let s:previewcmd = join([utils#get_usable_py(), s:preview_exe, &bg, '{}'])
|
||||
let options = s:color_opts + ['--border-label', 'Files', '--border-label-pos', '9', '--no-scrollbar',
|
||||
\ '--no-hscroll', '--no-separator', '--preview', s:previewcmd]
|
||||
let with_preview = fzf#vim#with_preview()
|
||||
if len(with_preview) == 0
|
||||
" in windows with_preview return empty dict
|
||||
let with_preview = {'options':['--preview-window','right:50%' ] + options}
|
||||
else
|
||||
let with_preview.options = with_preview.options[:-3] + options
|
||||
endif
|
||||
let dir = ''
|
||||
if a:0 >= 1 && isdirectory(expand(a:1))
|
||||
let dir = a:1
|
||||
endif
|
||||
call fzf#vim#files(dir, with_preview, 0)
|
||||
endfunction
|
||||
|
||||
function! FzfColorSelect(color_name)
|
||||
call theme#setColor(&bg, a:color_name)
|
||||
endfunction
|
||||
|
||||
function! FzfAirlineColorSelect(color_name)
|
||||
call theme#setStlColor(&background, a:color_name)
|
||||
endfunction
|
||||
|
||||
let $FZF_DEFAULT_OPTS='--color=' . s:color_opts[1]
|
||||
|
||||
function! FzfHelpTags()
|
||||
let s:previewcmd = join([utils#get_usable_py(), s:preview_exe, &bg, '{}'])
|
||||
let options = s:color_opts + ['--border-label', 'Files', '--border-label-pos', '9', '--no-scrollbar',
|
||||
\ '--no-hscroll', '--no-separator']
|
||||
let with_preview = fzf#vim#with_preview({ "placeholder": "--tag {2}:{3}:{4}" })
|
||||
if len(with_preview) == 0
|
||||
" in windows with_preview return empty dict
|
||||
let with_preview = {'options':['--preview-window','right:50%' ] + options}
|
||||
else
|
||||
let with_preview.options = with_preview.options + options
|
||||
endif
|
||||
call fzf#vim#helptags(with_preview, 0)
|
||||
endfunction
|
||||
|
||||
let s:optionmap = {}
|
||||
let s:feedfzf = []
|
||||
func! s:optioncb(str)
|
||||
call options#toggle(s:optionmap[a:str])
|
||||
endfunc
|
||||
func! FzfOptions()
|
||||
let s:feedfzf = []
|
||||
let s:optsource = options#getAll()
|
||||
for e in s:optsource
|
||||
let s:optionmap[e[1]] = e[0]
|
||||
call add(s:feedfzf, e[1])
|
||||
endfor
|
||||
call fzf#run(fzf#wrap({
|
||||
\ 'source': s:feedfzf,
|
||||
\ 'sink': function('s:optioncb'),
|
||||
\ 'options': ['--border-label', 'Options'],
|
||||
\ 'window': { 'width': 0.4, 'height': 0.6 }
|
||||
\ }))
|
||||
endfunc
|
||||
|
||||
" noremap <leader>fo :call FzfOptions()<CR>
|
||||
" noremap <leader>fr :call FzfRg()<CR>
|
||||
" noremap <leader>ff :call FzfFiles()<CR>
|
||||
noremap <leader>fh :call FzfHelpTags()<CR>
|
||||
" noremap <leader>fb :BLines<CR>
|
||||
noremap <leader>fu :call FzfFiles('~')<CR>
|
||||
|
||||
if utils#hasplug('fzf-color-preview')
|
||||
let g:FzfColorComfirmCb = function('FzfColorSelect')
|
||||
let g:FzfAirlineComfirmCb = function('FzfAirlineColorSelect')
|
||||
noremap <leader>fa :AirlinePreview<CR>
|
||||
noremap <leader>fc :ColorsPreview<CR>
|
||||
else
|
||||
noremap <leader>fc :Colors<CR>
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
if utils#hasplug('goyo.vim')
|
||||
nnoremap <leader><leader>g :Goyo<CR>
|
||||
let g:goyo_width= floor(&co * 0.65)
|
||||
|
||||
function! s:fix()
|
||||
" resize the goyo after being messed up by other plugins
|
||||
au BufEnter * if winnr('$') == '5' | exe "normal \<c-w>=" | endif
|
||||
endfunction
|
||||
augroup GoyoAu
|
||||
au!
|
||||
augroup END
|
||||
|
||||
autocmd User GoyoEnter au GoyoAu BufEnter * if winnr('$') == '5' | exe "normal \<c-w>=" | endif
|
||||
autocmd User GoyoLeave augroup GoyoAu | au! | augroup END
|
||||
endif
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
if utils#hasplug('indentLine')
|
||||
let g:indentLine_char = '│'
|
||||
let g:indentLine_setConceal = 0
|
||||
endif
|
||||
@@ -0,0 +1,136 @@
|
||||
|
||||
" giveup
|
||||
if utils#hasplug('lightline.vim')
|
||||
set noshowmode
|
||||
set laststatus=2
|
||||
|
||||
" enable bufferline
|
||||
" let g:bufferline_echo = 1
|
||||
|
||||
let g:bufferline_inactive_highlight = 'Search'
|
||||
let g:bufferline_active_highlight = 'Search'
|
||||
let g:bufferline_forbided_col = 32
|
||||
|
||||
let g:lightline = {
|
||||
\ 'colorscheme': 'wombat',
|
||||
\ 'active': {
|
||||
\ 'left': [ [ 'mode'],
|
||||
\ [ 'bufferline'] ],
|
||||
\ 'right': [['lineinfo'], ['cocstatus']],
|
||||
\ },
|
||||
\ 'inactive': {
|
||||
\ 'left': [],
|
||||
\ 'right': [],
|
||||
\ },
|
||||
\ 'component_expand': {
|
||||
\ 'bufferline': 'BufferlineStr',
|
||||
\ },
|
||||
\ 'component_function': {
|
||||
\ 'cocstatus': 'AirlineCocStatus',
|
||||
\ },
|
||||
\ }
|
||||
|
||||
|
||||
function! s:restore()
|
||||
let g:lightline.active = {
|
||||
\ 'left': [ [ 'mode'],
|
||||
\ [ 'bufferline'] ],
|
||||
\ 'right': [['lineinfo'], ['cocstatus']],
|
||||
\ }
|
||||
call lightline#init()
|
||||
call lightline#update()
|
||||
endfunction
|
||||
|
||||
let s:special_ft = ['nerdtree', 'vista']
|
||||
let s:special_bt = ['nofile']
|
||||
function! s:lightlineInit()
|
||||
let g:lightline.active = {
|
||||
\ 'left': [],
|
||||
\ 'right': [],
|
||||
\ }
|
||||
call lightline#init()
|
||||
call lightline#update()
|
||||
echom 'hello'. &bt
|
||||
autocmd WinLeave * ++once call s:restore()
|
||||
endfunction
|
||||
|
||||
" \ 'bufferline': 'lightline#bufferline#buffers'
|
||||
augroup Lightline
|
||||
autocmd!
|
||||
" autocmd BufWinEnter * call s:lightlineInit()
|
||||
" autocmd WinNew * call s:funck()
|
||||
autocmd FileType nerdtree call s:lightlineInit()
|
||||
" autocmd BufWritePost,TextChanged,TextChangedI,BufNew,BufEnter * call lightline#update()
|
||||
augroup END
|
||||
|
||||
function! BufferlineStr()
|
||||
call bufferline#get_echo_string()
|
||||
let s = bufferline#get_status_string()
|
||||
return s
|
||||
endfunction
|
||||
|
||||
function! s:lightline_update()
|
||||
if !exists('g:loaded_lightline')
|
||||
return
|
||||
endif
|
||||
try
|
||||
if g:colors_name =~# 'wombat\|solarized\|landscape\|jellybeans\|seoul256\|Tomorrow'
|
||||
let g:lightline.colorscheme =
|
||||
\ substitute(substitute(g:colors_name, '-', '_', 'g'), '256.*', '', '')
|
||||
call lightline#init()
|
||||
call lightline#colorscheme()
|
||||
call lightline#update()
|
||||
endif
|
||||
catch
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
augroup LightlineColorscheme
|
||||
autocmd!
|
||||
autocmd ColorScheme * call s:lightline_update()
|
||||
augroup END
|
||||
|
||||
function! AirlineCocStatus()
|
||||
if ! exists('*CocAction')
|
||||
return
|
||||
endif
|
||||
let loading = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
|
||||
try
|
||||
let result = CocAction('services')
|
||||
catch
|
||||
" call timer_start(200, {->execute('AirlineRefresh')})
|
||||
return 'no coc '
|
||||
endtry
|
||||
let state = ''
|
||||
let id = ''
|
||||
for e in result
|
||||
if e['languageIds'][0] == &ft
|
||||
let state = e['state']
|
||||
let id = e['id']
|
||||
endif
|
||||
endfor
|
||||
if id == ''
|
||||
return 'no lsp '
|
||||
endif
|
||||
|
||||
" messy way to get time in millisecond in vim
|
||||
let time = float2nr(str2float(reltime()->reltimestr()[4:]) * 1000)
|
||||
let speed = 800
|
||||
let loadidx = time % speed
|
||||
let msg = id
|
||||
if state == "starting"
|
||||
if ! exists('s:cocstatustimer') || len(timer_info(s:cocstatustimer)) == 0
|
||||
let s:cocstatustimer = timer_start(100, {->execute('AirlineRefresh')}, {'repeat': 800})
|
||||
endif
|
||||
return msg . " " . loading[loadidx/(speed/10)] . " "
|
||||
elseif state == "running"
|
||||
if exists('s:cocstatustimer')
|
||||
call timer_stop(s:cocstatustimer)
|
||||
unlet s:cocstatustimer
|
||||
endif
|
||||
return msg . " ✔ "
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
if utils#hasplug('minimap.vim')
|
||||
nnoremap <silent> mm :MinimapToggle<CR>
|
||||
let g:minimap_highlight_search = 1
|
||||
let g:minimap_git_colors = 1
|
||||
let g:minimap_enable_highlight_colorgroup = 1
|
||||
let g:minimap_block_filetypes = ['fugitive', 'nvim-tree', 'tagbar', 'fzf', 'telescope', 'NvimTree', 'nerdtree']
|
||||
let g:minimap_block_buftypes = ['help', 'nerdtree', 'nofile', 'nowrite', 'quickfix', 'terminal', 'prompt', 'NvimTree']
|
||||
let g:minimap_close_filetypes = ['startify', 'netrw', 'vim-plug', 'NvimTree']
|
||||
let g:minimap_range_color = 'Visual'
|
||||
let g:minimap_cursor_color = 'Cursor'
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
if utils#hasplug('nerdtree')
|
||||
if utils#hasplug('vim-nerdtree-syntax-highlight')
|
||||
let g:NERDTreeLimitedSyntax = 1
|
||||
endif
|
||||
let g:NERDShutUp=1
|
||||
|
||||
" work around for nerdtree bug: https://github.com/preservim/nerdtree/issues/1321
|
||||
let g:NERDTreeMinimalMenu = v:true
|
||||
let g:NERDTreeMinimalUI = v:true
|
||||
|
||||
function! NERDTreeFindToggle()
|
||||
let has_nerdtree = 0
|
||||
let winfo = getwininfo()
|
||||
for obj in winfo
|
||||
let bufnr = obj['bufnr']
|
||||
let ft = getbufvar(bufnr, '&filetype')
|
||||
if ft == 'nerdtree'
|
||||
let has_nerdtree = 1
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
if has_nerdtree
|
||||
:NERDTreeClose
|
||||
else
|
||||
" we cannot use NERDTreeFind on startify as it is not a file
|
||||
if &ft == 'startify' || &ft == ''
|
||||
:NERDTreeToggle
|
||||
else
|
||||
:NERDTreeFind
|
||||
" NERDTreeToggleVCS
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
nnoremap <silent> <leader>e :call NERDTreeFindToggle()<CR>
|
||||
|
||||
"let NERDTreeShowBookmarks=1
|
||||
let NERDTreeChDirMode = 0
|
||||
let NERDTreeQuitOnOpen = 1
|
||||
let NERDTreeMouseMode = 2
|
||||
let NERDTreeShowHidden = 1
|
||||
|
||||
" remapping
|
||||
let g:NERDTreeMapOpenExpl = ''
|
||||
if utils#hasplug('vim-devicons') || utils#hasplug('nerdfont.vim')
|
||||
let NERDTreeDirArrowCollapsible = ''
|
||||
let NERDTreeDirArrowExpandable = ''
|
||||
else
|
||||
" let NERDTreeDirArrowCollapsible = ''
|
||||
" let NERDTreeDirArrowExpandable = ''
|
||||
endif
|
||||
" Exit Vim if NERDTree is the only window remaining in the only tab.
|
||||
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
|
||||
endif
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
if utils#hasplug('papercolor-theme')
|
||||
function! CB_dark_tb_enable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.dark': { 'transparent_background': 1 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
function! CB_light_tb_enable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.light': { 'transparent_background': 1 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
function! CB_dark_tb_disable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.dark': { 'transparent_background': 0 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
function! CB_light_tb_disable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.light': { 'transparent_background': 0 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
if utils#hasplug('tagbar')
|
||||
let g:tagbar_width = 30
|
||||
let g:tagbar_sort = 0
|
||||
let g:tagbar_compact = 2
|
||||
let g:tagbar_autoshowtag = 1
|
||||
let g:tagbar_foldlevel = 99
|
||||
let g:tagbar_no_status_line = 1
|
||||
let g:tagbar_visibility_symbols = {
|
||||
\ 'public' : '+',
|
||||
\ 'protected' : '#',
|
||||
\ 'private' : '-'
|
||||
\ }
|
||||
nnoremap <silent> <leader>v <cmd>TagbarToggle<CR>
|
||||
endif
|
||||
@@ -0,0 +1,159 @@
|
||||
|
||||
if utils#hasplug("vim-airline")
|
||||
|
||||
" Extensions
|
||||
function! AirlineCocStatus()
|
||||
if ! exists('*CocAction')
|
||||
return
|
||||
endif
|
||||
let loading = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
|
||||
try
|
||||
let result = CocAction('services')
|
||||
catch
|
||||
" call timer_start(200, {->execute('AirlineRefresh')})
|
||||
return 'no coc '
|
||||
endtry
|
||||
let state = ''
|
||||
let id = ''
|
||||
for e in result
|
||||
if e['languageIds'][0] == &ft
|
||||
let state = e['state']
|
||||
let id = e['id']
|
||||
endif
|
||||
endfor
|
||||
if id == ''
|
||||
return 'no lsp '
|
||||
endif
|
||||
|
||||
" messy way to get time in millisecond in vim
|
||||
let time = float2nr(str2float(reltime()->reltimestr()[4:]) * 1000)
|
||||
let speed = 800
|
||||
let loadidx = time % speed
|
||||
let msg = id
|
||||
if state == "starting"
|
||||
if ! exists('s:cocstatustimer') || len(timer_info(s:cocstatustimer)) == 0
|
||||
let s:cocstatustimer = timer_start(100, {->execute('AirlineRefresh')}, {'repeat': 800})
|
||||
endif
|
||||
return msg . " " . loading[loadidx/(speed/10)] . " "
|
||||
elseif state == "running"
|
||||
if exists('s:cocstatustimer')
|
||||
call timer_stop(s:cocstatustimer)
|
||||
unlet s:cocstatustimer
|
||||
endif
|
||||
return msg . " ✔ "
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! AirlineBufferNumber()
|
||||
return len(g:index_to_buffer)
|
||||
endfunction
|
||||
|
||||
" This must use my fork version of bufferline
|
||||
" the number of cols bufferline cannot use out of max of screen cols
|
||||
let g:bufferline_forbided_col = 32
|
||||
|
||||
let g:airline_experimental = g:vim_v >= 900 ? 1 : 0
|
||||
|
||||
function! AirlineInit()
|
||||
" call airline#parts#define_function('bufnum', 'AirlineBufferNumber')
|
||||
call airline#parts#define_function('cocstatus', 'AirlineCocStatus')
|
||||
call airline#parts#define_minwidth('mode', 10)
|
||||
let _airline_section_y = ''
|
||||
if utils#hasplug('coc.nvim')
|
||||
" let _airline_section_y = airline#section#create(['cocstatus'])
|
||||
endif
|
||||
let g:airline_section_a = airline#section#create(['mode'])
|
||||
let g:airline_section_b = ''
|
||||
let g:airline_section_error = ''
|
||||
let g:airline_section_warning = ''
|
||||
" let g:airline_section_x = airline#section#create(['bufnum'])
|
||||
let g:airline_section_x = ''
|
||||
let g:airline_section_y = _airline_section_y
|
||||
let g:airline_section_z = airline#section#create(['cocstatus', '│ ', '%(%l:%c%)'])
|
||||
|
||||
endfunction
|
||||
|
||||
function! AirlineColouriseSplits()
|
||||
" get rid of the vertical split between two windows in statusline
|
||||
hi! link StatusLine airline_z
|
||||
hi! link StatusLineNC airline_z_inactive
|
||||
endfunction
|
||||
|
||||
augroup AirlineAu
|
||||
autocmd!
|
||||
autocmd ColorScheme * call AirlineColouriseSplits()
|
||||
autocmd User AirlineAfterInit ++once call AirlineInit()
|
||||
augroup end
|
||||
|
||||
" let g:airline_left_sep = ''
|
||||
" let g:airline_left_alt_sep = ''
|
||||
" let g:airline_right_sep = ''
|
||||
" let g:airline_right_alt_sep = ''
|
||||
|
||||
function s:airline_refresh(...)
|
||||
" this has to be set late otherwise it will cause 'mode' extension be
|
||||
" skipped at startup
|
||||
let g:airline_skip_empty_sections = 1
|
||||
endfunction
|
||||
call RegisterLateInit(function('s:airline_refresh'), 1)
|
||||
|
||||
" let g:airline_skip_empty_sections = 1
|
||||
|
||||
let g:airline_inactive_collapse = 1
|
||||
let g:airline_focuslost_inactive = 0
|
||||
let g:airline_extensions = ['bufferline']
|
||||
|
||||
let g:airline_filetype_overrides = {
|
||||
\ 'vista': ['Vista', ''],
|
||||
\ 'minimap': ['', ''],
|
||||
\ 'nerdtree': [ get(g:, 'NERDTreeStatusline', 'NERD'), ''],
|
||||
\ }
|
||||
|
||||
" hide airline in startify
|
||||
function! HideStartify(...)
|
||||
let ctx = a:2
|
||||
if ! ctx.active
|
||||
return 1
|
||||
end
|
||||
if &filetype == 'startify'
|
||||
let builder = a:1
|
||||
call builder.add_section('Normal', '')
|
||||
return 1
|
||||
endif
|
||||
if &filetype == 'help'
|
||||
let builder = a:1
|
||||
call builder.add_section('airline_a_bold', ' Help ')
|
||||
call builder.add_section('airline_c', ' %f')
|
||||
return 1
|
||||
endif
|
||||
|
||||
endfunction
|
||||
call airline#add_statusline_func('HideStartify')
|
||||
|
||||
" " without this airline will overwrite some setting like bufferline_active_buffer_left, etc.
|
||||
let g:airline#extensions#bufferline#overwrite_variables = 0
|
||||
" call theme#addTransGroup(['airline_c', 'airline_c_bold'])
|
||||
" let g:airline_mode_map = {
|
||||
" \ '__' : '-',
|
||||
" \ 'c' : 'C',
|
||||
" \ 'i' : 'I',
|
||||
" \ 'ic' : 'I',
|
||||
" \ 'ix' : 'I',
|
||||
" \ 'n' : 'N',
|
||||
" \ 'multi' : 'M',
|
||||
" \ 'ni' : 'N',
|
||||
" \ 'no' : 'N',
|
||||
" \ 'R' : 'R',
|
||||
" \ 'Rv' : 'R',
|
||||
" \ 's' : 'S',
|
||||
" \ 'S' : 'S',
|
||||
" \ '' : 'S',
|
||||
" \ 't' : 'T',
|
||||
" \ 'v' : 'V',
|
||||
" \ 'V' : 'V',
|
||||
" \ '' : 'V',
|
||||
" \ }
|
||||
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
if utils#hasplug("vim-bufferline")
|
||||
let g:bufferline_echo = 0
|
||||
let g:bufferline_modified = '+'
|
||||
|
||||
" scrolling with fixed current buffer position
|
||||
|
||||
let g:bufferline_active_buffer_left = '['
|
||||
let g:bufferline_active_buffer_right = ']'
|
||||
if utils#hasplug("vim-airline")
|
||||
let g:bufferline_inactive_highlight = 'airline_c'
|
||||
let g:bufferline_active_highlight = 'airline_c_bold'
|
||||
elseif ! utils#hasplug("vim-global-statusline")
|
||||
call bufferline#init_echo()
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
if utils#hasplug("vim-devicons")
|
||||
let g:webdevicons_enable_airline_statusline = 0
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
|
||||
if utils#hasplug('vim-floaterm')
|
||||
let g:floaterm_keymap_toggle = '<C-\>'
|
||||
let g:floaterm_wintype = 'float'
|
||||
let g:floaterm_position = 'bottomright'
|
||||
let g:floaterm_width = 0.5
|
||||
let g:floaterm_height = 0.5
|
||||
let g:floaterm_autohide = 2
|
||||
|
||||
call theme#addCleanBg(['FloatermBorder', 'Floaterm'])
|
||||
|
||||
autocmd QuitPre * :FloatermKill!<CR>
|
||||
|
||||
" press <c-[> ener normal mode in terminal. autocmd prevent this key map
|
||||
" in other plugin like fzf
|
||||
autocmd FileType floaterm tmap <buffer> <C-[> <C-w>N
|
||||
|
||||
function! s:hasterm(name)
|
||||
let bufs = floaterm#buflist#gather()
|
||||
for bufnr in bufs
|
||||
let bufinfo = getbufinfo(bufnr)[0]
|
||||
let termname = bufinfo['variables']['floaterm_name']
|
||||
if termname == a:name
|
||||
return v:true
|
||||
endif
|
||||
endfor
|
||||
return v:false
|
||||
endfunction
|
||||
|
||||
function! ToggleRepl()
|
||||
let name = 'REPL'
|
||||
let currentWindow=winnr()
|
||||
if s:hasterm(name)
|
||||
execute('FloatermToggle ' . name)
|
||||
else
|
||||
:FloatermNew --name=REPL --width=0.5 --wintype=vsplit --position=botright --autoclose=2 ipython
|
||||
endif
|
||||
exe currentWindow . "wincmd w"
|
||||
endfunction
|
||||
|
||||
function! ToggleNormal()
|
||||
let name = 'normalterm'
|
||||
if s:hasterm(name)
|
||||
execute('FloatermToggle ' . name)
|
||||
else
|
||||
:FloatermNew --name=normalterm --width=0.5 --height=0.5 --wintype=float --position=bottomright --autoclose=2
|
||||
endif
|
||||
endfunction
|
||||
|
||||
nnoremap <silent> <leader>tp :call ToggleRepl()<CR>
|
||||
nnoremap <silent> <leader>tn :call ToggleNormal()<CR>
|
||||
vnoremap <silent> <leader>tl :FloatermSend --name=REPL<CR>
|
||||
endif
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
if utils#hasplug('vim-gitgutter')
|
||||
call theme#addCleanBg(['GitGutterAdd', 'GitGutterChange', 'GitGutterDelete', 'GitGutterChangeDelete'])
|
||||
nnoremap <leader>gt :GitGutterBufferToggle<CR>
|
||||
endif
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
if utils#hasplug("vim-gutentags")
|
||||
if exists("*gutentags#statusline()")
|
||||
set statusline+=%{gutentags#statusline()}
|
||||
endif
|
||||
let g:gutentags_trace = 1
|
||||
let g:gutentags_cache_dir=g:vim_dir . '/.vimtags/'
|
||||
let g:gutentags_project_root=['.git', '.hg', '.svn', '.bzr', '_darcs', '_FOSSIL_', '.fslckout', 'src']
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
if utils#hasplug('vim-illuminate') && g:vim_type == 'vim' " nvim doesn't need this config
|
||||
let g:Illuminate_highlightUnderCursor = 1
|
||||
let g:Illuminate_ftHighlightGroups = {
|
||||
\ 'vim:blacklist': ['vimLet', 'vimFuncKey', 'vimNotFunc', 'vimOperParen', 'vimLineComment'],
|
||||
\ 'java:blacklist' : [ 'javaType', 'javaScopeDecl', 'javaMethodDecl',
|
||||
\ 'javaComment', 'javaStorageClass', 'javaClassDecl', 'javaExternal',
|
||||
\ 'javaTypedef', 'javaLineComment', 'javaStatement', 'javaCommentTitle', 'javaDocComment' ],
|
||||
\ 'lua:blacklist' : [ 'luaComment', 'luaCond', 'luaStatement', 'luaFunction' ]
|
||||
\ }
|
||||
let g:Illuminate_ftwhitelist = ['vim', 'sh', 'python', 'rust', 'java',
|
||||
\ 'c', 'cpp', 'javascript', 'typescript', 'lua']
|
||||
|
||||
" ugly workaround for the bug that illuminate not working after first enter vim
|
||||
" {
|
||||
function s:init_illuminate(...)
|
||||
let bgType = theme#getBgType()
|
||||
let bg = theme#getHiTerm('Visual', bgType)
|
||||
if bg != 'NONE' && &bg == 'dark'
|
||||
execute('hi illuminatedWord '.bgType.'='.bg)
|
||||
execute('hi illuminatedCurWord '.bgType.'='.bg)
|
||||
else
|
||||
hi illuminatedWord cterm=underline gui=underline
|
||||
hi illuminatedCurWord cterm=underline gui=underline
|
||||
end
|
||||
endfunction
|
||||
call RegisterLateInit(function('s:init_illuminate'), 0)
|
||||
" }
|
||||
|
||||
augroup illuminate_augroup
|
||||
autocmd!
|
||||
autocmd ColorScheme * call s:init_illuminate()
|
||||
augroup END
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
if utils#hasplug('vim-matchup')
|
||||
let g:matchup_matchparen_offscreen = {}
|
||||
call theme#addCleanBg('MatchWord')
|
||||
endif
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
if utils#hasplug("vim-rooter")
|
||||
let g:rooter_patterns = ['.vscode', '.git', '*.sln', 'src']
|
||||
let g:rooter_change_directory_for_non_project_files = ''
|
||||
let g:rooter_silent_chdir = 0
|
||||
" let g:rooter_manual_only = 1
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
if utils#hasplug("vim-sneak")
|
||||
let g:sneak#label = 1
|
||||
" map f <Plug>Sneak_s
|
||||
" map F <Plug>Sneak_S
|
||||
endif
|
||||
@@ -0,0 +1,58 @@
|
||||
|
||||
if utils#hasplug("vim-startify")
|
||||
if has('nvim')
|
||||
let buffer_str_len = (&columns - 60) / 2
|
||||
let buf_str = repeat(' ', buffer_str_len)
|
||||
let ascii_art = [
|
||||
\ buf_str . '',
|
||||
\ buf_str . '',
|
||||
\ buf_str . ' __ __ ________ ______ __ __ ______ __ __ ',
|
||||
\ buf_str . '| \ | \| \ / \ | \ | \| \| \ / \',
|
||||
\ buf_str . '| $$\ | $$| $$$$$$$$| $$$$$$\| $$ | $$ \$$$$$$| $$\ / $$',
|
||||
\ buf_str . '| $$$\| $$| $$__ | $$ | $$| $$ | $$ | $$ | $$$\ / $$$',
|
||||
\ buf_str . '| $$$$\ $$| $$ \ | $$ | $$ \$$\ / $$ | $$ | $$$$\ $$$$',
|
||||
\ buf_str . '| $$\$$ $$| $$$$$ | $$ | $$ \$$\ $$ | $$ | $$\$$ $$ $$',
|
||||
\ buf_str . '| $$ \$$$$| $$_____ | $$__/ $$ \$$ $$ _| $$_ | $$ \$$$| $$',
|
||||
\ buf_str . '| $$ \$$$| $$ \ \$$ $$ \$$$ | $$ \| $$ \$ | $$',
|
||||
\ buf_str . ' \$$ \$$ \$$$$$$$$ \$$$$$$ \$ \$$$$$$ \$$ \$$',
|
||||
\]
|
||||
else
|
||||
let buffer_str_len = (&columns - 30) / 2
|
||||
let buf_str = repeat(' ', buffer_str_len)
|
||||
let ascii_art = [
|
||||
\ buf_str . '',
|
||||
\ buf_str . '',
|
||||
\ buf_str . ' __ __ ______ __ __ ',
|
||||
\ buf_str . '| \ | \| \| \ / \',
|
||||
\ buf_str . '| $$ | $$ \$$$$$$| $$\ / $$',
|
||||
\ buf_str . '| $$ | $$ | $$ | $$$\ / $$$',
|
||||
\ buf_str . ' \$$\ / $$ | $$ | $$$$\ $$$$',
|
||||
\ buf_str . ' \$$\ $$ | $$ | $$\$$ $$ $$',
|
||||
\ buf_str . ' \$$ $$ _| $$_ | $$ \$$$| $$',
|
||||
\ buf_str . ' \$$$ | $$ \| $$ \$ | $$',
|
||||
\ buf_str . ' \$ \$$$$$$ \$$ \$$',
|
||||
\]
|
||||
endif
|
||||
|
||||
let g:startify_padding_left = &columns / 2 - &columns / 4 - &columns / 8
|
||||
let g:startify_custom_header = ascii_art
|
||||
let g:startify_change_to_dir = 0
|
||||
let g:startify_files_number = 5
|
||||
|
||||
let g:startify_bookmarks = [ g:dotfiledir . 'main.vim' ]
|
||||
let g:startify_lists = [
|
||||
\ { 'header': startify#pad([' RECENT']), 'type': 'files' },
|
||||
\ { 'header': startify#pad([' SESSIONS']), 'type': 'sessions' },
|
||||
\ { 'header': startify#pad([' BOOKMARKS']), 'type': 'bookmarks' },
|
||||
\ ]
|
||||
|
||||
" session related KeyBinding. These KeyBinding uses function from startify
|
||||
nnoremap <silent> <leader><leader>s :SSave!<CR>
|
||||
nnoremap <silent> <leader><leader>l :SLoad<CR>
|
||||
nnoremap <silent> <leader><leader>d :SDelete!<CR>
|
||||
nnoremap <silent> <leader><leader>c :SClose<CR>
|
||||
|
||||
au VimLeave * SSave! last
|
||||
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
if utils#hasplug('vim-tmux-navigator')
|
||||
let g:tmux_navigator_no_mappings = 1
|
||||
|
||||
noremap <silent> <c-h> :<C-U>TmuxNavigateLeft<cr>
|
||||
noremap <silent> <c-j> :<C-U>TmuxNavigateDown<cr>
|
||||
noremap <silent> <c-k> :<C-U>TmuxNavigateUp<cr>
|
||||
noremap <silent> <c-l> :<C-U>TmuxNavigateRight<cr>
|
||||
" noremap <silent> {Previous-Mapping} :<C-U>TmuxNavigatePrevious<cr>
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
vim9script
|
||||
|
||||
if utils#hasplug('fuzzyy')
|
||||
g:files_respect_gitignore = 1
|
||||
g:fuzzyy_menu_matched_hl = 'error'
|
||||
g:fuzzyy_dropdown = 1
|
||||
endif
|
||||
@@ -0,0 +1,188 @@
|
||||
vim9script
|
||||
|
||||
if utils#hasplug('vim-global-statusline')
|
||||
|
||||
g:stl_nonbtbg = 'folded'
|
||||
g:stl_bg = 'normal'
|
||||
g:bufferline_forbided_col = 32
|
||||
|
||||
def ReverseHl(name: string, hl: string)
|
||||
var hl_terms = theme#getHiTerms(hl)
|
||||
var normal_terms = theme#getHiTerms('normal')
|
||||
for [term, val] in items(hl_terms)
|
||||
if val == 'NONE'
|
||||
hl_terms[term] = normal_terms[term]
|
||||
endif
|
||||
endfor
|
||||
exe 'hi ' .. name .. ' guibg=' .. hl_terms['guifg'] .. ' guifg='
|
||||
.. hl_terms['guibg'] .. ' ctermbg=' .. hl_terms['ctermfg']
|
||||
.. ' ctermfg=' .. hl_terms['ctermbg']
|
||||
enddef
|
||||
|
||||
def StlHighlight()
|
||||
hi normalModeGstl cterm=reverse gui=reverse
|
||||
ReverseHl('insertModeGstl', 'function')
|
||||
ReverseHl('visualModeGstl', 'statement')
|
||||
ReverseHl('commandModeGstl', 'number')
|
||||
enddef
|
||||
autocmd ColorScheme * StlHighlight()
|
||||
var mode_color = {
|
||||
n: 'normalModeGstl',
|
||||
i: 'insertModeGstl',
|
||||
v: 'visualModeGstl',
|
||||
V: 'visualModeGstl',
|
||||
c: 'commandModeGstl',
|
||||
}
|
||||
var mode_str = {
|
||||
n: ' NORMAL ',
|
||||
i: ' INSERT ',
|
||||
v: ' VISUAL ',
|
||||
V: ' V-LINE ',
|
||||
c: ' COMMAND ',
|
||||
}
|
||||
mode_str[nr2char(22)] = ' V-BLOCK '
|
||||
mode_color[nr2char(22)] = 'curSearch'
|
||||
def Modestr(): void
|
||||
var m = mode()
|
||||
if has_key(mode_str, m)
|
||||
g:StlSetPart(0, mode_str[m], mode_color[m], 'mode')
|
||||
else
|
||||
echom char2nr(m)
|
||||
g:StlSetPart(0, ' ' .. &ft .. ' ', 'TabLineSel', 'mode')
|
||||
endif
|
||||
g:StlRefresh()
|
||||
enddef
|
||||
|
||||
def Fnstr(): void
|
||||
g:StlSetPart(10, 'filename: ' .. bufname(), '', 'filename')
|
||||
g:StlRefresh()
|
||||
enddef
|
||||
|
||||
def Bufstr(): void
|
||||
var bufstr = bufferline#get_echo_string()
|
||||
g:StlSetPart(9, ' ' .. bufstr, '', 'bufstr')
|
||||
g:StlRefresh()
|
||||
enddef
|
||||
|
||||
def Lncol(): void
|
||||
var col = virtcol(".")
|
||||
var ln = line('.')
|
||||
var m = mode()
|
||||
var color = ''
|
||||
if has_key(mode_color, m)
|
||||
color = mode_color[m]
|
||||
else
|
||||
color = 'TabLineSel'
|
||||
endif
|
||||
g:StlSetPart(&co - 9, printf(" %d:%d", ln, col), color, 'linenr')
|
||||
g:StlRefresh()
|
||||
enddef
|
||||
|
||||
var cocstatustimer = -1
|
||||
|
||||
def Cocstatus(): string
|
||||
const loading = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
|
||||
var results = []
|
||||
var result = '𐄂'
|
||||
var fticon = '𐄂'
|
||||
try
|
||||
if exists('g:CocAction')
|
||||
results = g:CocAction('services')
|
||||
endif
|
||||
catch
|
||||
endtry
|
||||
var state = ''
|
||||
var id = ''
|
||||
if len(results) == 0
|
||||
timer_start(100, function(Lsp))
|
||||
endif
|
||||
for e in results
|
||||
if e['languageIds'][0] == &ft
|
||||
state = e['state']
|
||||
id = e['id']
|
||||
endif
|
||||
endfor
|
||||
|
||||
# messy way to get time in millisecond in vim
|
||||
var time = float2nr(str2float(reltime()->reltimestr()[4 : ]) * 1000)
|
||||
var speed = 800
|
||||
var loadidx = time % speed
|
||||
var msg = id
|
||||
if state == "starting"
|
||||
if len(timer_info(cocstatustimer)) == 0
|
||||
cocstatustimer = timer_start(100, function(Lsp), {'repeat': 800})
|
||||
endif
|
||||
fticon = loading[loadidx / (speed / 10)]
|
||||
elseif state == "running"
|
||||
if len(timer_info(cocstatustimer)) != 0
|
||||
timer_stop(cocstatustimer)
|
||||
cocstatustimer = -1
|
||||
endif
|
||||
if exists('g:WebDevIconsGetFileTypeSymbol')
|
||||
fticon = g:WebDevIconsGetFileTypeSymbol()
|
||||
endif
|
||||
endif
|
||||
# return fticon .. ' ' .. result
|
||||
return 'lsp ' .. fticon
|
||||
enddef
|
||||
|
||||
def Lsp(...timer: list<any>): void
|
||||
var s = Cocstatus()
|
||||
g:StlSetPart(&co - 17, ' ' .. s .. ' ', '', 'lsp')
|
||||
g:StlRefresh()
|
||||
enddef
|
||||
|
||||
var fancytimer = 0
|
||||
def Fancy(...timer: list<any>): void
|
||||
var expressions = [' (◕_◕)', ' (◕‿◕)', '\(◕◡◕\)', ' (◣_◢)', ' (◣‿◢)', '\(◣◡◣\)', ' (◠‿◠)', ' (◠_◠)', '\(◠◡◠\)', ' (◡‿◡)', ' (◡_◡)', '\(◡◡◡\)', ' (┳Д┳)', ' (个_个)', ' ( ≧Д≦)', ' 흫_흫', ' 句_句']
|
||||
|
||||
# var letters = [𝔞 𝔟 𝔠 𝔡 𝔢 𝔣 𝔤 𝔥 𝔦 𝔧 𝔨 𝔩 𝔪 𝔫 𝔬 𝔭 𝔮 𝔯 𝔰 𝔱 𝔲 𝔳 𝔴 𝔵 𝔶 𝔷]
|
||||
|
||||
# string "I love you" using unicode letters
|
||||
var lang = ''
|
||||
if &ft == 'python'
|
||||
lang = '𝕻𝖞𝖙𝖍𝖔𝖓'
|
||||
elseif &ft == 'java'
|
||||
lang = '𝕵𝖆𝖛𝖆'
|
||||
elseif &ft == 'javascript'
|
||||
lang = '𝕵𝖆𝖛𝖆𝖘𝖈𝖗𝖎𝖕𝖙'
|
||||
elseif &ft == 'lua'
|
||||
lang = '𝕷𝖚𝖆'
|
||||
elseif &ft == 'vim'
|
||||
lang = '𝓥𝓲𝓶 𝓢𝓬𝓻𝓲𝓹𝓽'
|
||||
else
|
||||
lang = &ft
|
||||
endif
|
||||
var str = lang .. ' 𝔦𝔰 𝔱𝔥𝔢 𝔟𝔢𝔰𝔱 𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢'
|
||||
|
||||
# fancytimer = (fancytimer + 1) % len(str)
|
||||
g:StlSetPart(&co - 27 - strcharlen(str), str, '', 'fancy')
|
||||
enddef
|
||||
|
||||
def Theme(): void
|
||||
# const light = '☀'
|
||||
# const dark = '☽'
|
||||
const light = '🌕'
|
||||
const dark = '🌑'
|
||||
var theme = &bg == 'light' ? light : dark
|
||||
g:StlSetPart(&co - 23, '│ ' .. theme, '', 'bgc')
|
||||
g:StlRefresh()
|
||||
enddef
|
||||
|
||||
def EnterInit(): void
|
||||
# Theme()
|
||||
Lncol()
|
||||
Lsp()
|
||||
# autocmd GlobalStl ColorScheme * Theme()
|
||||
enddef
|
||||
|
||||
augroup GlobalStl
|
||||
autocmd!
|
||||
autocmd VimEnter,ModeChanged * Modestr() | Lncol()
|
||||
autocmd BufEnter,BufDelete,BufWritePost * Bufstr() | Modestr()
|
||||
autocmd CursorHold * Lncol()
|
||||
autocmd BufEnter,BufReadPost * Lsp()
|
||||
autocmd VimEnter * EnterInit()
|
||||
augroup END
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,7 @@
|
||||
if utils#hasplug('vimtex')
|
||||
noremap <leader>lc :VimtexCompile<CR>
|
||||
noremap <leader>lv :VimtexView<CR>
|
||||
if g:os == 'Darwin'
|
||||
let g:vimtex_view_method = 'skim'
|
||||
endif
|
||||
endif
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
if utils#hasplug('vista.vim')
|
||||
let g:vista_default_executive = 'vim_lsp'
|
||||
if utils#hasplug('coc.nvim')
|
||||
let g:vista_default_executive = 'coc'
|
||||
elseif executable('ctags')
|
||||
let g:vista_default_executive = 'ctags'
|
||||
endif
|
||||
nnoremap <silent> <leader>v :Vista!!<CR>
|
||||
let g:vista_cursor_delay = 0
|
||||
let g:vista_echo_cursor = 0
|
||||
let g:vista_echo_cursor_strategy = 'floating_win'
|
||||
let g:vista_close_on_jump = 0
|
||||
let g:vista_floating_delay = 0
|
||||
let g:vista_ignore_kinds = ['Variable', 'Field', 'EnumMember',
|
||||
\ 'String', 'Object', 'Array', 'Constant', 'Package', 'Boolean', 'Number'
|
||||
\ ]
|
||||
let g:vista_floating_border = 'rounded'
|
||||
let g:vista_disable_statusline = 1
|
||||
" let g:vista_keep_fzf_colors = 1
|
||||
let g:vista_update_on_text_changed_delay = 0
|
||||
let g:vista_update_on_text_changed = 1
|
||||
let g:vista#renderer#enable_kind = 1
|
||||
let g:vista#renderer#enable_icon = 1
|
||||
|
||||
" return to last position of vista
|
||||
let g:vista_last_row = v:null
|
||||
function! VistaCursorJump()
|
||||
" let found = vista#util#BinarySearch(g:vista.raw, line('.'), 'line', '')
|
||||
let found = g:vista_last_row
|
||||
if empty(found)
|
||||
return
|
||||
endif
|
||||
let vlnum = get(found, 'vlnum', v:null)
|
||||
call cursor(vlnum, 3)
|
||||
endfunction
|
||||
|
||||
" save tag for VistaCursorJump use
|
||||
function! VistaH2()
|
||||
if exists('*vista#util#BinarySearch')
|
||||
let bufs = map(filter(copy(getbufinfo()), 'v:val.listed'), 'v:val.bufnr')
|
||||
if index(bufs, bufnr('%')) < 0
|
||||
return
|
||||
endif
|
||||
let found = vista#util#BinarySearch(g:vista.raw, line('.'), 'line', '')
|
||||
if empty(found)
|
||||
return
|
||||
endif
|
||||
let g:vista_last_row = found
|
||||
endif
|
||||
endfunction
|
||||
|
||||
augroup VistaAu
|
||||
autocmd!
|
||||
autocmd BufLeave * call VistaH2()
|
||||
autocmd FileType vista call VistaCursorJump()
|
||||
augroup END
|
||||
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
if utils#hasplug('wilder.nvim')
|
||||
|
||||
call wilder#setup({
|
||||
\ 'modes': [':'],
|
||||
\ 'next_key': '<tab>',
|
||||
\ 'previous_key': '<S-Tab>',
|
||||
\ 'enable_cmdline_enter': 0,
|
||||
\ })
|
||||
|
||||
call wilder#set_option('pipeline', [
|
||||
\ wilder#debounce(10),
|
||||
\ wilder#branch(
|
||||
\ wilder#cmdline_pipeline({'language': g:vim_type == 'nvim' ? 'python' : 'vim'}),
|
||||
\ ),
|
||||
\ ])
|
||||
|
||||
if g:vim_type == 'vim'
|
||||
call wilder#set_option('renderer', wilder#popupmenu_renderer())
|
||||
else
|
||||
call wilder#set_option('renderer', wilder#popupmenu_renderer(
|
||||
\ wilder#popupmenu_border_theme({
|
||||
\ 'highlights': {
|
||||
\ 'default': 'Normal',
|
||||
\ },
|
||||
\ 'pumblend': 20,
|
||||
\ 'border': 'rounded',
|
||||
\ })))
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
if utils#hasplug("winresizer")
|
||||
let g:winresizer_vert_resize = 2
|
||||
let g:winresizer_horiz_resize = 2
|
||||
" nnoremap <C-w>r :WinResizerStartResize<CR>
|
||||
let g:winresizer_start_key = '<C-w>r'
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
if utils#hasplug("zoxide.vim")
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user