feat(revamp): add zsh and neovim configs, add an install script and a dependencies list
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
*.zwc
|
||||||
|
.zcompdump*
|
||||||
|
.zsh_history
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "zsh/.zprezto"]
|
||||||
|
path = zsh/.zprezto
|
||||||
|
url = https://github.com/sorin-ionescu/prezto.git
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# System Dependencies
|
||||||
|
|
||||||
|
## Core
|
||||||
|
|
||||||
|
| Tool | Arch | Debian/Ubuntu | Fedora | Notes |
|
||||||
|
|------|------|---------------|--------|-------|
|
||||||
|
| git | git | git | git | |
|
||||||
|
| zsh | zsh | zsh | zsh | |
|
||||||
|
| neovim | neovim | neovim | neovim | 0.9+ required |
|
||||||
|
| ripgrep | ripgrep | ripgrep | ripgrep | fzf-lua, grug-far |
|
||||||
|
| fd | fd | fd-find | fd-find | fzf-lua |
|
||||||
|
| fzf | fzf | fzf | fzf | |
|
||||||
|
| a Nerd Font | ttf-firacode-nerd | fonts-firacode | fira-code-fonts | nvim-web-devicons, lualine |
|
||||||
|
|
||||||
|
## Neovim LSPs and tools (mason is disabled)
|
||||||
|
|
||||||
|
| Tool | Arch | Debian/Ubuntu | Fedora | Notes |
|
||||||
|
|------|------|---------------|--------|-------|
|
||||||
|
| clangd | clang | clangd | clang-tools-extra | C/C++ LSP |
|
||||||
|
| rust-analyzer | rust-analyzer | rust-analyzer | rust-analyzer | Rust LSP (rustaceanvim) |
|
||||||
|
| lua-language-server | lua-language-server | — | — | `cargo install` or GitHub release |
|
||||||
|
| stylua | stylua | — | — | `cargo install stylua` |
|
||||||
|
| cmake | cmake | cmake | cmake | cmake-tools.nvim |
|
||||||
|
|
||||||
|
## Typst support (optional)
|
||||||
|
|
||||||
|
| Tool | Arch | Debian/Ubuntu | Fedora | Notes |
|
||||||
|
|------|------|---------------|--------|-------|
|
||||||
|
| tinymist | tinymist | — | — | `cargo install tinymist` |
|
||||||
|
| websocat | websocat | — | — | `cargo install websocat` or GitHub release |
|
||||||
|
|
||||||
|
Packages marked — are not in the default repos; install via `cargo install` or from GitHub releases.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
tt.*
|
||||||
|
.tests
|
||||||
|
doc/tags
|
||||||
|
debug
|
||||||
|
.repro
|
||||||
|
foo.*
|
||||||
|
*.log
|
||||||
|
data
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"neodev": {
|
||||||
|
"library": {
|
||||||
|
"enabled": true,
|
||||||
|
"plugins": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"neoconf": {
|
||||||
|
"plugins": {
|
||||||
|
"lua_ls": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# 💤 LazyVim
|
||||||
|
|
||||||
|
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||||
|
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||||
|
require("config.lazy")
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"LazyVim": { "branch": "main", "commit": "83d90f339defdb109a6ede333865a66ffc7ef6aa" },
|
||||||
|
"SchemaStore.nvim": { "branch": "main", "commit": "250aed7415ddd6cb3ea321490c7b35094ed9148d" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
|
||||||
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
|
"catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" },
|
||||||
|
"clangd_extensions.nvim": { "branch": "main", "commit": "78c2ecd659d54972be17aa6ba2deac3c53223b80" },
|
||||||
|
"cmake-tools.nvim": { "branch": "master", "commit": "bac6ba2354a52c61f731c751cdb0f4e24669bf0d" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" },
|
||||||
|
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||||
|
"fzf-lua": { "branch": "main", "commit": "834246377489f9a1e6d4df570a7874a48c644b56" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
|
||||||
|
"grug-far.nvim": { "branch": "main", "commit": "21604255d0e8f9968322f61f2b6c09e5efe1285a" },
|
||||||
|
"gruvbox.nvim": { "branch": "main", "commit": "154eb5ff5b96d0641307113fa385eaf0d36d9796" },
|
||||||
|
"hex.nvim": { "branch": "master", "commit": "b46e63356a69e8d6f046c38a9708d55d17f15038" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||||
|
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" },
|
||||||
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
||||||
|
"matchparen.nvim": { "branch": "main", "commit": "1a2dcbd026bf99b20b89345883d54823f80a2bee" },
|
||||||
|
"mini.ai": { "branch": "main", "commit": "43eb2074843950a3a25aae56a5f41362ec043bfa" },
|
||||||
|
"mini.icons": { "branch": "main", "commit": "bac6317300e205335df425296570d84322730067" },
|
||||||
|
"mini.nvim": { "branch": "main", "commit": "418ef4930ddabe80f449c6f1323f8b6abb172d1c" },
|
||||||
|
"mini.pairs": { "branch": "main", "commit": "42387c7fe68fc0b6e95eaf37f1bb76e7bffaa0d9" },
|
||||||
|
"neo-tree.nvim": { "branch": "main", "commit": "4d0828d95adaf4250c1373d2cd9318d3509712b7" },
|
||||||
|
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
|
"nvim-ansible": { "branch": "main", "commit": "c7f595d568b588942d4d0c37b5cd6cae3764a148" },
|
||||||
|
"nvim-highlight-colors": { "branch": "main", "commit": "e2cb22089cc2358b2b995c09578224f142de6039" },
|
||||||
|
"nvim-lint": { "branch": "master", "commit": "eab58b48eb11d7745c11c505e0f3057165902461" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "4b7fbaa239c5db6b36f424a4521ca9f1a401be33" },
|
||||||
|
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||||
|
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
|
||||||
|
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "c72328a5494b4502947a022fe69c0c47e53b6aa6" },
|
||||||
|
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||||
|
"render-markdown.nvim": { "branch": "main", "commit": "0fd43fb4b1f073931c4b481f5f3b7cea3749e190" },
|
||||||
|
"rustaceanvim": { "branch": "master", "commit": "88575b98bb9937fb9983ddec5e532b67e75ce677" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" },
|
||||||
|
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||||
|
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
|
||||||
|
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||||
|
"ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
|
||||||
|
"typst-preview.nvim": { "branch": "master", "commit": "325036ee145ca51d9efb145c09ac16bce3bc8b7d" },
|
||||||
|
"venv-selector.nvim": { "branch": "main", "commit": "bcb2f58533c59b01565285eba49693f00bc460f5" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
|
||||||
|
"yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" }
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"extras": [
|
||||||
|
"lazyvim.plugins.extras.formatting.black",
|
||||||
|
"lazyvim.plugins.extras.lang.ansible",
|
||||||
|
"lazyvim.plugins.extras.lang.clangd",
|
||||||
|
"lazyvim.plugins.extras.lang.go",
|
||||||
|
"lazyvim.plugins.extras.lang.python",
|
||||||
|
"lazyvim.plugins.extras.lang.terraform",
|
||||||
|
"lazyvim.plugins.extras.lang.yaml"
|
||||||
|
],
|
||||||
|
"install_version": 7,
|
||||||
|
"news": {
|
||||||
|
"NEWS.md": "11866"
|
||||||
|
},
|
||||||
|
"version": 8
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
-- Autocmds are automatically loaded on the VeryLazy event
|
||||||
|
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||||
|
-- Add any additional autocmds here
|
||||||
|
|
||||||
|
local function augroup(name)
|
||||||
|
return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("VimEnter", {
|
||||||
|
group = augroup("autoupdate"),
|
||||||
|
callback = function()
|
||||||
|
require("lazy").update({
|
||||||
|
show = false,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("nvim-highlight-colors").turnOn()
|
||||||
|
require("hex").setup()
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
-- Keymaps are automatically loaded on the VeryLazy event
|
||||||
|
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||||
|
-- Add any additional keymaps here
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
-- bootstrap lazy.nvim
|
||||||
|
-- stylua: ignore
|
||||||
|
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable",
|
||||||
|
lazypath })
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
-- add LazyVim and import its plugins
|
||||||
|
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||||
|
{ import = "plugins" },
|
||||||
|
},
|
||||||
|
defaults = {
|
||||||
|
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||||
|
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||||
|
lazy = false,
|
||||||
|
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||||
|
-- have outdated releases, which may break your Neovim install.
|
||||||
|
version = false, -- always use the latest git commit
|
||||||
|
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||||
|
},
|
||||||
|
install = { colorscheme = { "tokyonight", "habamax" } },
|
||||||
|
checker = { enabled = false }, -- automatically check for plugin updates
|
||||||
|
performance = {
|
||||||
|
rtp = {
|
||||||
|
-- disable some rtp plugins
|
||||||
|
disabled_plugins = {
|
||||||
|
"gzip",
|
||||||
|
-- "matchit",
|
||||||
|
-- "matchparen",
|
||||||
|
-- "netrwPlugin",
|
||||||
|
"tarPlugin",
|
||||||
|
"tohtml",
|
||||||
|
"tutor",
|
||||||
|
"zipPlugin",
|
||||||
|
"matchparen"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
-- Options are automatically loaded before lazy.nvim startup
|
||||||
|
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||||
|
-- Add any additional options here
|
||||||
|
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.autoformat = true
|
||||||
|
-- vim.g.loaded_netrwPlugin = 0
|
||||||
|
|
||||||
|
local opt = vim.opt
|
||||||
|
opt.tabstop = 4
|
||||||
|
opt.shiftwidth = 4
|
||||||
|
opt.expandtab = true
|
||||||
|
opt.smarttab = true
|
||||||
|
opt.copyindent = true
|
||||||
|
opt.autoindent = true
|
||||||
|
opt.syntax = "on"
|
||||||
|
opt.encoding = "utf-8"
|
||||||
|
opt.number = true
|
||||||
|
opt.list = true
|
||||||
|
opt.mouse = "a"
|
||||||
|
opt.pumblend = 10
|
||||||
|
opt.cursorline = true
|
||||||
|
opt.confirm = true
|
||||||
|
opt.conceallevel = 0
|
||||||
|
opt.clipboard = "unnamedplus"
|
||||||
|
opt.termguicolors = true
|
||||||
|
opt.undofile = true
|
||||||
|
opt.undolevels = 10000
|
||||||
|
opt.updatetime = 200
|
||||||
|
opt.spell = true
|
||||||
|
opt.spelllang = { "en_gb" }
|
||||||
|
opt.autochdir = false
|
||||||
|
opt.number = true
|
||||||
|
opt.relativenumber = false
|
||||||
|
--opt.switchbuf = "usetab"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
"Civitasv/cmake-tools.nvim",
|
||||||
|
ft = { "cmake", "cpp", "c" },
|
||||||
|
opts = {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
{ "brenoprata10/nvim-highlight-colors" },
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
-- add gruvbox
|
||||||
|
{ "ellisonleao/gruvbox.nvim" },
|
||||||
|
|
||||||
|
-- Configure LazyVim to load gruvbox
|
||||||
|
{
|
||||||
|
"LazyVim/LazyVim",
|
||||||
|
opts = {
|
||||||
|
colorscheme = "gruvbox",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,238 @@
|
|||||||
|
-- since this is just an example spec, don't actually load anything here and return an empty spec
|
||||||
|
-- stylua: ignore
|
||||||
|
if true then return {} end
|
||||||
|
|
||||||
|
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
|
||||||
|
--
|
||||||
|
-- In your plugin files, you can:
|
||||||
|
-- * add extra plugins
|
||||||
|
-- * disable/enabled LazyVim plugins
|
||||||
|
-- * override the configuration of LazyVim plugins
|
||||||
|
return {
|
||||||
|
-- add gruvbox
|
||||||
|
{ "ellisonleao/gruvbox.nvim" },
|
||||||
|
|
||||||
|
-- Configure LazyVim to load gruvbox
|
||||||
|
{
|
||||||
|
"LazyVim/LazyVim",
|
||||||
|
opts = {
|
||||||
|
colorscheme = "gruvbox",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- change trouble config
|
||||||
|
{
|
||||||
|
"folke/trouble.nvim",
|
||||||
|
-- opts will be merged with the parent spec
|
||||||
|
opts = { use_diagnostic_signs = true },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- disable trouble
|
||||||
|
{ "folke/trouble.nvim", enabled = false },
|
||||||
|
|
||||||
|
-- override nvim-cmp and add cmp-emoji
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
dependencies = { "hrsh7th/cmp-emoji" },
|
||||||
|
---@param opts cmp.ConfigSchema
|
||||||
|
opts = function(_, opts)
|
||||||
|
table.insert(opts.sources, { name = "emoji" })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- change some telescope options and a keymap to browse plugin files
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
keys = {
|
||||||
|
-- add a keymap to browse plugin files
|
||||||
|
-- stylua: ignore
|
||||||
|
{
|
||||||
|
"<leader>fp",
|
||||||
|
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
|
||||||
|
desc = "Find Plugin File",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- change some options
|
||||||
|
opts = {
|
||||||
|
defaults = {
|
||||||
|
layout_strategy = "horizontal",
|
||||||
|
layout_config = { prompt_position = "top" },
|
||||||
|
sorting_strategy = "ascending",
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- add pyright to lspconfig
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
---@class PluginLspOpts
|
||||||
|
opts = {
|
||||||
|
---@type lspconfig.options
|
||||||
|
servers = {
|
||||||
|
-- pyright will be automatically installed with mason and loaded with lspconfig
|
||||||
|
pyright = {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- add tsserver and setup with typescript.nvim instead of lspconfig
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
dependencies = {
|
||||||
|
"jose-elias-alvarez/typescript.nvim",
|
||||||
|
init = function()
|
||||||
|
require("lazyvim.util").lsp.on_attach(function(_, buffer)
|
||||||
|
-- stylua: ignore
|
||||||
|
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
|
||||||
|
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
---@class PluginLspOpts
|
||||||
|
opts = {
|
||||||
|
---@type lspconfig.options
|
||||||
|
servers = {
|
||||||
|
-- tsserver will be automatically installed with mason and loaded with lspconfig
|
||||||
|
tsserver = {},
|
||||||
|
},
|
||||||
|
-- you can do any additional lsp server setup here
|
||||||
|
-- return true if you don't want this server to be setup with lspconfig
|
||||||
|
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
|
||||||
|
setup = {
|
||||||
|
-- example to setup with typescript.nvim
|
||||||
|
tsserver = function(_, opts)
|
||||||
|
require("typescript").setup({ server = opts })
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
-- Specify * to use this function as a fallback for any server
|
||||||
|
-- ["*"] = function(server, opts) end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
|
||||||
|
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||||
|
|
||||||
|
-- add more treesitter parsers
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"bash",
|
||||||
|
"html",
|
||||||
|
"javascript",
|
||||||
|
"json",
|
||||||
|
"lua",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"python",
|
||||||
|
"query",
|
||||||
|
"regex",
|
||||||
|
"tsx",
|
||||||
|
"typescript",
|
||||||
|
"vim",
|
||||||
|
"yaml",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
|
||||||
|
-- would overwrite `ensure_installed` with the new value.
|
||||||
|
-- If you'd rather extend the default config, use the code below instead:
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = function(_, opts)
|
||||||
|
-- add tsx and treesitter
|
||||||
|
vim.list_extend(opts.ensure_installed, {
|
||||||
|
"tsx",
|
||||||
|
"typescript",
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- the opts function can also be used to change the default opts:
|
||||||
|
{
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = function(_, opts)
|
||||||
|
table.insert(opts.sections.lualine_x, "😄")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- or you can return new options to override all the defaults
|
||||||
|
{
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = function()
|
||||||
|
return {
|
||||||
|
--[[add your custom lualine config here]]
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- use mini.starter instead of alpha
|
||||||
|
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
|
||||||
|
|
||||||
|
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||||
|
|
||||||
|
-- add any tools you want to have installed below
|
||||||
|
{
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"stylua",
|
||||||
|
"shellcheck",
|
||||||
|
"shfmt",
|
||||||
|
"flake8",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Use <tab> for completion and snippets (supertab)
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
dependencies = {
|
||||||
|
"hrsh7th/cmp-emoji",
|
||||||
|
},
|
||||||
|
---@param opts cmp.ConfigSchema
|
||||||
|
opts = function(_, opts)
|
||||||
|
local has_words_before = function()
|
||||||
|
unpack = unpack or table.unpack
|
||||||
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local cmp = require("cmp")
|
||||||
|
|
||||||
|
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif vim.snippet.active({ direction = 1 }) then
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.snippet.jump(1)
|
||||||
|
end)
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif vim.snippet.active({ direction = -1 }) then
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.snippet.jump(-1)
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return { 'RaafatTurki/hex.nvim' }
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
opts = {
|
||||||
|
servers = {
|
||||||
|
clangd = {
|
||||||
|
cmd = {
|
||||||
|
"clangd",
|
||||||
|
"--background-index",
|
||||||
|
"--clang-tidy",
|
||||||
|
"--header-insertion=iwyu",
|
||||||
|
"--completion-style=detailed",
|
||||||
|
"--function-arg-placeholders",
|
||||||
|
"--fallback-style=llvm",
|
||||||
|
"--enable-config",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = function()
|
||||||
|
return {
|
||||||
|
theme = "gruvbox_dark",
|
||||||
|
section_separators = "",
|
||||||
|
component_separators = "",
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
{ "mason-org/mason-lspconfig.nvim", enabled = false },
|
||||||
|
{ "mason-org/mason.nvim", enabled = false },
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
"monkoose/matchparen.nvim",
|
||||||
|
config = function()
|
||||||
|
require("matchparen").setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
return {
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
ft = "markdown",
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' }, -- if you use the mini.nvim suite
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' }, -- if you use standalone mini plugins
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||||
|
---@module 'render-markdown'
|
||||||
|
---@type render.md.UserConfig
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
"mrcjkb/rustaceanvim",
|
||||||
|
version = "^6", -- Recommended
|
||||||
|
lazy = false, -- This plugin is already lazy
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
"chomosuke/typst-preview.nvim",
|
||||||
|
lazy = false, -- or ft = 'typst'
|
||||||
|
version = "1.*",
|
||||||
|
dependencies_bin = {
|
||||||
|
["tinymist"] = "/usr/bin/tinymist",
|
||||||
|
["websocat"] = "/usr/bin/websocat",
|
||||||
|
},
|
||||||
|
build = function()
|
||||||
|
require("typst-preview").update()
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
return {
|
||||||
|
"linux-cultist/venv-selector.nvim",
|
||||||
|
cmd = "VenvSelect",
|
||||||
|
enable = false,
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
notify_user_on_venv_activation = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Call config for Python files and load the cached venv automatically
|
||||||
|
ft = "python",
|
||||||
|
keys = { { "<leader>cv", "<cmd>:VenvSelect<cr>", desc = "Select VirtualEnv", ft = "python" } },
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
{ "elkowar/yuck.vim" },
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 2
|
||||||
|
column_width = 120
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[{.gitattributes,.gitignore,.gitmodules}]
|
||||||
|
indent_style = tab
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
<!-- Please check if a similar issue already exists or has been closed before before opening your issue. -->
|
||||||
|
|
||||||
|
### Description
|
||||||
|
<!-- Provide a general description of the bug or feature -->
|
||||||
|
|
||||||
|
### Expected behavior
|
||||||
|
|
||||||
|
<!-- What you expected to happen -->
|
||||||
|
|
||||||
|
### Actual behavior
|
||||||
|
|
||||||
|
<!-- What actually happened -->
|
||||||
|
|
||||||
|
### Steps to Reproduce
|
||||||
|
|
||||||
|
1. [First Step]
|
||||||
|
2. [Second Step]
|
||||||
|
3. [and so on...]
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
- Prezto commit:
|
||||||
|
- ZSH version:
|
||||||
|
- OS information:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md)
|
||||||
|
before submitting your pull request.
|
||||||
|
|
||||||
|
Fixes #
|
||||||
|
|
||||||
|
## Proposed Changes
|
||||||
|
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
*.zwc
|
||||||
|
*.zwc.old
|
||||||
|
modules/*/cache.zsh
|
||||||
|
contrib
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
[submodule "modules/autosuggestions/external"]
|
||||||
|
path = modules/autosuggestions/external
|
||||||
|
url = https://github.com/zsh-users/zsh-autosuggestions.git
|
||||||
|
[submodule "modules/history-substring-search/external"]
|
||||||
|
path = modules/history-substring-search/external
|
||||||
|
url = https://github.com/zsh-users/zsh-history-substring-search.git
|
||||||
|
[submodule "modules/syntax-highlighting/external"]
|
||||||
|
path = modules/syntax-highlighting/external
|
||||||
|
url = https://github.com/zsh-users/zsh-syntax-highlighting.git
|
||||||
|
[submodule "modules/completion/external"]
|
||||||
|
path = modules/completion/external
|
||||||
|
url = https://github.com/zsh-users/zsh-completions.git
|
||||||
|
[submodule "modules/prompt/external/powerline"]
|
||||||
|
path = modules/prompt/external/powerline
|
||||||
|
url = https://github.com/davidjrice/prezto_powerline.git
|
||||||
|
[submodule "modules/prompt/external/agnoster"]
|
||||||
|
path = modules/prompt/external/agnoster
|
||||||
|
url = https://github.com/agnoster/agnoster-zsh-theme.git
|
||||||
|
[submodule "modules/prompt/external/pure"]
|
||||||
|
path = modules/prompt/external/pure
|
||||||
|
url = https://github.com/sindresorhus/pure.git
|
||||||
|
[submodule "modules/fasd/external"]
|
||||||
|
path = modules/fasd/external
|
||||||
|
url = https://github.com/whjvenyl/fasd.git
|
||||||
|
[submodule "modules/prompt/external/async"]
|
||||||
|
path = modules/prompt/external/async
|
||||||
|
url = https://github.com/mafredri/zsh-async.git
|
||||||
|
[submodule "modules/prompt/external/powerlevel10k"]
|
||||||
|
path = modules/prompt/external/powerlevel10k
|
||||||
|
url = https://github.com/romkatv/powerlevel10k.git
|
||||||
|
shallow = true
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
This project would not exist without all of its users and [contributors][1].
|
||||||
|
|
||||||
|
If you have ideas on how to make the configuration easier to maintain or
|
||||||
|
improve its performance, do not hesitate to fork and send pull requests.
|
||||||
|
|
||||||
|
## Issue Reporting
|
||||||
|
|
||||||
|
- Check that the issue has not already been reported.
|
||||||
|
- Check that the issue has not already been fixed in the latest code.
|
||||||
|
- Open an issue with a clear title and description in grammatically correct,
|
||||||
|
complete sentences.
|
||||||
|
|
||||||
|
## Pull Request
|
||||||
|
|
||||||
|
- Read [how to properly contribute to open source projects on GitHub][2].
|
||||||
|
- Use a topic branch to easily amend a pull request later, if necessary.
|
||||||
|
- Write [good commit messages][3].
|
||||||
|
- Squash commits on the topic branch before opening a pull request.
|
||||||
|
- Use the same coding style and spacing.
|
||||||
|
- Open a [pull request][4] that relates to but one subject with a clear title
|
||||||
|
and description in grammatically correct, complete sentences.
|
||||||
|
|
||||||
|
### Code Style
|
||||||
|
|
||||||
|
This project follows the [Google Shell Style Guide][5] when possible. However,
|
||||||
|
there are a number of additional things to keep in mind.
|
||||||
|
|
||||||
|
- Local variables should be used whenever possible.
|
||||||
|
- Prefer `zstyle` over environment variables for configuration.
|
||||||
|
- Prefer (( ... )) over [[ ... ]] for arithmetic expression.
|
||||||
|
- Use the function keyword to define functions.
|
||||||
|
- The 80 character hard limit can be waived for readability.
|
||||||
|
|
||||||
|
### Using an Alternative *zprezto* Directory
|
||||||
|
|
||||||
|
To work on Prezto without affecting your current configuration:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir devel-zprezto
|
||||||
|
cd devel-zprezto
|
||||||
|
git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto
|
||||||
|
ZDOTDIR=$(pwd)
|
||||||
|
echo "Your development ZDOTDIR is $ZDOTDIR"
|
||||||
|
setopt EXTENDED_GLOB
|
||||||
|
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
|
||||||
|
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
Then to start zsh in this development environment you will run:
|
||||||
|
|
||||||
|
```console
|
||||||
|
ZDOTDIR=/path/to/devel-zprezto zsh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Modules
|
||||||
|
|
||||||
|
- A *README.md* must be present.
|
||||||
|
- Large functions must be placed in a *functions* directory.
|
||||||
|
- Functions that take arguments must have completion.
|
||||||
|
|
||||||
|
### Themes
|
||||||
|
|
||||||
|
- A screenshots section must be present in the file header.
|
||||||
|
- The pull request description must have [embedded screenshots][6].
|
||||||
|
|
||||||
|
[1]: https://github.com/sorin-ionescu/prezto/contributors
|
||||||
|
[2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request
|
||||||
|
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
||||||
|
[4]: https://help.github.com/articles/using-pull-requests
|
||||||
|
[5]: https://google.github.io/styleguide/shell.xml
|
||||||
|
[6]: https://github.github.com/gfm/#images
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
Copyright (c) 2009-2011 Robby Russell and contributors
|
||||||
|
Copyright (c) 2011-2017 Sorin Ionescu and contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE
|
||||||
@@ -0,0 +1,160 @@
|
|||||||
|
# Prezto — Instantly Awesome Zsh
|
||||||
|
|
||||||
|
Prezto is the configuration framework for [Zsh][1]; it enriches the command line
|
||||||
|
interface environment with sane defaults, aliases, functions, auto completion,
|
||||||
|
and prompt themes.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Manual
|
||||||
|
|
||||||
|
Prezto will work with any recent release of Zsh, but the minimum required
|
||||||
|
version is **4.3.11**.
|
||||||
|
|
||||||
|
01. Launch Zsh:
|
||||||
|
|
||||||
|
```console
|
||||||
|
zsh
|
||||||
|
```
|
||||||
|
|
||||||
|
02. Clone the repository:
|
||||||
|
|
||||||
|
```console
|
||||||
|
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><em>Optional: Installing in <code>$XDG_CONFIG_HOME</code></em></summary>
|
||||||
|
|
||||||
|
Optionally, if you already have `$XDG_CONFIG_HOME` configured (usually as
|
||||||
|
_`$HOME/.config`_ by default) and intend to install Prezto under
|
||||||
|
_`$XDG_CONFIG_HOME/zsh`_ instead, you can clone the repository there and
|
||||||
|
configure `$ZDOTDIR` separately if not already configured.
|
||||||
|
|
||||||
|
- Clone the repository:
|
||||||
|
|
||||||
|
```console
|
||||||
|
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Configure `$XDG_CONFIG_HOME` and `$ZDOTDIR` in _`$HOME/.zshenv`_:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}"
|
||||||
|
[[ -d $XDG_CONFIG_HOME/zsh ]] && export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
||||||
|
source "$ZDOTDIR/.zshenv"
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
03. Create a new Zsh configuration by copying/linking the Zsh configuration
|
||||||
|
files provided:
|
||||||
|
|
||||||
|
```console
|
||||||
|
setopt EXTENDED_GLOB
|
||||||
|
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
|
||||||
|
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** If you already have any of the given configuration files, `ln` in
|
||||||
|
the above operation will cause an error. In simple cases, you can load
|
||||||
|
Prezto by adding the line `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to
|
||||||
|
the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your
|
||||||
|
Zsh configuration intact. For more complicated setups, we recommend that you
|
||||||
|
back up your original configs and replace them with the provided Prezto
|
||||||
|
[_`runcoms`_][10].
|
||||||
|
|
||||||
|
04. Set Zsh as your default shell:
|
||||||
|
|
||||||
|
```console
|
||||||
|
chsh -s /bin/zsh
|
||||||
|
```
|
||||||
|
|
||||||
|
05. Open a new Zsh terminal window or tab.
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
If you are not able to find certain commands after switching to Prezto, modify
|
||||||
|
the `PATH` variable in _`${ZDOTDIR:-$HOME}/.zprofile`_ then open a new Zsh
|
||||||
|
terminal window or tab.
|
||||||
|
|
||||||
|
## Updating
|
||||||
|
|
||||||
|
Run `zprezto-update` to automatically check if there is an update to Prezto.
|
||||||
|
If there are no file conflicts, Prezto and its submodules will be automatically
|
||||||
|
updated. If there are conflicts you will be instructed to go into the
|
||||||
|
`$ZPREZTODIR` directory and resolve them yourself.
|
||||||
|
|
||||||
|
To pull the latest changes and update submodules manually:
|
||||||
|
|
||||||
|
```console
|
||||||
|
cd $ZPREZTODIR
|
||||||
|
git pull
|
||||||
|
git submodule sync --recursive
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Prezto has many features disabled by default. Read the source code and the
|
||||||
|
accompanying README files to learn about what is available.
|
||||||
|
|
||||||
|
### Modules
|
||||||
|
|
||||||
|
01. Browse [_`modules`_][9] to see what is available.
|
||||||
|
02. Load the modules you need in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open
|
||||||
|
a new Zsh terminal window or tab.
|
||||||
|
|
||||||
|
### Themes
|
||||||
|
|
||||||
|
01. For a list of themes, type `prompt -l`.
|
||||||
|
02. To preview a theme, type `prompt -p name`.
|
||||||
|
03. Load the theme you like in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then
|
||||||
|
open a new Zsh terminal window or tab.
|
||||||
|
|
||||||
|
![sorin theme][2]
|
||||||
|
Note that the [_`git`_][11] module may be required for special symbols to
|
||||||
|
appear, such as those on the right of the above image. Add `'git'` to the
|
||||||
|
`pmodule` list (under `zstyle ':prezto:load' pmodule \` in your
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_) to enable this module.
|
||||||
|
|
||||||
|
### External Modules
|
||||||
|
|
||||||
|
01. By default modules will be loaded from [_`/modules`_][9] and _`/contrib`_.
|
||||||
|
02. Additional module directories can be added to the
|
||||||
|
`:prezto:load:pmodule-dirs` setting in _`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
Note that module names need to be unique or they will cause an error when
|
||||||
|
loading.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
|
||||||
|
The project is managed via [Git][3]. We highly recommend that you fork this
|
||||||
|
project so that you can commit your changes and push them to your fork on
|
||||||
|
[GitHub][4] to preserve them. If you do not know how to use Git, follow this
|
||||||
|
[tutorial][5] and bookmark this [reference][6].
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License.
|
||||||
|
|
||||||
|
[1]: https://www.zsh.org
|
||||||
|
[2]: https://i.imgur.com/nrGV6pg.png "sorin theme"
|
||||||
|
[3]: https://git-scm.com
|
||||||
|
[4]: https://github.com
|
||||||
|
[5]: https://gitimmersion.com
|
||||||
|
[6]: https://git.github.io/git-reference/
|
||||||
|
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
|
||||||
|
[8]: https://grml.org/zsh/zsh-lovers.html
|
||||||
|
[9]: modules#readme
|
||||||
|
[10]: runcoms#readme
|
||||||
|
[11]: modules/git#readme
|
||||||
@@ -0,0 +1,197 @@
|
|||||||
|
#
|
||||||
|
# Initializes Prezto.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Version Check
|
||||||
|
#
|
||||||
|
|
||||||
|
# Check for the minimum supported version.
|
||||||
|
min_zsh_version='4.3.11'
|
||||||
|
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
|
||||||
|
printf "prezto: old shell detected, minimum required: %s\n" "$min_zsh_version" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
unset min_zsh_version
|
||||||
|
|
||||||
|
# zprezto convenience updater
|
||||||
|
# The function is surrounded by ( ) instead of { } so it starts in a subshell
|
||||||
|
# and won't affect the environment of the calling shell
|
||||||
|
function zprezto-update {
|
||||||
|
(
|
||||||
|
function cannot-fast-forward {
|
||||||
|
local STATUS="$1"
|
||||||
|
[[ -n "${STATUS}" ]] && printf "%s\n" "${STATUS}"
|
||||||
|
printf "Unable to fast-forward the changes. You can fix this by "
|
||||||
|
printf "running\ncd '%s' and then\n'git pull' " "${ZPREZTODIR}"
|
||||||
|
printf "to manually pull and possibly merge in changes\n"
|
||||||
|
}
|
||||||
|
builtin cd -q -- "${ZPREZTODIR}" || return 7
|
||||||
|
local orig_branch="$(git symbolic-ref HEAD 2> /dev/null | cut -d '/' -f 3)"
|
||||||
|
if [[ "$orig_branch" == "master" ]]; then
|
||||||
|
git fetch || return "$?"
|
||||||
|
local UPSTREAM=$(git rev-parse '@{u}')
|
||||||
|
local LOCAL=$(git rev-parse HEAD)
|
||||||
|
local REMOTE=$(git rev-parse "$UPSTREAM")
|
||||||
|
local BASE=$(git merge-base HEAD "$UPSTREAM")
|
||||||
|
if [[ $LOCAL == $REMOTE ]]; then
|
||||||
|
printf "There are no updates.\n"
|
||||||
|
return 0
|
||||||
|
elif [[ $LOCAL == $BASE ]]; then
|
||||||
|
printf "There is an update available. Trying to pull.\n\n"
|
||||||
|
if git pull --ff-only; then
|
||||||
|
printf "Syncing submodules\n"
|
||||||
|
git submodule sync --recursive
|
||||||
|
git submodule update --init --recursive
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
cannot-fast-forward
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
elif [[ $REMOTE == $BASE ]]; then
|
||||||
|
cannot-fast-forward "Commits in master that aren't in upstream."
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
cannot-fast-forward "Upstream and local have diverged."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "zprezto install at '%s' is not on the master branch " "${ZPREZTODIR}"
|
||||||
|
printf "(you're on '%s')\nUnable to automatically update.\n" "${orig_branch}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
)
|
||||||
|
}
|
||||||
|
#
|
||||||
|
# Module Loader
|
||||||
|
#
|
||||||
|
|
||||||
|
# Loads Prezto modules.
|
||||||
|
function pmodload {
|
||||||
|
local -a pmodules
|
||||||
|
local -a pmodule_dirs
|
||||||
|
local -a locations
|
||||||
|
local pmodule
|
||||||
|
local pmodule_location
|
||||||
|
local pfunction_glob='^([_.]*|prompt_*_setup|README*|*~)(-.N:t)'
|
||||||
|
|
||||||
|
# Load in any additional directories and warn if they don't exist
|
||||||
|
zstyle -a ':prezto:load' pmodule-dirs 'user_pmodule_dirs'
|
||||||
|
for user_dir in "$user_pmodule_dirs[@]"; do
|
||||||
|
if [[ ! -d "$user_dir" ]]; then
|
||||||
|
echo "$0: Missing user module dir: $user_dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
pmodule_dirs=("$ZPREZTODIR/modules" "$ZPREZTODIR/contrib" "$user_pmodule_dirs[@]")
|
||||||
|
|
||||||
|
# $argv is overridden in the anonymous function.
|
||||||
|
pmodules=("$argv[@]")
|
||||||
|
|
||||||
|
# Load Prezto modules.
|
||||||
|
for pmodule in "$pmodules[@]"; do
|
||||||
|
if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)})
|
||||||
|
if (( ${#locations} > 1 )); then
|
||||||
|
if ! zstyle -t ':prezto:load' pmodule-allow-overrides 'yes'; then
|
||||||
|
print "$0: conflicting module locations: $locations"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
elif (( ${#locations} < 1 )); then
|
||||||
|
print "$0: no such module: $pmodule"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Grab the full path to this module
|
||||||
|
pmodule_location=${locations[-1]}
|
||||||
|
|
||||||
|
# Add functions to $fpath.
|
||||||
|
fpath=(${pmodule_location}/functions(-/FN) $fpath)
|
||||||
|
|
||||||
|
function {
|
||||||
|
local pfunction
|
||||||
|
|
||||||
|
# Extended globbing is needed for listing autoloadable function directories.
|
||||||
|
setopt LOCAL_OPTIONS EXTENDED_GLOB
|
||||||
|
|
||||||
|
# Load Prezto functions.
|
||||||
|
for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do
|
||||||
|
autoload -Uz "$pfunction"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -s "${pmodule_location}/init.zsh" ]]; then
|
||||||
|
source "${pmodule_location}/init.zsh"
|
||||||
|
elif [[ -s "${pmodule_location}/${pmodule}.plugin.zsh" ]]; then
|
||||||
|
source "${pmodule_location}/${pmodule}.plugin.zsh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $? == 0 )); then
|
||||||
|
zstyle ":prezto:module:$pmodule" loaded 'yes'
|
||||||
|
else
|
||||||
|
# Remove the $fpath entry.
|
||||||
|
fpath[(r)${pmodule_location}/functions]=()
|
||||||
|
|
||||||
|
function {
|
||||||
|
local pfunction
|
||||||
|
|
||||||
|
# Extended globbing is needed for listing autoloadable function
|
||||||
|
# directories.
|
||||||
|
setopt LOCAL_OPTIONS EXTENDED_GLOB
|
||||||
|
|
||||||
|
# Unload Prezto functions.
|
||||||
|
for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do
|
||||||
|
unfunction "$pfunction"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
zstyle ":prezto:module:$pmodule" loaded 'no'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Prezto Initialization
|
||||||
|
#
|
||||||
|
|
||||||
|
# This finds the directory prezto is installed to so plugin managers don't need
|
||||||
|
# to rely on dirty hacks to force prezto into a directory. Additionally, it
|
||||||
|
# needs to be done here because inside the pmodload function ${0:h} evaluates to
|
||||||
|
# the current directory of the shell rather than the prezto dir.
|
||||||
|
ZPREZTODIR=${0:h}
|
||||||
|
|
||||||
|
# Source the Prezto configuration file.
|
||||||
|
if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then
|
||||||
|
source "${ZDOTDIR:-$HOME}/.zpreztorc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Disable color and theme in dumb terminals.
|
||||||
|
if [[ $TERM == dumb ]]; then
|
||||||
|
zstyle ':prezto:*:*' color 'no'
|
||||||
|
zstyle ':prezto:module:prompt' theme 'off'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load Zsh modules.
|
||||||
|
zstyle -a ':prezto:load' zmodule 'zmodules'
|
||||||
|
for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}"
|
||||||
|
unset zmodule{s,}
|
||||||
|
|
||||||
|
# Load more specific 'run-help' function from $fpath.
|
||||||
|
(( $+aliases[run-help] )) && unalias run-help && autoload -Uz run-help
|
||||||
|
|
||||||
|
# Autoload Zsh functions.
|
||||||
|
zstyle -a ':prezto:load' zfunction 'zfunctions'
|
||||||
|
for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction"
|
||||||
|
unset zfunction{s,}
|
||||||
|
|
||||||
|
# Load Prezto modules.
|
||||||
|
zstyle -a ':prezto:load' pmodule 'pmodules'
|
||||||
|
pmodload "$pmodules[@]"
|
||||||
|
unset pmodules
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
# Modules
|
||||||
|
|
||||||
|
Load modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:load' pmodule 'environment' 'terminal'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Archive
|
||||||
|
|
||||||
|
Provides functions to list and extract archives.
|
||||||
|
|
||||||
|
## Autosuggestions
|
||||||
|
|
||||||
|
Integrates zsh-autosuggestions into Prezto.
|
||||||
|
|
||||||
|
## Command-Not-Found
|
||||||
|
|
||||||
|
Loads the command-not-found tool on macOS or Debian-based distributions.
|
||||||
|
|
||||||
|
## Completion
|
||||||
|
|
||||||
|
Loads and configures <kbd>TAB</kbd> completion and provides additional
|
||||||
|
completions from the zsh-completions project.
|
||||||
|
|
||||||
|
## Directory
|
||||||
|
|
||||||
|
Sets directory options and defines directory aliases.
|
||||||
|
|
||||||
|
## DNF
|
||||||
|
|
||||||
|
Defines _dnf_ aliases.
|
||||||
|
|
||||||
|
## Dpkg
|
||||||
|
|
||||||
|
Defines _dpkg_ aliases and functions.
|
||||||
|
|
||||||
|
## Editor
|
||||||
|
|
||||||
|
Sets key bindings.
|
||||||
|
|
||||||
|
## Emacs
|
||||||
|
|
||||||
|
Enables Emacs dependency management.
|
||||||
|
|
||||||
|
## Environment
|
||||||
|
|
||||||
|
Sets general shell options and defines environment variables.
|
||||||
|
|
||||||
|
## Fasd
|
||||||
|
|
||||||
|
Maintains a frequently used file and directory list for fast access.
|
||||||
|
|
||||||
|
## Git
|
||||||
|
|
||||||
|
Enhances the Git distributed version control system by providing aliases,
|
||||||
|
functions and by exposing repository status information to prompts.
|
||||||
|
|
||||||
|
## GNU Utility
|
||||||
|
|
||||||
|
Provides for the interactive use of GNU utilities on non-GNU systems.
|
||||||
|
|
||||||
|
## GPG
|
||||||
|
|
||||||
|
Provides for an easier use of GPG by setting up gpg-agent.
|
||||||
|
|
||||||
|
## Haskell
|
||||||
|
|
||||||
|
Enables local Haskell package installation.
|
||||||
|
|
||||||
|
## Helper
|
||||||
|
|
||||||
|
Provides helper functions for developing modules.
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
Sets history options and defines history aliases.
|
||||||
|
|
||||||
|
## History Substring Search
|
||||||
|
|
||||||
|
Integrates zsh-history-substring-search into Prezto.
|
||||||
|
|
||||||
|
## Homebrew
|
||||||
|
|
||||||
|
Defines Homebrew aliases.
|
||||||
|
|
||||||
|
## MacPorts
|
||||||
|
|
||||||
|
Defines MacPorts aliases and adds MacPorts directories to path variables.
|
||||||
|
|
||||||
|
## Node.js
|
||||||
|
|
||||||
|
Provides utility functions for Node.js and loads npm completion.
|
||||||
|
|
||||||
|
## OCaml
|
||||||
|
|
||||||
|
Initializes OCaml package management.
|
||||||
|
|
||||||
|
## OSX
|
||||||
|
|
||||||
|
Defines macOS aliases and functions.
|
||||||
|
|
||||||
|
## Pacman
|
||||||
|
|
||||||
|
Provides aliases and functions for the Pacman package manager and frontends.
|
||||||
|
|
||||||
|
## Perl
|
||||||
|
|
||||||
|
Enables local Perl module installation on macOS and defines alises.
|
||||||
|
|
||||||
|
## Prompt
|
||||||
|
|
||||||
|
Loads prompt themes.
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
Enables local Python and local Python package installation.
|
||||||
|
|
||||||
|
## Ruby on Rails
|
||||||
|
|
||||||
|
Defines Ruby on Rails aliases.
|
||||||
|
|
||||||
|
## Rsync
|
||||||
|
|
||||||
|
Defines rsync aliases.
|
||||||
|
|
||||||
|
## Ruby
|
||||||
|
|
||||||
|
Configures Ruby local gem installation, loads version managers, and defines
|
||||||
|
aliases.
|
||||||
|
|
||||||
|
## GNU Screen
|
||||||
|
|
||||||
|
Defines GNU Screen aliases and provides for auto launching it at start-up.
|
||||||
|
|
||||||
|
## Spectrum
|
||||||
|
|
||||||
|
Provides for easier use of 256 colors and effects.
|
||||||
|
|
||||||
|
## SSH
|
||||||
|
|
||||||
|
Provides for an easier use of SSH by setting up ssh-agent.
|
||||||
|
|
||||||
|
## Syntax Highlighting
|
||||||
|
|
||||||
|
Integrates zsh-syntax-highlighting into Prezto.
|
||||||
|
|
||||||
|
## Terminal
|
||||||
|
|
||||||
|
Sets terminal window and tab titles.
|
||||||
|
|
||||||
|
## Tmux
|
||||||
|
|
||||||
|
Defines tmux aliases and provides for auto launching it at start-up.
|
||||||
|
|
||||||
|
## Utility
|
||||||
|
|
||||||
|
Defines general aliases and functions.
|
||||||
|
|
||||||
|
## Wake-on-LAN
|
||||||
|
|
||||||
|
This module provides a wrapper around the wakeonlan tool.
|
||||||
|
|
||||||
|
## Yum
|
||||||
|
|
||||||
|
Defines yum aliases.
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# Archive
|
||||||
|
|
||||||
|
Provides functions to create, list, and extract archives.
|
||||||
|
|
||||||
|
This module must be loaded _before_ the [_`completion`_][1] module so that the
|
||||||
|
provided completion definitions are loaded automatically by _`completion`_
|
||||||
|
module.
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
- `archive` creates an archive based on the provided archive name.
|
||||||
|
- `lsarchive` lists the contents of one or more archives.
|
||||||
|
- `unarchive` extracts the contents of one or more archives.
|
||||||
|
|
||||||
|
## Supported Formats
|
||||||
|
|
||||||
|
The following archive formats are supported when the required utilities are
|
||||||
|
installed:
|
||||||
|
|
||||||
|
- _.tar.gz_, _.tgz_ require `tar` (optionally `pigz`).
|
||||||
|
- _.tar.bz2_, _.tbz_ require `tar` (optionally `pbzip2`).
|
||||||
|
- _.tar.xz_, _.txz_ require `tar` with _xz_ support.
|
||||||
|
- _.tar.zma_, _.tlz_ require `tar` with _lzma_ support.
|
||||||
|
- _.tar_ requires `tar`.
|
||||||
|
- _.gz_ requires `gunzip`.
|
||||||
|
- _.bz2_ requires `bunzip2`.
|
||||||
|
- _.xz_ requires `unxz`.
|
||||||
|
- _.lzma_ requires `unlzma`.
|
||||||
|
- _.Z_ requires `uncompress`.
|
||||||
|
- _.zip_, _.jar_ requires `unzip`.
|
||||||
|
- _.rar_ requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.
|
||||||
|
- _.7z_ requires `7za`.
|
||||||
|
- _.deb_ requires `ar`, `tar`.
|
||||||
|
|
||||||
|
Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them
|
||||||
|
over their traditional counterparts, `gzip` and `bzip2` respectively, to take
|
||||||
|
full advantage of all available CPU cores for compression.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
|
||||||
|
Specifically on macOS, [The Unarchiver][2] provides a similar command line tool
|
||||||
|
which doesn't depend on a number of other programs being installed.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][3]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
- [Matt Hamilton](https://github.com/Eriner)
|
||||||
|
|
||||||
|
[1]: ../completion#readme
|
||||||
|
[2]: https://theunarchiver.com/command-line
|
||||||
|
[3]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#compdef lsarchive
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes lsarchive.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
'(-v --verbose)'{-v,--remove}'[verbose archive listing]' \
|
||||||
|
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z)(-.)'" && return 0
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#compdef unarchive
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes unarchive.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
'(-r --remove)'{-r,--remove}'[remove archive]' \
|
||||||
|
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z|deb)(-.)'" && return 0
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#
|
||||||
|
# Creates archive file
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Matt Hamilton <m@tthamilton.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function archive {
|
||||||
|
|
||||||
|
local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin
|
||||||
|
|
||||||
|
if (( $# < 2 )); then
|
||||||
|
cat >&2 <<EOF
|
||||||
|
usage: $0 [archive_name.zip] [/path/to/include/into/archive ...]
|
||||||
|
|
||||||
|
Where 'archive.zip' uses any of the following extensions:
|
||||||
|
|
||||||
|
.tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tar.zst, .tar, .zip, .rar, .7z
|
||||||
|
|
||||||
|
There is no '-v' switch; all operations are verbose.
|
||||||
|
EOF
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# we are quitting (above) if there are not exactly 2 vars,
|
||||||
|
# so we don't need any argc check here.
|
||||||
|
|
||||||
|
# strip the path, just in case one is provided for some reason
|
||||||
|
archive_name="${1:t}"
|
||||||
|
# let paths be handled by actual archive helper
|
||||||
|
path_to_archive="${@:2}"
|
||||||
|
|
||||||
|
# here, we check for dropin/multi-threaded replacements
|
||||||
|
# this should eventually be moved to modules/archive/init.zsh
|
||||||
|
# as a global alias
|
||||||
|
if (( $+commands[pigz] )); then
|
||||||
|
_gzip_bin='pigz'
|
||||||
|
else
|
||||||
|
_gzip_bin='gzip'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[pixz] )); then
|
||||||
|
_xz_bin='pixz'
|
||||||
|
else
|
||||||
|
_xz_bin='xz'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[lbzip2] )); then
|
||||||
|
_bzip2_bin='lbzip2'
|
||||||
|
elif (( $+commands[pbzip2] )); then
|
||||||
|
_bzip2_bin='pbzip2'
|
||||||
|
else
|
||||||
|
_bzip2_bin='bzip2'
|
||||||
|
fi
|
||||||
|
|
||||||
|
_zstd_bin='zstd'
|
||||||
|
|
||||||
|
case "${archive_name}" in
|
||||||
|
(*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${=path_to_archive}" ;;
|
||||||
|
(*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${=path_to_archive}" ;;
|
||||||
|
(*.tar.xz|*.txz) tar -cvf "${archive_name}" --use-compress-program="${_xz_bin}" "${=path_to_archive}" ;;
|
||||||
|
(*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${=path_to_archive}" ;;
|
||||||
|
(*.tar.zst|*.tzst) tar -cvf "${archive_name}" --use-compress-program="${_zstd_bin}" "${=path_to_archive}" ;;
|
||||||
|
(*.tar) tar -cvf "${archive_name}" "${=path_to_archive}" ;;
|
||||||
|
(*.zip|*.jar) zip -r "${archive_name}" "${=path_to_archive}" ;;
|
||||||
|
(*.rar) rar a "${archive_name}" "${=path_to_archive}" ;;
|
||||||
|
(*.7z) 7za a "${archive_name}" "${=path_to_archive}" ;;
|
||||||
|
(*.gz) print "\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz" ;;
|
||||||
|
(*.bz2) print "\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2" ;;
|
||||||
|
(*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;;
|
||||||
|
(*.lzma) print "\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma" ;;
|
||||||
|
(*) print "\nunknown archive type for archive: ${archive_name}" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# Lists the contents of archives.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function lsarchive {
|
||||||
|
|
||||||
|
local verbose
|
||||||
|
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
cat >&2 <<EOF
|
||||||
|
usage: $0 [-option] [file ...]
|
||||||
|
|
||||||
|
options:
|
||||||
|
-v, --verbose verbose archive listing
|
||||||
|
|
||||||
|
Report bugs to <sorin.ionescu@gmail.com>.
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then
|
||||||
|
verbose=0
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
while (( $# > 0 )); do
|
||||||
|
if [[ ! -s "$1" ]]; then
|
||||||
|
print "$0: file not valid: $1" >&2
|
||||||
|
shift
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1:l" in
|
||||||
|
(*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;;
|
||||||
|
(*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;;
|
||||||
|
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \
|
||||||
|
&& tar --xz -t${verbose:+v}f "$1" \
|
||||||
|
|| xzcat "$1" | tar t${verbose:+v}f - ;;
|
||||||
|
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
|
||||||
|
&& tar --lzma -t${verbose:+v}f "$1" \
|
||||||
|
|| lzcat "$1" | tar x${verbose:+v}f - ;;
|
||||||
|
(*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f "$1" ;;
|
||||||
|
(*.tar) tar t${verbose:+v}f "$1" ;;
|
||||||
|
(*.zip|*.jar) unzip -l${verbose:+v} "$1" ;;
|
||||||
|
(*.rar) ( (( $+commands[unrar] )) \
|
||||||
|
&& unrar ${${verbose:+v}:-l} "$1" ) \
|
||||||
|
|| ( (( $+commands[rar] )) \
|
||||||
|
&& rar ${${verbose:+v}:-l} "$1" ) \
|
||||||
|
|| lsar ${verbose:+-l} "$1" ;;
|
||||||
|
(*.7z) 7za l "$1" ;;
|
||||||
|
(*)
|
||||||
|
print "$0: cannot list: $1" >&2
|
||||||
|
success=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
#
|
||||||
|
# Extracts the contents of archives.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function unarchive {
|
||||||
|
|
||||||
|
local remove_archive
|
||||||
|
local success
|
||||||
|
local file_name
|
||||||
|
local file_path
|
||||||
|
local extract_dir
|
||||||
|
local _gzip_bin _bzip2_bin _xz_bin _zstd_bin
|
||||||
|
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
cat >&2 <<EOF
|
||||||
|
usage: $0 [-option] [file ...]
|
||||||
|
|
||||||
|
options:
|
||||||
|
-r, --remove remove archive
|
||||||
|
|
||||||
|
Report bugs to <sorin.ionescu@gmail.com>.
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
remove_archive=1
|
||||||
|
if [[ "$1" == "-r" || "$1" == "--remove" ]]; then
|
||||||
|
remove_archive=0
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# here, we check for dropin/multi-threaded replacements
|
||||||
|
# this should eventually be moved to modules/archive/init.zsh
|
||||||
|
# as a global alias
|
||||||
|
if (( $+commands[unpigz] )); then
|
||||||
|
_gzip_bin='unpigz'
|
||||||
|
else
|
||||||
|
_gzip_bin='gunzip'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[pixz] )); then
|
||||||
|
_xz_bin='pixz -d'
|
||||||
|
else
|
||||||
|
_xz_bin='xz'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[lbunzip2] )); then
|
||||||
|
_bzip2_bin='lbunzip2'
|
||||||
|
elif (( $+commands[pbunzip2] )); then
|
||||||
|
_bzip2_bin='pbunzip2'
|
||||||
|
else
|
||||||
|
_bzip2_bin='bunzip2'
|
||||||
|
fi
|
||||||
|
|
||||||
|
_zstd_bin='zstd'
|
||||||
|
|
||||||
|
while (( $# > 0 )); do
|
||||||
|
if [[ ! -s "$1" ]]; then
|
||||||
|
print "$0: file not valid: $1" >&2
|
||||||
|
shift
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
success=0
|
||||||
|
file_name="${1:t}"
|
||||||
|
file_path="${1:A}"
|
||||||
|
extract_dir="${file_name:r}"
|
||||||
|
case "$1:l" in
|
||||||
|
(*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;;
|
||||||
|
(*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;;
|
||||||
|
(*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;;
|
||||||
|
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
|
||||||
|
&& tar --lzma -xvf "$1" \
|
||||||
|
|| lzcat "$1" | tar -xvf - ;;
|
||||||
|
(*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;;
|
||||||
|
(*.tar) tar -xvf "$1" ;;
|
||||||
|
(*.gz) gunzip "$1" ;;
|
||||||
|
(*.bz2) bunzip2 "$1" ;;
|
||||||
|
(*.xz) unxz "$1" ;;
|
||||||
|
(*.lzma) unlzma "$1" ;;
|
||||||
|
(*.Z) uncompress "$1" ;;
|
||||||
|
(*.zip|*.jar) unzip "$1" -d $extract_dir ;;
|
||||||
|
(*.rar) ( (( $+commands[unrar] )) \
|
||||||
|
&& unrar x -ad "$1" ) \
|
||||||
|
|| ( (( $+commands[rar] )) \
|
||||||
|
&& rar x -ad "$1" ) \
|
||||||
|
|| unar -d "$1" ;;
|
||||||
|
(*.7z) 7za x "$1" ;;
|
||||||
|
(*.deb)
|
||||||
|
mkdir -p "$extract_dir/control"
|
||||||
|
mkdir -p "$extract_dir/data"
|
||||||
|
cd "$extract_dir"; ar vx "${file_path}" > /dev/null
|
||||||
|
cd control; tar xvf ../control.tar.*
|
||||||
|
cd ../data; tar xvf ../data.tar.*
|
||||||
|
cd ..; rm control.tar.* data.tar.* debian-binary
|
||||||
|
cd ..
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
print "$0: cannot extract: $1" >&2
|
||||||
|
success=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
(( success = $success > 0 ? $success : $? ))
|
||||||
|
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# Autosuggestions
|
||||||
|
|
||||||
|
Integrates [zsh-autosuggestions][1] into Prezto, which implements the
|
||||||
|
[Fish shell][2]'s autosuggestions feature, where the user can type in any part
|
||||||
|
of a previously entered command and Zsh suggests commands as you type based on
|
||||||
|
history and completions.
|
||||||
|
|
||||||
|
If this module is used in conjunction with the [_`syntax-highlighting`_][3]
|
||||||
|
module, this module must be loaded _after_ the _`syntax-highlighting`_ module.
|
||||||
|
|
||||||
|
Additionally, if this module is used in conjunction with the
|
||||||
|
[_`history-substring-search`_][4] module, this module must be loaded _after_ the
|
||||||
|
_`history-substring-search`_ module as well.
|
||||||
|
|
||||||
|
To elaborate, the relative order of loading the modules would be
|
||||||
|
_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
New features and bug fixes should be submitted to the [zsh-autosuggestions][1]
|
||||||
|
project according to its rules and regulations. This module will be synchronized
|
||||||
|
against it.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
### Highlighting
|
||||||
|
|
||||||
|
If colors are enabled, _autosuggestions_ will automatically highlight
|
||||||
|
positive results.
|
||||||
|
|
||||||
|
To enable highlighting for this module only, add the following line to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:autosuggestions' color 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
To set the query found color, add the following line to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:autosuggestions:color' found ''
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Autosuggestions from previous sessions don't show up
|
||||||
|
|
||||||
|
For autosuggestions from previous shell sessions to work, please make sure you
|
||||||
|
also have the `history` module enabled.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][5]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://github.com/tarruda/zsh-autosuggestions
|
||||||
|
[2]: https://fishshell.com
|
||||||
|
[3]: ../syntax-highlighting#readme
|
||||||
|
[4]: ../history-substring-search#readme
|
||||||
|
[5]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#
|
||||||
|
# Integrates zsh-autosuggestions into Prezto.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load dependencies.
|
||||||
|
pmodload 'editor'
|
||||||
|
|
||||||
|
# Source module files.
|
||||||
|
source "${0:h}/external/zsh-autosuggestions.zsh" || return 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Highlighting
|
||||||
|
#
|
||||||
|
|
||||||
|
# Set highlight color, default 'fg=8'.
|
||||||
|
zstyle -s ':prezto:module:autosuggestions:color' found \
|
||||||
|
'ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE' || ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
|
||||||
|
|
||||||
|
# Disable highlighting.
|
||||||
|
if ! zstyle -t ':prezto:module:autosuggestions' color; then
|
||||||
|
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Key Bindings
|
||||||
|
#
|
||||||
|
|
||||||
|
if [[ -n "$key_info" ]]; then
|
||||||
|
# vi
|
||||||
|
bindkey -M viins "$key_info[Control]F" vi-forward-word
|
||||||
|
bindkey -M viins "$key_info[Control]E" vi-add-eol
|
||||||
|
fi
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Command-Not-Found
|
||||||
|
|
||||||
|
When you try to use a command that is not available locally, searches the
|
||||||
|
package manager for a package offering that command and suggests the proper
|
||||||
|
install command.
|
||||||
|
|
||||||
|
Debian and Arch Linux based distributions use the [`command-not-found`][1] tool.
|
||||||
|
|
||||||
|
macOS uses Homebrew's [`command-not-found` clone][2]. This module will
|
||||||
|
automatically load it without needing to manually source `handler.sh` from
|
||||||
|
`.zshrc` per the [instructions][3].
|
||||||
|
|
||||||
|
Note: Prior to [Homebrew 4.6.12][4], you may have also needed to tap the
|
||||||
|
[`command-not-found` Homebrew repository][5]. This will still work as a
|
||||||
|
fallback when the `command-not-found` handler can't be detected in Homebrew
|
||||||
|
core, but the repository has been deprecated and may print a warning. After
|
||||||
|
upgrading Homebrew, it can be untapped.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][6]._
|
||||||
|
|
||||||
|
- [Joseph Booker](https://github.com/sargas)
|
||||||
|
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
|
||||||
|
|
||||||
|
[1]: https://code.launchpad.net/command-not-found
|
||||||
|
[2]: https://docs.brew.sh/Command-Not-Found
|
||||||
|
[3]: https://docs.brew.sh/Command-Not-Found#install
|
||||||
|
[4]: https://github.com/Homebrew/brew/releases/tag/4.6.12
|
||||||
|
[5]: https://github.com/Homebrew/homebrew-command-not-found
|
||||||
|
[6]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#
|
||||||
|
# Displays installation information for not found commands.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Joseph Jon Booker <joe@neoturbine.net>
|
||||||
|
# Indrajit Raychaudhuri <irc+code@indrajit.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load command-not-found on Debian-based distributions.
|
||||||
|
if [[ -s /etc/zsh_command_not_found ]]; then
|
||||||
|
source /etc/zsh_command_not_found
|
||||||
|
# Load command-not-found on Arch Linux-based distributions.
|
||||||
|
elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then
|
||||||
|
source /usr/share/doc/pkgfile/command-not-found.zsh
|
||||||
|
# Load command-not-found on macOS when Homebrew is present. Check explicitly
|
||||||
|
# for MacOS, since homebrew can be installed on Linux as a supplementary PM
|
||||||
|
elif [[ "$OSTYPE" =~ ^darwin ]] && (( $+commands[brew] )); then
|
||||||
|
homebrew_repo=${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}
|
||||||
|
# Look for handler in Homebrew core (as of >=4.6.12), then in Taps (< 4.6.12)
|
||||||
|
for hb_cnf_handler in "$homebrew_repo"/{Library/Homebrew/command-not-found/handler.sh,Taps/homebrew/homebrew-command-not-found/handler.sh}; do
|
||||||
|
if [ -f "$hb_cnf_handler" ]; then
|
||||||
|
source "$hb_cnf_handler"
|
||||||
|
unset hb_cnf_handler homebrew_repo
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "$hb_cnf_handler" ]; then
|
||||||
|
unset hb_cnf_handler homebrew_repo
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
# Return if requirements are not found.
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# Completion
|
||||||
|
|
||||||
|
Loads and configures <kbd>TAB</kbd> completion and provides additional
|
||||||
|
completions from the [zsh-completions][1] project.
|
||||||
|
|
||||||
|
This module must be loaded late _after_ the _`utility`_ module and all other
|
||||||
|
modules that provide completion definitions.
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
- `COMPLETE_IN_WORD` complete from both ends of a word.
|
||||||
|
- `ALWAYS_TO_END` move cursor to the end of a completed word.
|
||||||
|
- `PATH_DIRS` perform path search even on command names with slashes.
|
||||||
|
- `AUTO_MENU` show completion menu on a successive <kbd>TAB</kbd> press.
|
||||||
|
- `AUTO_LIST` automatically list choices on ambiguous completion.
|
||||||
|
- `AUTO_PARAM_SLASH` if completed parameter is a directory, add a trailing
|
||||||
|
slash (`/`).
|
||||||
|
- `EXTENDED_GLOB` needed for file modification glob modifiers with _compinit_.
|
||||||
|
- `MENU_COMPLETE` do not autoselect the first completion entry.
|
||||||
|
- `FLOW_CONTROL` disable start/stop characters in shell editor.
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
- `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
### Ignore _`/etc/hosts`_ Entries
|
||||||
|
|
||||||
|
To ignore certain entries from static _`/etc/hosts`_ for host completion, add
|
||||||
|
the following lines in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ with the IP addresses of
|
||||||
|
the hosts as they appear in _`/etc/hosts`_. Both IP address and the associated
|
||||||
|
hostname(s) will be ignored during host completion. However, some of the entries
|
||||||
|
ignored from _`/etc/hosts`_ still might appear during completion because of
|
||||||
|
their presence in _ssh_ configuration or history).
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \
|
||||||
|
'0.0.0.0' '127.0.0.1'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
Completions should be submitted to the [zsh-completions][1] project according to
|
||||||
|
its rules and regulations. This module will be synchronized against it.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][3]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://github.com/zsh-users/zsh-completions
|
||||||
|
[2]: https://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles
|
||||||
|
[3]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
#
|
||||||
|
# Sets completion options.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Robby Russell <robby@planetargon.com>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if [[ $TERM == dumb ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add zsh-completions to $fpath.
|
||||||
|
fpath=(${0:h}/external/src $fpath)
|
||||||
|
|
||||||
|
# Add completion for keg-only brewed curl on macOS when available.
|
||||||
|
if (( $+commands[brew] )); then
|
||||||
|
brew_prefix=${HOMEBREW_PREFIX:-${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}}
|
||||||
|
# $HOMEBREW_PREFIX defaults to $HOMEBREW_REPOSITORY but is explicitly set to
|
||||||
|
# /usr/local when $HOMEBREW_REPOSITORY is /usr/local/Homebrew.
|
||||||
|
# https://github.com/Homebrew/brew/blob/2a850e02d8f2dedcad7164c2f4b95d340a7200bb/bin/brew#L66-L69
|
||||||
|
[[ $brew_prefix == '/usr/local/Homebrew' ]] && brew_prefix=$brew_prefix:h
|
||||||
|
fpath=($brew_prefix/opt/curl/share/zsh/site-functions(/N) $fpath)
|
||||||
|
unset brew_prefix
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Options
|
||||||
|
#
|
||||||
|
|
||||||
|
setopt COMPLETE_IN_WORD # Complete from both ends of a word.
|
||||||
|
setopt ALWAYS_TO_END # Move cursor to the end of a completed word.
|
||||||
|
setopt PATH_DIRS # Perform path search even on command names with slashes.
|
||||||
|
setopt AUTO_MENU # Show completion menu on a successive tab press.
|
||||||
|
setopt AUTO_LIST # Automatically list choices on ambiguous completion.
|
||||||
|
setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash.
|
||||||
|
setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit.
|
||||||
|
unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
|
||||||
|
unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Variables
|
||||||
|
#
|
||||||
|
|
||||||
|
# Standard style used by default for 'list-colors'
|
||||||
|
LS_COLORS=${LS_COLORS:-'di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Initialization
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load and initialize the completion system ignoring insecure directories with a
|
||||||
|
# cache time of 20 hours, so it should almost always regenerate the first time a
|
||||||
|
# shell is opened each day.
|
||||||
|
autoload -Uz compinit
|
||||||
|
_comp_path="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump"
|
||||||
|
# #q expands globs in conditional expressions
|
||||||
|
if [[ $_comp_path(#qNmh-20) ]]; then
|
||||||
|
# -C (skip function check) implies -i (skip security check).
|
||||||
|
compinit -C -d "$_comp_path"
|
||||||
|
else
|
||||||
|
mkdir -p "$_comp_path:h"
|
||||||
|
compinit -i -d "$_comp_path"
|
||||||
|
# Keep $_comp_path younger than cache time even if it isn't regenerated.
|
||||||
|
touch "$_comp_path"
|
||||||
|
fi
|
||||||
|
unset _comp_path
|
||||||
|
|
||||||
|
#
|
||||||
|
# Styles
|
||||||
|
#
|
||||||
|
|
||||||
|
# Defaults.
|
||||||
|
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||||
|
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
|
||||||
|
|
||||||
|
# Use caching to make completion for commands such as dpkg and apt usable.
|
||||||
|
zstyle ':completion::complete:*' use-cache on
|
||||||
|
zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache"
|
||||||
|
|
||||||
|
# Case-insensitive (all), partial-word, and then substring completion.
|
||||||
|
if zstyle -t ':prezto:module:completion:*' case-sensitive; then
|
||||||
|
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||||
|
setopt CASE_GLOB
|
||||||
|
else
|
||||||
|
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'm:{[:upper:]}={[:lower:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||||
|
unsetopt CASE_GLOB
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Group matches and describe.
|
||||||
|
zstyle ':completion:*:*:*:*:*' menu select
|
||||||
|
zstyle ':completion:*:matches' group 'yes'
|
||||||
|
zstyle ':completion:*:options' description 'yes'
|
||||||
|
zstyle ':completion:*:options' auto-description '%d'
|
||||||
|
zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
|
||||||
|
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
|
||||||
|
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
|
||||||
|
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
|
||||||
|
zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
zstyle ':completion:*' verbose yes
|
||||||
|
|
||||||
|
# Fuzzy match mistyped completions.
|
||||||
|
zstyle ':completion:*' completer _complete _match _approximate
|
||||||
|
zstyle ':completion:*:match:*' original only
|
||||||
|
zstyle ':completion:*:approximate:*' max-errors 1 numeric
|
||||||
|
|
||||||
|
# Increase the number of errors based on the length of the typed word. But make
|
||||||
|
# sure to cap (at 7) the max-errors to avoid hanging.
|
||||||
|
zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)'
|
||||||
|
|
||||||
|
# Don't complete unavailable commands.
|
||||||
|
zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
|
||||||
|
|
||||||
|
# Array completion element sorting.
|
||||||
|
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
|
||||||
|
|
||||||
|
# Directories
|
||||||
|
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||||
|
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
|
||||||
|
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
|
||||||
|
zstyle ':completion:*' squeeze-slashes true
|
||||||
|
|
||||||
|
# History
|
||||||
|
zstyle ':completion:*:history-words' stop yes
|
||||||
|
zstyle ':completion:*:history-words' remove-all-dups yes
|
||||||
|
zstyle ':completion:*:history-words' list false
|
||||||
|
zstyle ':completion:*:history-words' menu yes
|
||||||
|
|
||||||
|
# Environment Variables
|
||||||
|
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
|
||||||
|
|
||||||
|
# Populate hostname completion. But allow ignoring custom entries from static
|
||||||
|
# */etc/hosts* which might be uninteresting.
|
||||||
|
zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores'
|
||||||
|
|
||||||
|
zstyle -e ':completion:*:hosts' hosts 'reply=(
|
||||||
|
${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
|
||||||
|
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*}
|
||||||
|
${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
|
||||||
|
)'
|
||||||
|
|
||||||
|
# Don't complete uninteresting users...
|
||||||
|
zstyle ':completion:*:*:*:users' ignored-patterns \
|
||||||
|
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
|
||||||
|
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
|
||||||
|
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
|
||||||
|
mailman mailnull mldonkey mysql nagios \
|
||||||
|
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
|
||||||
|
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
|
||||||
|
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'
|
||||||
|
|
||||||
|
# ... unless we really want to.
|
||||||
|
zstyle '*' single-ignored show
|
||||||
|
|
||||||
|
# Ignore multiple entries.
|
||||||
|
zstyle ':completion:*:(rm|kill|diff):*' ignore-line other
|
||||||
|
zstyle ':completion:*:rm:*' file-patterns '*:all-files'
|
||||||
|
|
||||||
|
# Kill
|
||||||
|
zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w'
|
||||||
|
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01'
|
||||||
|
zstyle ':completion:*:*:kill:*' menu yes select
|
||||||
|
zstyle ':completion:*:*:kill:*' force-list always
|
||||||
|
zstyle ':completion:*:*:kill:*' insert-ids single
|
||||||
|
|
||||||
|
# Man
|
||||||
|
zstyle ':completion:*:manuals' separate-sections true
|
||||||
|
zstyle ':completion:*:manuals.(^1*)' insert-sections true
|
||||||
|
|
||||||
|
# Media Players
|
||||||
|
zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
|
||||||
|
zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
|
||||||
|
zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories'
|
||||||
|
zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories'
|
||||||
|
|
||||||
|
# Mutt
|
||||||
|
if [[ -s "$HOME/.mutt/aliases" ]]; then
|
||||||
|
zstyle ':completion:*:*:mutt:*' menu yes select
|
||||||
|
zstyle ':completion:*:mutt:*' users ${${${(f)"$(<"$HOME/.mutt/aliases")"}#alias[[:space:]]}%%[[:space:]]*}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# SSH/SCP/RSYNC
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
|
||||||
|
zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
|
||||||
|
zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Directory
|
||||||
|
|
||||||
|
Sets directory options and defines directory aliases.
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
- `AUTO_CD` auto changes to a directory without typing `cd`.
|
||||||
|
- `AUTO_PUSHD` pushes the old directory onto the stack on `cd`.
|
||||||
|
- `PUSHD_IGNORE_DUPS` does not store duplicates in the stack.
|
||||||
|
- `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`.
|
||||||
|
- `PUSHD_TO_HOME` pushes to the home directory when no argument is given.
|
||||||
|
- `CDABLE_VARS` changes directory to a path stored in a variable.
|
||||||
|
- `MULTIOS` writes to multiple descriptors.
|
||||||
|
- `EXTENDED_GLOB` uses extended globbing syntax.
|
||||||
|
- `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and
|
||||||
|
`>>!` to bypass.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
Aliases are enabled by default. To disable them, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:directory:alias' skip 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
- `d` prints the contents of the directory stack.
|
||||||
|
- `1 ... 9` changes the directory to the **n** previous one.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][1]._
|
||||||
|
|
||||||
|
- [James Cox](https://github.com/imajes)
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#
|
||||||
|
# Sets directory options and defines directory aliases.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# James Cox <james@imaj.es>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Options
|
||||||
|
#
|
||||||
|
|
||||||
|
setopt AUTO_CD # Auto changes to a directory without typing cd.
|
||||||
|
setopt AUTO_PUSHD # Push the old directory onto the stack on cd.
|
||||||
|
setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack.
|
||||||
|
setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd.
|
||||||
|
setopt PUSHD_TO_HOME # Push to home directory when no argument is given.
|
||||||
|
setopt CDABLE_VARS # Change directory to a path stored in a variable.
|
||||||
|
setopt MULTIOS # Write to multiple descriptors.
|
||||||
|
setopt EXTENDED_GLOB # Use extended globbing syntax.
|
||||||
|
unsetopt CLOBBER # Do not overwrite existing files with > and >>.
|
||||||
|
# Use >! and >>! to bypass.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! zstyle -t ':prezto:module:directory:alias' skip; then
|
||||||
|
alias -- -='cd -'
|
||||||
|
alias d='dirs -v'
|
||||||
|
for index ({1..9}) alias "$index"="cd +${index}"; unset index
|
||||||
|
fi
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# DNF
|
||||||
|
|
||||||
|
Defines [dnf][1] aliases.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
- `dnfc` removes package(s) and leaves.
|
||||||
|
- `dnfi` installs package(s).
|
||||||
|
- `dnfh` displays history.
|
||||||
|
- `dnfl` lists packages.
|
||||||
|
- `dnfL` lists installed packages.
|
||||||
|
- `dnfq` displays package information.
|
||||||
|
- `dnfr` removes package(s).
|
||||||
|
- `dnfs` searches for a package.
|
||||||
|
- `dnfu` updates packages.
|
||||||
|
- `dnfU` upgrades packages.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][2]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://fedoraproject.org/wiki/Features/DNF
|
||||||
|
[2]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#
|
||||||
|
# Defines dnf aliases.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# FireWave <firewave@free.fr>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if (( ! $+commands[dnf] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
alias dnfc='sudo dnf clean all' # Cleans the cache.
|
||||||
|
alias dnfh='dnf history' # Displays history.
|
||||||
|
alias dnfi='sudo dnf install' # Installs package(s).
|
||||||
|
alias dnfl='dnf list' # Lists packages.
|
||||||
|
alias dnfL='dnf list installed' # Lists installed packages.
|
||||||
|
alias dnfq='dnf info' # Displays package information.
|
||||||
|
alias dnfr='sudo dnf remove' # Removes package(s).
|
||||||
|
alias dnfs='dnf search' # Searches for a package.
|
||||||
|
alias dnfu='sudo dnf update' # Updates packages.
|
||||||
|
alias dnfU='sudo dnf upgrade' # Upgrades packages.
|
||||||
|
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
# Docker
|
||||||
|
|
||||||
|
Defines [Docker][1] aliases and functions.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
- `dk` is short for `docker`
|
||||||
|
- `dka` Attach to a running container
|
||||||
|
- `dkb` Build an image from a Dockerfile
|
||||||
|
- `dkd` Inspect changes on a container's filesystem
|
||||||
|
- `dkdf` Show docker filesystem usage
|
||||||
|
- `dke` Run a command in a running container
|
||||||
|
- `dkE` Run an interactive command in a running container
|
||||||
|
- `dkh` Show the history of an image
|
||||||
|
- `dki` List images
|
||||||
|
- `dkin` Return low-level information on a container, image or task
|
||||||
|
- `dkk` Kill a running container
|
||||||
|
- `dkl` Fetch the logs of a container
|
||||||
|
- `dkli` Log in to a Docker registry
|
||||||
|
- `dklo` Log out from a Docker registry
|
||||||
|
- `dkls` is alias for `dkps`
|
||||||
|
- `dkp` Pause all processes within one or more containers
|
||||||
|
- `dkP` Unpause all processes within one or more containers
|
||||||
|
- `dkpl` Pull an image or a repository from a registry
|
||||||
|
- `dkph` Push an image or a repository to a registry
|
||||||
|
- `dkps` List containers
|
||||||
|
- `dkpsa` List all containers (default lists just running)
|
||||||
|
- `dkr` Run a command in a new container
|
||||||
|
- `dkR` Run an interactive command in a new container and automatically remove
|
||||||
|
the container when it exits
|
||||||
|
- `dkRe` like `dkR` and set entry point to `/bin/bash`
|
||||||
|
- `dkrm` Remove one or more containers
|
||||||
|
- `dkrmi` Remove one or more images
|
||||||
|
- `dkrmC` Clean up exited containers
|
||||||
|
- `dkrmI` Clean up dangling images
|
||||||
|
- `dkrmV` Clean up unused volumes ( Docker >= 1.9 )
|
||||||
|
- `dkrn` Rename a container
|
||||||
|
- `dks` Start one or more stopped containers
|
||||||
|
- `dkS` Restart a container
|
||||||
|
- `dkss` Display a live stream of container(s) resource usage statistics
|
||||||
|
- `dksv` Save one or more images to a tar archive (streamed to STDOUT by
|
||||||
|
default)
|
||||||
|
- `dkt` Tag an image into a repository
|
||||||
|
- `dktop` Display the running processes of a container
|
||||||
|
- `dkup` Update configuration of one or more containers
|
||||||
|
- `dkV` Manage Docker volumes
|
||||||
|
- `dkv` Show the Docker version information
|
||||||
|
- `dkw` Block until a container stops, then print its exit code
|
||||||
|
- `dkx` Stop a running container
|
||||||
|
|
||||||
|
#### container (C)
|
||||||
|
|
||||||
|
- `dkC` Manage containers
|
||||||
|
- `dkCa` Attach to a running container
|
||||||
|
- `dkCcp` Copy files/folders between a container and the local filesystem
|
||||||
|
- `dkCd` Inspect changes on a container's filesystem
|
||||||
|
- `dkCe` Run a command in a running container
|
||||||
|
- `dkCin` Display detailed information on one or more containers
|
||||||
|
- `dkCk` Kill one or more running containers
|
||||||
|
- `dkCl` Fetch the logs of a container
|
||||||
|
- `dkCls` List containers
|
||||||
|
- `dkCp` Pause all processes within one or more containers
|
||||||
|
- `dkCpr` Remove all stopped containers
|
||||||
|
- `dkCrn` Rename a container
|
||||||
|
- `dkCS` Restart one or more containers
|
||||||
|
- `dkCrm` Remove one or more containers
|
||||||
|
- `dkCr` Run a command in a new container
|
||||||
|
- `dkCR` Run an interactive command in a new container and automatically remove
|
||||||
|
the container when it exits
|
||||||
|
- `dkCRe` like `dkCR` and set entry point to `/bin/bash`
|
||||||
|
- `dkCs` Start one or more stopped containers
|
||||||
|
- `dkCss` Display a live stream of container(s) resource usage statistics
|
||||||
|
- `dkCx` Stop one or more running containers
|
||||||
|
- `dkCtop` Display the running processes of a container
|
||||||
|
- `dkCP` Unpause all processes within one or more containers
|
||||||
|
- `dkCup` Update configuration of one or more containers
|
||||||
|
- `dkCw` Block until one or more containers stop, then print their exit codes
|
||||||
|
|
||||||
|
#### image (I)
|
||||||
|
|
||||||
|
- `dkI` Manage images
|
||||||
|
- `dkIb` Build an image from a Dockerfile
|
||||||
|
- `dkIh` Show the history of an image
|
||||||
|
- `dkIim` Import the contents from a tarball to create a filesystem image
|
||||||
|
- `dkIin` Display detailed information on one or more images
|
||||||
|
- `dkIls` List images
|
||||||
|
- `dkIpr` Remove unused images
|
||||||
|
- `dkIpl` Pull an image or a repository from a registry
|
||||||
|
- `dkIph` Push an image or a repository to a registry
|
||||||
|
- `dkIrm` Remove one or more images
|
||||||
|
- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by
|
||||||
|
default)
|
||||||
|
- `dkIt` Tag an image into a repository
|
||||||
|
|
||||||
|
#### volume (V)
|
||||||
|
|
||||||
|
- `dkV` Manage volumes
|
||||||
|
- `dkVin` Display detailed information on one or more volumes
|
||||||
|
- `dkVls` List volumes
|
||||||
|
- `dkVpr` Remove all unused volumes
|
||||||
|
- `dkVrm` Remove one or more volumes
|
||||||
|
|
||||||
|
#### network (N)
|
||||||
|
|
||||||
|
- `dkN` Manage networks
|
||||||
|
- `dkNs` Connect a container to a network
|
||||||
|
- `dkNx` Disconnects a container from a network
|
||||||
|
- `dkNin` Displays detailed information on a network
|
||||||
|
- `dkNls` Lists all the networks created by the user
|
||||||
|
- `dkNpr` Remove all unused networks
|
||||||
|
- `dkNrm` Deletes one or more networks
|
||||||
|
|
||||||
|
#### system (Y)
|
||||||
|
|
||||||
|
- `dkY` Manage Docker
|
||||||
|
- `dkYdf` Show docker filesystem usage
|
||||||
|
- `dkYpr` Remove unused data
|
||||||
|
|
||||||
|
#### stack (K)
|
||||||
|
|
||||||
|
- `dkK` Manage Docker stacks
|
||||||
|
- `dkKls` List stacks
|
||||||
|
- `dkKps` List the tasks in the stack
|
||||||
|
- `dkKrm` Remove the stack
|
||||||
|
|
||||||
|
#### swarm (W)
|
||||||
|
|
||||||
|
- `dkW` Manage Docker Swarm
|
||||||
|
|
||||||
|
### Docker Machine
|
||||||
|
|
||||||
|
- `dkm` is short for `docker-machine`
|
||||||
|
- `dkma` Get or set the active machine
|
||||||
|
- `dkmcp` Copy files between machines
|
||||||
|
- `dkmd` Set up the default machine ; alowing you to use `dkme` without
|
||||||
|
arguments
|
||||||
|
- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to
|
||||||
|
toggle to staging)
|
||||||
|
- `dkmin` Inspect information about a machine
|
||||||
|
- `dkmip` Get the IP address of a machine
|
||||||
|
- `dkmk` Kill a machine
|
||||||
|
- `dkmls` List machines
|
||||||
|
- `dkmpr` Re-provision existing machines
|
||||||
|
- `dkmps` is alias for `dkmls`
|
||||||
|
- `dkmrg` Regenerate TLS Certificates for a machine
|
||||||
|
- `dkmrm` Remove a machine
|
||||||
|
- `dkms` Start a machine
|
||||||
|
- `dkmsh` Log into or run a command on a machine with SSH
|
||||||
|
- `dkmst` Get the status of a machine
|
||||||
|
- `dkmS` Restart a machine
|
||||||
|
- `dkmu` Get the URL of a machine
|
||||||
|
- `dkmup` Upgrade a machine to the latest version of Docker
|
||||||
|
- `dkmV` Show the Docker Machine version or a machine docker version
|
||||||
|
- `dkmx` Stop a machine
|
||||||
|
|
||||||
|
### Docker Compose
|
||||||
|
|
||||||
|
- `dkc` is short for `docker-compose`
|
||||||
|
- `dkcb` Build or rebuild services
|
||||||
|
- `dkcB` Build or rebuild services and do not use cache when building the image
|
||||||
|
- `dkcd` Stop and remove containers, networks, images, and volumes
|
||||||
|
- `dkce` Execute a command in a running container
|
||||||
|
- `dkck` Kill containers
|
||||||
|
- `dkcl` View output from containers
|
||||||
|
- `dkcls` is alias for `dkcps`
|
||||||
|
- `dkcp` Pause services
|
||||||
|
- `dkcP` Unpause services
|
||||||
|
- `dkcpl` Pull service images
|
||||||
|
- `dkcph` Push service images
|
||||||
|
- `dkcps` List containers
|
||||||
|
- `dkcr` Run a one-off command
|
||||||
|
- `dkcR` Run a one-off command and remove container after run.
|
||||||
|
- `dkcrm` Remove stopped containers
|
||||||
|
- `dkcs` Start services
|
||||||
|
- `dkcsc` Set number of containers for a service
|
||||||
|
- `dkcS` Restart services
|
||||||
|
- `dkcu` Create and start containers
|
||||||
|
- `dkcU` Create and start containers in detached mode: Run containers in the
|
||||||
|
background, print new container names
|
||||||
|
- `dkcV` Show the Docker-Compose version information
|
||||||
|
- `dkcx` Stop services
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
If you're having problems, use the [Prezto issue tracker][2].
|
||||||
|
|
||||||
|
## Acknowledgements
|
||||||
|
|
||||||
|
This module is a copy of [akarzim/zsh-docker-aliases][3] by [François Vantomme][4] (MIT License).
|
||||||
|
|
||||||
|
[1]: https://www.docker.com/
|
||||||
|
[2]: https://github.com/zsh-users/prezto/issues
|
||||||
|
[3]: https://github.com/akarzim/zsh-docker-aliases
|
||||||
|
[4]: https://github.com/akarzim
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
#
|
||||||
|
# Defines Docker aliases.
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# François Vantomme <akarzim@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
alias dk='docker'
|
||||||
|
alias dka='docker attach'
|
||||||
|
alias dkb='docker build'
|
||||||
|
alias dkd='docker diff'
|
||||||
|
alias dkdf='docker system df'
|
||||||
|
alias dke='docker exec'
|
||||||
|
alias dkE='docker exec -it'
|
||||||
|
alias dkh='docker history'
|
||||||
|
alias dki='docker images'
|
||||||
|
alias dkin='docker inspect'
|
||||||
|
alias dkim='docker import'
|
||||||
|
alias dkk='docker kill'
|
||||||
|
alias dkl='docker logs'
|
||||||
|
alias dkli='docker login'
|
||||||
|
alias dklo='docker logout'
|
||||||
|
alias dkls='docker ps'
|
||||||
|
alias dkp='docker pause'
|
||||||
|
alias dkP='docker unpause'
|
||||||
|
alias dkpl='docker pull'
|
||||||
|
alias dkph='docker push'
|
||||||
|
alias dkps='docker ps'
|
||||||
|
alias dkpsa='docker ps -a'
|
||||||
|
alias dkr='docker run'
|
||||||
|
alias dkR='docker run -it --rm'
|
||||||
|
alias dkRe='docker run -it --rm --entrypoint /bin/bash'
|
||||||
|
alias dkRM='docker system prune'
|
||||||
|
alias dkrm='docker rm'
|
||||||
|
alias dkrmi='docker rmi'
|
||||||
|
alias dkrn='docker rename'
|
||||||
|
alias dks='docker start'
|
||||||
|
alias dkS='docker restart'
|
||||||
|
alias dkss='docker stats'
|
||||||
|
alias dksv='docker save'
|
||||||
|
alias dkt='docker tag'
|
||||||
|
alias dktop='docker top'
|
||||||
|
alias dkup='docker update'
|
||||||
|
alias dkV='docker volume'
|
||||||
|
alias dkv='docker version'
|
||||||
|
alias dkw='docker wait'
|
||||||
|
alias dkx='docker stop'
|
||||||
|
|
||||||
|
## Container (C)
|
||||||
|
alias dkC='docker container'
|
||||||
|
alias dkCa='docker container attach'
|
||||||
|
alias dkCcp='docker container cp'
|
||||||
|
alias dkCd='docker container diff'
|
||||||
|
alias dkCe='docker container exec'
|
||||||
|
alias dkCin='docker container inspect'
|
||||||
|
alias dkCk='docker container kill'
|
||||||
|
alias dkCl='docker container logs'
|
||||||
|
alias dkCls='docker container ls'
|
||||||
|
alias dkCp='docker container pause'
|
||||||
|
alias dkCpr='docker container prune'
|
||||||
|
alias dkCrn='docker container rename'
|
||||||
|
alias dkCS='docker container restart'
|
||||||
|
alias dkCrm='docker container rm'
|
||||||
|
alias dkCr='docker container run'
|
||||||
|
alias dkCR='docker container run -it --rm'
|
||||||
|
alias dkCRe='docker container run -it --rm --entrypoint /bin/bash'
|
||||||
|
alias dkCs='docker container start'
|
||||||
|
alias dkCss='docker container stats'
|
||||||
|
alias dkCx='docker container stop'
|
||||||
|
alias dkCtop='docker container top'
|
||||||
|
alias dkCP='docker container unpause'
|
||||||
|
alias dkCup='docker container update'
|
||||||
|
alias dkCw='docker container wait'
|
||||||
|
|
||||||
|
## Image (I)
|
||||||
|
alias dkI='docker image'
|
||||||
|
alias dkIb='docker image build'
|
||||||
|
alias dkIh='docker image history'
|
||||||
|
alias dkIim='docker image import'
|
||||||
|
alias dkIin='docker image inspect'
|
||||||
|
alias dkIls='docker image ls'
|
||||||
|
alias dkIpr='docker image prune'
|
||||||
|
alias dkIpl='docker image pull'
|
||||||
|
alias dkIph='docker image push'
|
||||||
|
alias dkIrm='docker image rm'
|
||||||
|
alias dkIsv='docker image save'
|
||||||
|
alias dkIt='docker image tag'
|
||||||
|
|
||||||
|
## Volume (V)
|
||||||
|
alias dkV='docker volume'
|
||||||
|
alias dkVin='docker volume inspect'
|
||||||
|
alias dkVls='docker volume ls'
|
||||||
|
alias dkVpr='docker volume prune'
|
||||||
|
alias dkVrm='docker volume rm'
|
||||||
|
|
||||||
|
## Network (N)
|
||||||
|
alias dkN='docker network'
|
||||||
|
alias dkNs='docker network connect'
|
||||||
|
alias dkNx='docker network disconnect'
|
||||||
|
alias dkNin='docker network inspect'
|
||||||
|
alias dkNls='docker network ls'
|
||||||
|
alias dkNpr='docker network prune'
|
||||||
|
alias dkNrm='docker network rm'
|
||||||
|
|
||||||
|
## System (Y)
|
||||||
|
alias dkY='docker system'
|
||||||
|
alias dkYdf='docker system df'
|
||||||
|
alias dkYpr='docker system prune'
|
||||||
|
|
||||||
|
## Stack (K)
|
||||||
|
alias dkK='docker stack'
|
||||||
|
alias dkKls='docker stack ls'
|
||||||
|
alias dkKps='docker stack ps'
|
||||||
|
alias dkKrm='docker stack rm'
|
||||||
|
|
||||||
|
## Swarm (W)
|
||||||
|
alias dkW='docker swarm'
|
||||||
|
|
||||||
|
## CleanUp (rm)
|
||||||
|
# Clean up exited containers (docker < 1.13)
|
||||||
|
alias dkrmC='docker rm $(docker ps -qaf status=exited)'
|
||||||
|
# Clean up dangling images (docker < 1.13)
|
||||||
|
alias dkrmI='docker rmi $(docker images -qf dangling=true)'
|
||||||
|
# Clean up dangling volumes (docker < 1.13)
|
||||||
|
alias dkrmV='docker volume rm $(docker volume ls -qf dangling=true)'
|
||||||
|
|
||||||
|
|
||||||
|
# Docker Machine (m)
|
||||||
|
alias dkm='docker-machine'
|
||||||
|
alias dkma='docker-machine active'
|
||||||
|
alias dkmcp='docker-machine scp'
|
||||||
|
alias dkmin='docker-machine inspect'
|
||||||
|
alias dkmip='docker-machine ip'
|
||||||
|
alias dkmk='docker-machine kill'
|
||||||
|
alias dkmls='docker-machine ls'
|
||||||
|
alias dkmpr='docker-machine provision'
|
||||||
|
alias dkmps='docker-machine ps'
|
||||||
|
alias dkmrg='docker-machine regenerate-certs'
|
||||||
|
alias dkmrm='docker-machine rm'
|
||||||
|
alias dkms='docker-machine start'
|
||||||
|
alias dkmsh='docker-machine ssh'
|
||||||
|
alias dkmst='docker-machine status'
|
||||||
|
alias dkmS='docker-machine restart'
|
||||||
|
alias dkmu='docker-machine url'
|
||||||
|
alias dkmup='docker-machine upgrade'
|
||||||
|
alias dkmv='docker-machine version'
|
||||||
|
alias dkmx='docker-machine stop'
|
||||||
|
|
||||||
|
# Docker Compose (c)
|
||||||
|
alias dkc='docker compose'
|
||||||
|
alias dkcb='docker compose build'
|
||||||
|
alias dkcB='docker compose build --no-cache'
|
||||||
|
alias dkcd='docker compose down'
|
||||||
|
alias dkce='docker compose exec'
|
||||||
|
alias dkck='docker compose kill'
|
||||||
|
alias dkcl='docker compose logs'
|
||||||
|
alias dkcls='docker compose ps'
|
||||||
|
alias dkcp='docker compose pause'
|
||||||
|
alias dkcP='docker compose unpause'
|
||||||
|
alias dkcpl='docker compose pull'
|
||||||
|
alias dkcph='docker compose push'
|
||||||
|
alias dkcps='docker compose ps'
|
||||||
|
alias dkcr='docker compose run'
|
||||||
|
alias dkcR='docker compose run --rm'
|
||||||
|
alias dkcrm='docker compose rm'
|
||||||
|
alias dkcs='docker compose start'
|
||||||
|
alias dkcsc='docker compose scale'
|
||||||
|
alias dkcS='docker compose restart'
|
||||||
|
alias dkcu='docker compose up'
|
||||||
|
alias dkcU='docker compose up -d'
|
||||||
|
alias dkcv='docker compose version'
|
||||||
|
alias dkcx='docker compose stop'
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#
|
||||||
|
# Defines Docker aliases.
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# François Vantomme <akarzim@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if (( ! $+commands[docker] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Functions
|
||||||
|
#
|
||||||
|
|
||||||
|
# Set Docker Machine environment
|
||||||
|
function dkme {
|
||||||
|
if (( ! $+commands[docker-machine] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
eval $(docker-machine env $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set Docker Machine default machine
|
||||||
|
function dkmd {
|
||||||
|
if (( ! $+commands[docker-machine] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd ~/.docker/machine/machines
|
||||||
|
|
||||||
|
if [[ ! -d $1 ]]; then
|
||||||
|
echo "Docker machine '$1' does not exists. Abort."
|
||||||
|
popd
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -L default ]]; then
|
||||||
|
eval $(rm -f default)
|
||||||
|
elif [[ -d default ]]; then
|
||||||
|
echo "A default machine already exists. Abort."
|
||||||
|
popd
|
||||||
|
return 1
|
||||||
|
elif [[ -e default ]]; then
|
||||||
|
echo "A file named 'default' already exists. Abort."
|
||||||
|
popd
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
eval $(ln -s $1 default)
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
# Source module files.
|
||||||
|
source "${0:h}/alias.zsh"
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Dpkg
|
||||||
|
|
||||||
|
Defines [_dpkg_][1] aliases and functions.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
- `debc` cleans the cache.
|
||||||
|
- `debf` displays a file's package.
|
||||||
|
- `debi` installs packages from repositories.
|
||||||
|
- `debI` installs packages from files.
|
||||||
|
- `debq` displays package information.
|
||||||
|
- `debu` updates the package lists.
|
||||||
|
- `debU` upgrades outdated packages.
|
||||||
|
- `debx` removes packages.
|
||||||
|
- `debX` removes packages, their configuration, and unneeded dependencies.
|
||||||
|
- `debs` searches for packages.
|
||||||
|
- `deb-build` creates a basic deb package.
|
||||||
|
- `deb-kclean` removes all kernel images and headers, except for the ones in
|
||||||
|
use.
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
- `deb-clone` generates a script that can be used to duplicate a `dpkg`-based
|
||||||
|
system.
|
||||||
|
- `deb-history` displays `dpkg` history.
|
||||||
|
- `deb-kbuild` makes a `dpkg` Linux kernel package.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][2]._
|
||||||
|
|
||||||
|
- [Daniel Bolton](https://github.com/dbb)
|
||||||
|
- [Benjamin Boudreau](https://github.com/dreur)
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://wiki.debian.org/Teams/Dpkg
|
||||||
|
[2]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#
|
||||||
|
# Generates a script that can be used to duplicate a dpkg-based system.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Daniel Bolton <danielbarrettbolton@gmail.com>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function deb-clone {
|
||||||
|
|
||||||
|
local clone_script="${0}.sh"
|
||||||
|
local package_list=$(
|
||||||
|
perl \
|
||||||
|
-m 'AptPkg::Cache' \
|
||||||
|
-e '
|
||||||
|
$c=AptPkg::Cache->new;
|
||||||
|
for (keys %$c) {
|
||||||
|
push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';
|
||||||
|
}
|
||||||
|
print "$_ " for sort @a;
|
||||||
|
'
|
||||||
|
)
|
||||||
|
|
||||||
|
rm "$clone_script"
|
||||||
|
print '#!/bin/sh\n' > "$clone_script"
|
||||||
|
print "aptitude install ${package_list}\n" >> "$clone_script"
|
||||||
|
chmod +x "$clone_script"
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#
|
||||||
|
# Displays dpkg history.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Peter Leung <commandolinux@gmail.com>
|
||||||
|
# Benjamin Boudreau <boudreau.benjamin@gmail.com>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function deb-history {
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
(install)
|
||||||
|
zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
|
||||||
|
;;
|
||||||
|
(upgrade|remove)
|
||||||
|
zgrep --no-filename "$1" $(ls -rt /var/log/dpkg*)
|
||||||
|
;;
|
||||||
|
(rollback)
|
||||||
|
zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) \
|
||||||
|
| grep "$2" -A10000000 \
|
||||||
|
| grep "$3" -B10000000 \
|
||||||
|
| awk '{print $4"="$5}'
|
||||||
|
;;
|
||||||
|
(list)
|
||||||
|
zcat $(ls -rt /var/log/dpkg*)
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
cat >&2 <<EOF
|
||||||
|
Commands:
|
||||||
|
install - List installed packages
|
||||||
|
upgrade - List upgraded packages
|
||||||
|
remove - List removed packages
|
||||||
|
rollback - List rollback information
|
||||||
|
list - Display contents of dpkg logs
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#
|
||||||
|
# Makes a dpkg Linux kernel package.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Daniel Bolton <dbb@9y.com>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function deb-kbuild {
|
||||||
|
|
||||||
|
make-kpkg clean
|
||||||
|
MAKEFLAGS='' time fakeroot make-kpkg \
|
||||||
|
--append-to-version '-custom' \
|
||||||
|
--revision "$(date +"%Y%m%d")" \
|
||||||
|
kernel_image \
|
||||||
|
kernel_headers
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
#
|
||||||
|
# Defines dpkg aliases.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Daniel Bolton <dbb@9y.com>
|
||||||
|
# Benjamin Boudreau <boudreau.benjamin@gmail.com>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if (( ! $+commands[dpkg] && ! $+commands[apt-get] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
# Cleans the cache.
|
||||||
|
alias debc='sudo apt-get clean && sudo apt-get autoclean'
|
||||||
|
|
||||||
|
# Displays a file's package.
|
||||||
|
alias debf='apt-file search --regexp'
|
||||||
|
|
||||||
|
# Installs packages from repositories.
|
||||||
|
alias debi='sudo apt-get install'
|
||||||
|
|
||||||
|
# Installs packages from files.
|
||||||
|
alias debI='sudo dpkg -i'
|
||||||
|
|
||||||
|
# Displays package information.
|
||||||
|
alias debq='apt-cache show'
|
||||||
|
|
||||||
|
# Updates the package lists.
|
||||||
|
alias debu='sudo apt-get update'
|
||||||
|
|
||||||
|
# Upgrades outdated packages.
|
||||||
|
alias debU='sudo apt-get update && sudo apt-get dist-upgrade'
|
||||||
|
|
||||||
|
# Removes packages.
|
||||||
|
alias debx='sudo apt-get remove'
|
||||||
|
|
||||||
|
# Removes packages, their configuration, and unneeded dependencies.
|
||||||
|
alias debX='sudo apt-get remove --purge && sudo apt-get autoremove --purge'
|
||||||
|
|
||||||
|
# Searches for packages.
|
||||||
|
if (( $+commands[aptitude] )); then
|
||||||
|
alias debs='aptitude -F "* %p -> %d \n(%v/%V)" --no-gui --disable-columns search'
|
||||||
|
else
|
||||||
|
alias debs='apt-cache search'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Creates a basic deb package.
|
||||||
|
alias deb-build='time dpkg-buildpackage -rfakeroot -us -uc'
|
||||||
|
|
||||||
|
# Removes all kernel images and headers, except for the ones in use.
|
||||||
|
alias deb-kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))"'
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
# Editor
|
||||||
|
|
||||||
|
Sets editor specific key bindings options and variables.
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
- `BEEP` beep on error in line editor.
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
- `WORDCHARS` treat a given set of characters as part of a word.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
### Wordchars
|
||||||
|
|
||||||
|
To change what characters are considered part of a word, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor' wordchars <chars>
|
||||||
|
```
|
||||||
|
|
||||||
|
Defaults to `*?_-.[]~&;!#$%^(){}<>`.
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
|
||||||
|
To enable key bindings, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_,
|
||||||
|
and replace `'<bindings>'` with `'emacs'` or `'vi'`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor' key-bindings '<bindings>'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dot Expansion
|
||||||
|
|
||||||
|
To enable the auto conversion of .... to ../.., add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor' dot-expansion 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
### PS Context
|
||||||
|
|
||||||
|
To enable the prompt context to be set, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor' ps-context 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Theming
|
||||||
|
|
||||||
|
To indicate when the editor is in the primary keymap (emacs or viins), add
|
||||||
|
the following to your `theme_prompt_setup` function.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:primary' format '>>>'
|
||||||
|
```
|
||||||
|
|
||||||
|
To indicate when the editor is in the primary keymap (emacs or viins) insert
|
||||||
|
mode, add the following to your `theme_prompt_setup` function.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I'
|
||||||
|
```
|
||||||
|
|
||||||
|
To indicate when the editor is in the primary keymap (emacs or viins) overwrite
|
||||||
|
mode, add the following to your `theme_prompt_setup` function.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O'
|
||||||
|
```
|
||||||
|
|
||||||
|
To indicate when the editor is in the alternate keymap (vicmd), add the
|
||||||
|
following to your `theme_prompt_setup` function.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<'
|
||||||
|
```
|
||||||
|
|
||||||
|
To indicate when the editor is completing, add the following to your
|
||||||
|
`theme_prompt_setup` function.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:editor:info:completing' format '...'
|
||||||
|
```
|
||||||
|
|
||||||
|
Then add `$editor_info[context]`, where context is _keymap_, _insert_, or
|
||||||
|
_overwrite_, to `$PROMPT` or `$RPROMPT`.
|
||||||
|
|
||||||
|
## Convenience Functions
|
||||||
|
|
||||||
|
### bindkey-all
|
||||||
|
|
||||||
|
Provides a function `bindkey-all` which can be useful for checking how all of
|
||||||
|
the keys are bound. Normal `bindkey` command will only list the keys bound for
|
||||||
|
one keymap, which is not as useful if you want to grep through the output. The
|
||||||
|
keymap's names go to stderr so when you grep through `bindkey-all`'s output you
|
||||||
|
will still see the headings and can tell which keymap each binding goes to.
|
||||||
|
|
||||||
|
It will also pass through arguments so you can use bindkey-all to set bindings
|
||||||
|
for all keymaps at once. If provided arguments it will _not_ print out the
|
||||||
|
names of each of the keymaps, and just run the command for each keymap.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][1]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,457 @@
|
|||||||
|
#
|
||||||
|
# Sets key bindings.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if [[ "$TERM" == 'dumb' ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Options
|
||||||
|
#
|
||||||
|
|
||||||
|
setopt BEEP # Beep on error in line editor.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Variables
|
||||||
|
#
|
||||||
|
|
||||||
|
# Treat these characters as part of a word.
|
||||||
|
zstyle -s ':prezto:module:editor' wordchars 'WORDCHARS' \
|
||||||
|
|| WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
|
||||||
|
|
||||||
|
# Use human-friendly identifiers.
|
||||||
|
zmodload zsh/terminfo
|
||||||
|
typeset -gA key_info
|
||||||
|
key_info=(
|
||||||
|
'Control' '\C-'
|
||||||
|
'ControlLeft' '\e[1;5D \e[5D \e\e[D \eOd'
|
||||||
|
'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc'
|
||||||
|
'ControlPageUp' '\e[5;5~'
|
||||||
|
'ControlPageDown' '\e[6;5~'
|
||||||
|
'Escape' '\e'
|
||||||
|
'Meta' '\M-'
|
||||||
|
'Backspace' "^?"
|
||||||
|
'Delete' "^[[3~"
|
||||||
|
'F1' "$terminfo[kf1]"
|
||||||
|
'F2' "$terminfo[kf2]"
|
||||||
|
'F3' "$terminfo[kf3]"
|
||||||
|
'F4' "$terminfo[kf4]"
|
||||||
|
'F5' "$terminfo[kf5]"
|
||||||
|
'F6' "$terminfo[kf6]"
|
||||||
|
'F7' "$terminfo[kf7]"
|
||||||
|
'F8' "$terminfo[kf8]"
|
||||||
|
'F9' "$terminfo[kf9]"
|
||||||
|
'F10' "$terminfo[kf10]"
|
||||||
|
'F11' "$terminfo[kf11]"
|
||||||
|
'F12' "$terminfo[kf12]"
|
||||||
|
'Insert' "$terminfo[kich1]"
|
||||||
|
'Home' "$terminfo[khome]"
|
||||||
|
'PageUp' "$terminfo[kpp]"
|
||||||
|
'End' "$terminfo[kend]"
|
||||||
|
'PageDown' "$terminfo[knp]"
|
||||||
|
'Up' "$terminfo[kcuu1]"
|
||||||
|
'Left' "$terminfo[kcub1]"
|
||||||
|
'Down' "$terminfo[kcud1]"
|
||||||
|
'Right' "$terminfo[kcuf1]"
|
||||||
|
'BackTab' "$terminfo[kcbt]"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Set empty $key_info values to an invalid UTF-8 sequence to induce silent
|
||||||
|
# bindkey failure.
|
||||||
|
for key in "${(k)key_info[@]}"; do
|
||||||
|
if [[ -z "$key_info[$key]" ]]; then
|
||||||
|
key_info[$key]='�'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# External Editor
|
||||||
|
#
|
||||||
|
|
||||||
|
# Allow command line editing in an external editor.
|
||||||
|
autoload -Uz edit-command-line
|
||||||
|
zle -N edit-command-line
|
||||||
|
|
||||||
|
#
|
||||||
|
# Functions
|
||||||
|
#
|
||||||
|
# Runs bindkey but for all of the keymaps. Running it with no arguments will
|
||||||
|
# print out the mappings for all of the keymaps.
|
||||||
|
function bindkey-all {
|
||||||
|
local keymap
|
||||||
|
for keymap in "${(@f)$(bindkey -l)}"; do
|
||||||
|
[[ "$#" -eq 0 ]] && printf "#### %s\n" "${keymap}" 1>&2
|
||||||
|
bindkey -M "${keymap}" "$@"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
# Exposes information about the Zsh Line Editor via the $editor_info associative
|
||||||
|
# array.
|
||||||
|
function editor-info {
|
||||||
|
# Ensure that we're going to set the editor-info for prompts that
|
||||||
|
# are prezto managed and/or compatible.
|
||||||
|
if zstyle -t ':prezto:module:prompt' managed; then
|
||||||
|
# Clean up previous $editor_info.
|
||||||
|
unset editor_info
|
||||||
|
typeset -gA editor_info
|
||||||
|
|
||||||
|
if [[ "$KEYMAP" == 'vicmd' ]]; then
|
||||||
|
zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY'
|
||||||
|
editor_info[keymap]="$REPLY"
|
||||||
|
else
|
||||||
|
zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY'
|
||||||
|
editor_info[keymap]="$REPLY"
|
||||||
|
|
||||||
|
if [[ "$ZLE_STATE" == *overwrite* ]]; then
|
||||||
|
zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY'
|
||||||
|
editor_info[overwrite]="$REPLY"
|
||||||
|
else
|
||||||
|
zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY'
|
||||||
|
editor_info[overwrite]="$REPLY"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset REPLY
|
||||||
|
zle zle-reset-prompt
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N editor-info
|
||||||
|
|
||||||
|
# Reset the prompt based on the current context and
|
||||||
|
# the ps-context option.
|
||||||
|
function zle-reset-prompt {
|
||||||
|
if zstyle -t ':prezto:module:editor' ps-context; then
|
||||||
|
# If we aren't within one of the specified contexts, then we want to reset
|
||||||
|
# the prompt with the appropriate editor_info[keymap] if there is one.
|
||||||
|
if [[ $CONTEXT != (select|cont) ]]; then
|
||||||
|
zle reset-prompt
|
||||||
|
zle -R
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zle reset-prompt
|
||||||
|
zle -R
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N zle-reset-prompt
|
||||||
|
|
||||||
|
# Updates editor information when the keymap changes.
|
||||||
|
function zle-keymap-select {
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N zle-keymap-select
|
||||||
|
|
||||||
|
# Enables terminal application mode and updates editor information.
|
||||||
|
function zle-line-init {
|
||||||
|
# The terminal must be in application mode when ZLE is active for $terminfo
|
||||||
|
# values to be valid.
|
||||||
|
if (( $+terminfo[smkx] )); then
|
||||||
|
# Enable terminal application mode.
|
||||||
|
echoti smkx
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update editor information.
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N zle-line-init
|
||||||
|
|
||||||
|
# Disables terminal application mode and updates editor information.
|
||||||
|
function zle-line-finish {
|
||||||
|
# The terminal must be in application mode when ZLE is active for $terminfo
|
||||||
|
# values to be valid.
|
||||||
|
if (( $+terminfo[rmkx] )); then
|
||||||
|
# Disable terminal application mode.
|
||||||
|
echoti rmkx
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update editor information.
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N zle-line-finish
|
||||||
|
|
||||||
|
# Toggles emacs overwrite mode and updates editor information.
|
||||||
|
function overwrite-mode {
|
||||||
|
zle .overwrite-mode
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N overwrite-mode
|
||||||
|
|
||||||
|
# Enters vi insert mode and updates editor information.
|
||||||
|
function vi-insert {
|
||||||
|
zle .vi-insert
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N vi-insert
|
||||||
|
|
||||||
|
# Moves to the first non-blank character then enters vi insert mode and updates
|
||||||
|
# editor information.
|
||||||
|
function vi-insert-bol {
|
||||||
|
zle .vi-insert-bol
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N vi-insert-bol
|
||||||
|
|
||||||
|
# Enters vi replace mode and updates editor information.
|
||||||
|
function vi-replace {
|
||||||
|
zle .vi-replace
|
||||||
|
zle editor-info
|
||||||
|
}
|
||||||
|
zle -N vi-replace
|
||||||
|
|
||||||
|
# Expands .... to ../..
|
||||||
|
function expand-dot-to-parent-directory-path {
|
||||||
|
if [[ $LBUFFER = *.. ]]; then
|
||||||
|
LBUFFER+='/..'
|
||||||
|
else
|
||||||
|
LBUFFER+='.'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N expand-dot-to-parent-directory-path
|
||||||
|
|
||||||
|
# Displays an indicator when completing.
|
||||||
|
function expand-or-complete-with-indicator {
|
||||||
|
local indicator
|
||||||
|
zstyle -s ':prezto:module:editor:info:completing' format 'indicator'
|
||||||
|
|
||||||
|
# This is included to work around a bug in zsh which shows up when interacting
|
||||||
|
# with multi-line prompts.
|
||||||
|
if [[ -z "$indicator" ]]; then
|
||||||
|
zle expand-or-complete
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
print -Pn "$indicator"
|
||||||
|
zle expand-or-complete
|
||||||
|
zle redisplay
|
||||||
|
}
|
||||||
|
zle -N expand-or-complete-with-indicator
|
||||||
|
|
||||||
|
# Inserts 'sudo ' at the beginning of the line.
|
||||||
|
function prepend-sudo {
|
||||||
|
if [[ "$BUFFER" != su(do|)\ * ]]; then
|
||||||
|
BUFFER="sudo $BUFFER"
|
||||||
|
(( CURSOR += 5 ))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N prepend-sudo
|
||||||
|
|
||||||
|
# Expand aliases
|
||||||
|
function glob-alias {
|
||||||
|
zle _expand_alias
|
||||||
|
zle expand-word
|
||||||
|
zle magic-space
|
||||||
|
}
|
||||||
|
zle -N glob-alias
|
||||||
|
|
||||||
|
# Toggle the comment character at the start of the line. This is meant to work
|
||||||
|
# around a buggy implementation of pound-insert in zsh.
|
||||||
|
#
|
||||||
|
# This is currently only used for the emacs keys because vi-pound-insert has
|
||||||
|
# been reported to work properly.
|
||||||
|
function pound-toggle {
|
||||||
|
if [[ "$BUFFER" = '#'* ]]; then
|
||||||
|
# Because of an oddity in how zsh handles the cursor when the buffer size
|
||||||
|
# changes, we need to make this check before we modify the buffer and let
|
||||||
|
# zsh handle moving the cursor back if it's past the end of the line.
|
||||||
|
if [[ $CURSOR != $#BUFFER ]]; then
|
||||||
|
(( CURSOR -= 1 ))
|
||||||
|
fi
|
||||||
|
BUFFER="${BUFFER:1}"
|
||||||
|
else
|
||||||
|
BUFFER="#$BUFFER"
|
||||||
|
(( CURSOR += 1 ))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N pound-toggle
|
||||||
|
|
||||||
|
# Reset to default key bindings.
|
||||||
|
bindkey -d
|
||||||
|
|
||||||
|
#
|
||||||
|
# Emacs Key Bindings
|
||||||
|
#
|
||||||
|
|
||||||
|
for key in "$key_info[Escape]"{B,b} "${(s: :)key_info[ControlLeft]}" \
|
||||||
|
"${key_info[Escape]}${key_info[Left]}"
|
||||||
|
bindkey -M emacs "$key" emacs-backward-word
|
||||||
|
for key in "$key_info[Escape]"{F,f} "${(s: :)key_info[ControlRight]}" \
|
||||||
|
"${key_info[Escape]}${key_info[Right]}"
|
||||||
|
bindkey -M emacs "$key" emacs-forward-word
|
||||||
|
|
||||||
|
# Kill to the beginning of the line.
|
||||||
|
for key in "$key_info[Escape]"{K,k}
|
||||||
|
bindkey -M emacs "$key" backward-kill-line
|
||||||
|
|
||||||
|
# Redo.
|
||||||
|
bindkey -M emacs "$key_info[Escape]_" redo
|
||||||
|
|
||||||
|
# Search previous character.
|
||||||
|
bindkey -M emacs "$key_info[Control]X$key_info[Control]B" vi-find-prev-char
|
||||||
|
|
||||||
|
# Match bracket.
|
||||||
|
bindkey -M emacs "$key_info[Control]X$key_info[Control]]" vi-match-bracket
|
||||||
|
|
||||||
|
# Edit command in an external editor.
|
||||||
|
bindkey -M emacs "$key_info[Control]X$key_info[Control]E" edit-command-line
|
||||||
|
|
||||||
|
if (( $+widgets[history-incremental-pattern-search-backward] )); then
|
||||||
|
bindkey -M emacs "$key_info[Control]R" \
|
||||||
|
history-incremental-pattern-search-backward
|
||||||
|
bindkey -M emacs "$key_info[Control]S" \
|
||||||
|
history-incremental-pattern-search-forward
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Toggle comment at the start of the line. Note that we use pound-toggle which
|
||||||
|
# is similar to pount insert, but meant to work around some issues that were
|
||||||
|
# being seen in iTerm.
|
||||||
|
bindkey -M emacs "$key_info[Escape];" pound-toggle
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Vi Key Bindings
|
||||||
|
#
|
||||||
|
|
||||||
|
# Edit command in an external editor emacs style (v is used for visual mode)
|
||||||
|
bindkey -M vicmd "$key_info[Control]X$key_info[Control]E" edit-command-line
|
||||||
|
|
||||||
|
# Undo/Redo
|
||||||
|
bindkey -M vicmd "u" undo
|
||||||
|
bindkey -M viins "$key_info[Control]_" undo
|
||||||
|
bindkey -M vicmd "$key_info[Control]R" redo
|
||||||
|
|
||||||
|
if (( $+widgets[history-incremental-pattern-search-backward] )); then
|
||||||
|
bindkey -M vicmd "?" history-incremental-pattern-search-backward
|
||||||
|
bindkey -M vicmd "/" history-incremental-pattern-search-forward
|
||||||
|
else
|
||||||
|
bindkey -M vicmd "?" history-incremental-search-backward
|
||||||
|
bindkey -M vicmd "/" history-incremental-search-forward
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Toggle comment at the start of the line.
|
||||||
|
bindkey -M vicmd "#" vi-pound-insert
|
||||||
|
|
||||||
|
#
|
||||||
|
# Emacs and Vi Key Bindings
|
||||||
|
#
|
||||||
|
|
||||||
|
# Unbound keys in vicmd and viins mode will cause really odd things to happen
|
||||||
|
# such as the casing of all the characters you have typed changing or other
|
||||||
|
# undefined things. In emacs mode they just insert a tilde, but bind these keys
|
||||||
|
# in the main keymap to a noop op so if there is no keybind in the users mode
|
||||||
|
# it will fall back and do nothing.
|
||||||
|
function _prezto-zle-noop { ; }
|
||||||
|
zle -N _prezto-zle-noop
|
||||||
|
local -a unbound_keys
|
||||||
|
unbound_keys=(
|
||||||
|
"${key_info[F1]}"
|
||||||
|
"${key_info[F2]}"
|
||||||
|
"${key_info[F3]}"
|
||||||
|
"${key_info[F4]}"
|
||||||
|
"${key_info[F5]}"
|
||||||
|
"${key_info[F6]}"
|
||||||
|
"${key_info[F7]}"
|
||||||
|
"${key_info[F8]}"
|
||||||
|
"${key_info[F9]}"
|
||||||
|
"${key_info[F10]}"
|
||||||
|
"${key_info[F11]}"
|
||||||
|
"${key_info[F12]}"
|
||||||
|
"${key_info[PageUp]}"
|
||||||
|
"${key_info[PageDown]}"
|
||||||
|
"${key_info[ControlPageUp]}"
|
||||||
|
"${key_info[ControlPageDown]}"
|
||||||
|
)
|
||||||
|
for keymap in $unbound_keys; do
|
||||||
|
bindkey -M viins "${keymap}" _prezto-zle-noop
|
||||||
|
bindkey -M vicmd "${keymap}" _prezto-zle-noop
|
||||||
|
done
|
||||||
|
|
||||||
|
# Keybinds for all keymaps
|
||||||
|
for keymap in 'emacs' 'viins' 'vicmd'; do
|
||||||
|
bindkey -M "$keymap" "$key_info[Home]" beginning-of-line
|
||||||
|
bindkey -M "$keymap" "$key_info[End]" end-of-line
|
||||||
|
done
|
||||||
|
|
||||||
|
# Keybinds for all vi keymaps
|
||||||
|
for keymap in viins vicmd; do
|
||||||
|
# Ctrl + Left and Ctrl + Right bindings to forward/backward word
|
||||||
|
for key in "${(s: :)key_info[ControlLeft]}"
|
||||||
|
bindkey -M "$keymap" "$key" vi-backward-word
|
||||||
|
for key in "${(s: :)key_info[ControlRight]}"
|
||||||
|
bindkey -M "$keymap" "$key" vi-forward-word
|
||||||
|
done
|
||||||
|
|
||||||
|
# Keybinds for emacs and vi insert mode
|
||||||
|
for keymap in 'emacs' 'viins'; do
|
||||||
|
bindkey -M "$keymap" "$key_info[Insert]" overwrite-mode
|
||||||
|
bindkey -M "$keymap" "$key_info[Delete]" delete-char
|
||||||
|
bindkey -M "$keymap" "$key_info[Backspace]" backward-delete-char
|
||||||
|
|
||||||
|
bindkey -M "$keymap" "$key_info[Left]" backward-char
|
||||||
|
bindkey -M "$keymap" "$key_info[Right]" forward-char
|
||||||
|
|
||||||
|
# Expand history on space.
|
||||||
|
bindkey -M "$keymap" ' ' magic-space
|
||||||
|
|
||||||
|
# Clear screen.
|
||||||
|
bindkey -M "$keymap" "$key_info[Control]L" clear-screen
|
||||||
|
|
||||||
|
# Expand command name to full path.
|
||||||
|
for key in "$key_info[Escape]"{E,e}
|
||||||
|
bindkey -M "$keymap" "$key" expand-cmd-path
|
||||||
|
|
||||||
|
# Duplicate the previous word.
|
||||||
|
for key in "$key_info[Escape]"{M,m}
|
||||||
|
bindkey -M "$keymap" "$key" copy-prev-shell-word
|
||||||
|
|
||||||
|
# Use a more flexible push-line.
|
||||||
|
for key in "$key_info[Control]Q" "$key_info[Escape]"{q,Q}
|
||||||
|
bindkey -M "$keymap" "$key" push-line-or-edit
|
||||||
|
|
||||||
|
# Bind Shift + Tab to go to the previous menu item.
|
||||||
|
bindkey -M "$keymap" "$key_info[BackTab]" reverse-menu-complete
|
||||||
|
|
||||||
|
# Complete in the middle of word.
|
||||||
|
bindkey -M "$keymap" "$key_info[Control]I" expand-or-complete
|
||||||
|
|
||||||
|
# Expand .... to ../..
|
||||||
|
if zstyle -t ':prezto:module:editor' dot-expansion; then
|
||||||
|
bindkey -M "$keymap" "." expand-dot-to-parent-directory-path
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Display an indicator when completing.
|
||||||
|
bindkey -M "$keymap" "$key_info[Control]I" \
|
||||||
|
expand-or-complete-with-indicator
|
||||||
|
|
||||||
|
# Insert 'sudo ' at the beginning of the line.
|
||||||
|
bindkey -M "$keymap" "$key_info[Control]X$key_info[Control]S" prepend-sudo
|
||||||
|
|
||||||
|
# control-space expands all aliases, including global
|
||||||
|
bindkey -M "$keymap" "$key_info[Control] " glob-alias
|
||||||
|
done
|
||||||
|
|
||||||
|
# Delete key deletes character in vimcmd cmd mode instead of weird default functionality
|
||||||
|
bindkey -M vicmd "$key_info[Delete]" delete-char
|
||||||
|
|
||||||
|
# Do not expand .... to ../.. during incremental search.
|
||||||
|
if zstyle -t ':prezto:module:editor' dot-expansion; then
|
||||||
|
bindkey -M isearch . self-insert 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Layout
|
||||||
|
#
|
||||||
|
|
||||||
|
# Set the key layout.
|
||||||
|
zstyle -s ':prezto:module:editor' key-bindings 'key_bindings'
|
||||||
|
if [[ "$key_bindings" == (emacs|) ]]; then
|
||||||
|
bindkey -e
|
||||||
|
elif [[ "$key_bindings" == vi ]]; then
|
||||||
|
bindkey -v
|
||||||
|
else
|
||||||
|
print "prezto: editor: invalid key bindings: $key_bindings" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset key{,map,_bindings}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# Emacs
|
||||||
|
|
||||||
|
Enables Emacs dependency management.
|
||||||
|
|
||||||
|
## Dependency management
|
||||||
|
|
||||||
|
[Carton][1] installs and manages Emacs packages for Emacs package development
|
||||||
|
and Emacs configuration.
|
||||||
|
|
||||||
|
This module prepends the Carton directory to the path variable to enable the
|
||||||
|
execution of `carton`.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
Aliases are enabled by default. To disable them, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:emacs:alias' skip 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Carton
|
||||||
|
|
||||||
|
- `cai` installs dependencies.
|
||||||
|
- `cau` updates dependencies.
|
||||||
|
- `caI` initializes the current directory for dependency management.
|
||||||
|
- `cae` executes a command which correct dependencies.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][2]._
|
||||||
|
|
||||||
|
- [Sebastian Wiesner](https://github.com/lunaryorn)
|
||||||
|
|
||||||
|
[1]: https://github.com/rejeep/carton
|
||||||
|
[2]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#
|
||||||
|
# Configures Emacs dependency management.
|
||||||
|
#
|
||||||
|
# Authors: Sebastian Wiesner <lunaryorn@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if [[ ! -d "$HOME/.cask" ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepend Cask bin directory.
|
||||||
|
path=($HOME/.cask/bin $path)
|
||||||
|
|
||||||
|
# Load Carton completion
|
||||||
|
source "$HOME/.cask/etc/cask_completion.zsh" 2> /dev/null
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! zstyle -t ':prezto:module:emacs:alias' skip; then
|
||||||
|
alias cai='cask install'
|
||||||
|
alias cau='cask update'
|
||||||
|
alias caI='cask init'
|
||||||
|
alias cae='cask exec'
|
||||||
|
fi
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# Environment
|
||||||
|
|
||||||
|
Sets general shell options and defines environment variables.
|
||||||
|
|
||||||
|
This module must be loaded first.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
This module **MUST NOT** rely on any command that is not built in Zsh.
|
||||||
|
|
||||||
|
Non-interactive environment variables should be defined in
|
||||||
|
[_`${ZDOTDIR:-$HOME}/.zshenv`_][1].
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- `COMBINING_CHARS` combine zero-length punctuation characters (accents) with
|
||||||
|
the base character.
|
||||||
|
- `INTERACTIVE_COMMENTS` enable comments in interactive shell.
|
||||||
|
- `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
|
||||||
|
- `MAIL_WARNING` don't print a warning message if a mail file has been accessed.
|
||||||
|
|
||||||
|
### Jobs
|
||||||
|
|
||||||
|
- `LONG_LIST_JOBS` list jobs in the long format by default.
|
||||||
|
- `AUTO_RESUME` attempt to resume existing job before creating a new process.
|
||||||
|
- `NOTIFY` report status of background jobs immediately.
|
||||||
|
- `BG_NICE` don't run all background jobs at a lower priority.
|
||||||
|
- `HUP` don't kill jobs on shell exit.
|
||||||
|
- `CHECK_JOBS` don't report on jobs when shell exit.
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
### Termcap
|
||||||
|
|
||||||
|
- `LESS_TERMCAP_mb` begins blinking.
|
||||||
|
- `LESS_TERMCAP_md` begins bold.
|
||||||
|
- `LESS_TERMCAP_me` ends mode.
|
||||||
|
- `LESS_TERMCAP_se` ends standout-mode.
|
||||||
|
- `LESS_TERMCAP_so` begins standout-mode.
|
||||||
|
- `LESS_TERMCAP_ue` ends underline.
|
||||||
|
- `LESS_TERMCAP_us` begins underline.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][2]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: ../../runcoms#zshenv
|
||||||
|
[2]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
#
|
||||||
|
# Sets general shell options and defines environment variables.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Smart URLs
|
||||||
|
#
|
||||||
|
|
||||||
|
# This logic comes from an old version of zim. Essentially, bracketed-paste was
|
||||||
|
# added as a requirement of url-quote-magic in 5.1, but in 5.1.1 bracketed
|
||||||
|
# paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic
|
||||||
|
# which is generally better than url-quote-magic so we load that when possible.
|
||||||
|
autoload -Uz is-at-least
|
||||||
|
if [[ $ZSH_VERSION != 5.1.1 && $TERM != dumb ]]; then
|
||||||
|
if is-at-least 5.2; then
|
||||||
|
autoload -Uz bracketed-paste-url-magic
|
||||||
|
zle -N bracketed-paste bracketed-paste-url-magic
|
||||||
|
elif is-at-least 5.1; then
|
||||||
|
autoload -Uz bracketed-paste-magic
|
||||||
|
zle -N bracketed-paste bracketed-paste-magic
|
||||||
|
fi
|
||||||
|
autoload -Uz url-quote-magic
|
||||||
|
zle -N self-insert url-quote-magic
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# General
|
||||||
|
#
|
||||||
|
|
||||||
|
setopt COMBINING_CHARS # Combine zero-length punctuation characters (accents)
|
||||||
|
# with the base character.
|
||||||
|
setopt INTERACTIVE_COMMENTS # Enable comments in interactive shell.
|
||||||
|
setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
|
||||||
|
unsetopt MAIL_WARNING # Don't print a warning message if a mail file has
|
||||||
|
# been accessed.
|
||||||
|
|
||||||
|
# Allow mapping Ctrl+S and Ctrl+Q shortcuts
|
||||||
|
[[ -r ${TTY:-} && -w ${TTY:-} && $+commands[stty] == 1 ]] && stty -ixon <$TTY >$TTY
|
||||||
|
|
||||||
|
#
|
||||||
|
# Jobs
|
||||||
|
#
|
||||||
|
|
||||||
|
setopt LONG_LIST_JOBS # List jobs in the long format by default.
|
||||||
|
setopt AUTO_RESUME # Attempt to resume existing job before creating a new process.
|
||||||
|
setopt NOTIFY # Report status of background jobs immediately.
|
||||||
|
unsetopt BG_NICE # Don't run all background jobs at a lower priority.
|
||||||
|
unsetopt HUP # Don't kill jobs on shell exit.
|
||||||
|
unsetopt CHECK_JOBS # Don't report on jobs when shell exit.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Termcap
|
||||||
|
#
|
||||||
|
|
||||||
|
if zstyle -t ':prezto:environment:termcap' color; then
|
||||||
|
export LESS_TERMCAP_mb=$'\E[01;31m' # Begins blinking.
|
||||||
|
export LESS_TERMCAP_md=$'\E[01;31m' # Begins bold.
|
||||||
|
export LESS_TERMCAP_me=$'\E[0m' # Ends mode.
|
||||||
|
export LESS_TERMCAP_se=$'\E[0m' # Ends standout-mode.
|
||||||
|
export LESS_TERMCAP_so=$'\E[00;47;30m' # Begins standout-mode.
|
||||||
|
export LESS_TERMCAP_ue=$'\E[0m' # Ends underline.
|
||||||
|
export LESS_TERMCAP_us=$'\E[01;32m' # Begins underline.
|
||||||
|
fi
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# Fasd
|
||||||
|
|
||||||
|
[Fasd][1] is a command-line productivity booster, inspired by tools like
|
||||||
|
[autojump][2], [z][3] and [v][4], it offers quick access to files and
|
||||||
|
directories by keeping track of files and directories that were previously
|
||||||
|
accessed.
|
||||||
|
|
||||||
|
For shell completion to work, this module must be loaded _after_ the
|
||||||
|
[_`completion`_][5] module.
|
||||||
|
|
||||||
|
The Prezto Fasd configuration differs from the default. The default aliases have
|
||||||
|
been disabled.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
`fasd` is bundled with prezto as a git submodule. Alternatively, you can
|
||||||
|
manually install `fasd`. If a manual installation is found, it will be used
|
||||||
|
instead of the bundled version.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
Aliases are enabled by default. To disable them, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:fasd:alias' skip 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
- `j` changes the current working directory interactively.
|
||||||
|
|
||||||
|
## Completion
|
||||||
|
|
||||||
|
Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`,
|
||||||
|
`,,d` at the end of a comma-separated query then hit <kbd>TAB</kbd>.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][6]._
|
||||||
|
|
||||||
|
- [Wei Dai](https://github.com/clvv)
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: https://github.com/whjvenyl/fasd
|
||||||
|
[2]: https://github.com/joelthelion/autojump
|
||||||
|
[3]: https://github.com/rupa/z
|
||||||
|
[4]: https://github.com/rupa/v
|
||||||
|
[5]: ../completion#readme
|
||||||
|
[6]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
#
|
||||||
|
# Maintains a frequently used file and directory list for fast access.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Wei Dai <x@wei23.net>
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load dependencies.
|
||||||
|
pmodload 'editor'
|
||||||
|
|
||||||
|
# If the command doesn't exist externally, we need to fall back to the bundled
|
||||||
|
# submodule.
|
||||||
|
if (( ! $+commands[fasd] )); then
|
||||||
|
source "${0:h}/external/fasd" || return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Initialization
|
||||||
|
#
|
||||||
|
|
||||||
|
cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/fasd-cache.zsh"
|
||||||
|
if [[ "${commands[fasd]}" -nt "$cache_file" \
|
||||||
|
|| "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
|
||||||
|
|| ! -s "$cache_file" ]]; then
|
||||||
|
# Set the base init arguments.
|
||||||
|
init_args=(zsh-hook)
|
||||||
|
|
||||||
|
# Set fasd completion init arguments, if applicable.
|
||||||
|
if zstyle -t ':prezto:module:completion' loaded; then
|
||||||
|
init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$cache_file:h"
|
||||||
|
# Cache init code.
|
||||||
|
fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$cache_file"
|
||||||
|
|
||||||
|
unset cache_file init_args
|
||||||
|
|
||||||
|
function fasd_cd {
|
||||||
|
local fasd_ret="$(fasd -d "$@")"
|
||||||
|
if [[ -d "$fasd_ret" ]]; then
|
||||||
|
cd "$fasd_ret"
|
||||||
|
else
|
||||||
|
print "$fasd_ret"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! zstyle -t ':prezto:module:fasd:alias' skip; then
|
||||||
|
# Changes the current working directory interactively.
|
||||||
|
alias j='fasd_cd -i'
|
||||||
|
fi
|
||||||
@@ -0,0 +1,473 @@
|
|||||||
|
# Git
|
||||||
|
|
||||||
|
Enhances the [Git][1] distributed version control system by providing aliases,
|
||||||
|
functions and by exposing repository status information to prompts.
|
||||||
|
|
||||||
|
This module must be loaded _before_ the [_`completion`_][13] module so that the
|
||||||
|
provided completion definitions are loaded automatically by _`completion`_
|
||||||
|
module.
|
||||||
|
|
||||||
|
**Note:** Git **2.11** is the minimum required version for better
|
||||||
|
[git-rev-list][7] and [git-submodule][14] support.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
### Log
|
||||||
|
|
||||||
|
To configure the format of the [git-log][8] output, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<context>'` with `'brief'`,
|
||||||
|
`'oneline'`, and `'medium'`. This will be passed to the `--pretty=format:`
|
||||||
|
switch.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:log:context' format '<context>'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Status
|
||||||
|
|
||||||
|
Retrieving the status of a repository with [git-submodule][9] can take a long
|
||||||
|
time. To configure the submodules to ignore, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<state>'` with `'dirty'`,
|
||||||
|
`'untracked'`, `'all'`, or `'none'`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:status:ignore' submodules '<state>'
|
||||||
|
```
|
||||||
|
|
||||||
|
This setting affects all aliases and functions that call `git-status`.
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
Aliases are enabled by default. To disable them, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:alias' skip 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git
|
||||||
|
|
||||||
|
- `g` is short for `git`.
|
||||||
|
|
||||||
|
### Branch (b)
|
||||||
|
|
||||||
|
- `gb` lists, creates, renames, and deletes branches.
|
||||||
|
- `gbc` creates a new branch.
|
||||||
|
- `gbl` lists branches and their commits. (also `gbv`)
|
||||||
|
- `gbL` lists all local and remote branches and their commits.
|
||||||
|
- `gbr` renames a branch. (also `gbm`)
|
||||||
|
- `gbR` renames a branch even if the new branch name already exists. (also
|
||||||
|
`gbM`)
|
||||||
|
- `gbs` lists branches and their commits with ancestry graphs.
|
||||||
|
- `gbS` lists local and remote branches and their commits with ancestry graphs.
|
||||||
|
- `gbV` lists branches with more verbose information about their commits.
|
||||||
|
- `gbx` deletes a branch. (also `gbd`)
|
||||||
|
- `gbX` deletes a branch irrespective of its merged status. (also `gbD`)
|
||||||
|
|
||||||
|
### Commit (c)
|
||||||
|
|
||||||
|
- `gc` records changes to the repository.
|
||||||
|
- `gcS` records changes to the repository. (Signed)
|
||||||
|
- `gca` stages all modified and deleted files.
|
||||||
|
- `gcaS` stages all modified and deleted files. (Signed)
|
||||||
|
- `gcm` records changes to the repository with the given message.
|
||||||
|
- `gcmS` records changes to the repository with the given message. (Signed)
|
||||||
|
- `gcam` stages all modified and deleted files, and records changes to the
|
||||||
|
repository with the given message.
|
||||||
|
- `gco` checks out a branch or paths to work tree.
|
||||||
|
- `gcO` checks out hunks from the index or the tree interactively.
|
||||||
|
- `gcf` amends the tip of the current branch using the same log message as
|
||||||
|
_HEAD_.
|
||||||
|
- `gcfS` amends the tip of the current branch using the same log message as
|
||||||
|
_HEAD_. (Signed)
|
||||||
|
- `gcF` amends the tip of the current branch.
|
||||||
|
- `gcFS` amends the tip of the current branch. (Signed)
|
||||||
|
- `gcp` applies changes introduced by existing commits.
|
||||||
|
- `gcP` applies changes introduced by existing commits without committing.
|
||||||
|
- `gcr` reverts existing commits by reverting patches and recording new commits.
|
||||||
|
- `gcR` removes the _HEAD_ commit.
|
||||||
|
- `gcs` displays commits with various objects.
|
||||||
|
- `gcsS` displays commits with GPG signature.
|
||||||
|
- `gcl` lists lost commits.
|
||||||
|
- `gcy` displays commits yet to be applied to upstream in the short format.
|
||||||
|
- `gcY` displays commits yet to be applied to upstream.
|
||||||
|
|
||||||
|
### Conflict (C)
|
||||||
|
|
||||||
|
- `gCl` lists unmerged files.
|
||||||
|
- `gCa` adds unmerged file contents to the index.
|
||||||
|
- `gCe` executes merge-tool on all unmerged file.
|
||||||
|
- `gCo` checks out our changes for unmerged paths.
|
||||||
|
- `gCO` checks out our changes for all unmerged paths.
|
||||||
|
- `gCt` checks out their changes for unmerged paths.
|
||||||
|
- `gCT` checks out their changes for all unmerged paths.
|
||||||
|
|
||||||
|
### Data (d)
|
||||||
|
|
||||||
|
- `gd` displays information about files in the index and the work tree.
|
||||||
|
- `gdc` lists cached files.
|
||||||
|
- `gdx` lists deleted files.
|
||||||
|
- `gdm` lists modified files.
|
||||||
|
- `gdu` lists untracked files.
|
||||||
|
- `gdk` lists killed files.
|
||||||
|
- `gdi` lists ignored files.
|
||||||
|
|
||||||
|
### Fetch (f)
|
||||||
|
|
||||||
|
- `gf` downloads objects and references from another repository.
|
||||||
|
- `gfa` downloads objects and references from all remote repositories.
|
||||||
|
- `gfc` clones a repository into a new directory.
|
||||||
|
- `gfcr` clones a repository into a new directory including all submodules.
|
||||||
|
- `gfm` fetches from and merges with another repository or local branch.
|
||||||
|
- `gfr` fetches from and rebases on another repository or local branch.
|
||||||
|
|
||||||
|
### Flow (F)
|
||||||
|
|
||||||
|
- `gFi` is short for `git flow init`
|
||||||
|
|
||||||
|
#### Feature (Ff)
|
||||||
|
|
||||||
|
- `gFf` is short for `git flow feature`
|
||||||
|
- `gFfl` is short for `git flow feature list`
|
||||||
|
- `gFfs` is short for `git flow feature start`
|
||||||
|
- `gFff` is short for `git flow feature finish`
|
||||||
|
- `gFfp` is short for `git flow feature publish`
|
||||||
|
- `gFft` is short for `git flow feature track`
|
||||||
|
- `gFfd` is short for `git flow feature diff`
|
||||||
|
- `gFfr` is short for `git flow feature rebase`
|
||||||
|
- `gFfc` is short for `git flow feature checkout`
|
||||||
|
- `gFfm` is short for `git flow feature pull`
|
||||||
|
- `gFfx` is short for `git flow feature delete`
|
||||||
|
|
||||||
|
#### Bugfix (Fb)
|
||||||
|
|
||||||
|
- `gFb` is short for `git flow bugfix`
|
||||||
|
- `gFbl` is short for `git flow bugfix list`
|
||||||
|
- `gFbs` is short for `git flow bugfix start`
|
||||||
|
- `gFbf` is short for `git flow bugfix finish`
|
||||||
|
- `gFbp` is short for `git flow bugfix publish`
|
||||||
|
- `gFbt` is short for `git flow bugfix track`
|
||||||
|
- `gFbd` is short for `git flow bugfix diff`
|
||||||
|
- `gFbr` is short for `git flow bugfix rebase`
|
||||||
|
- `gFbc` is short for `git flow bugfix checkout`
|
||||||
|
- `gFbm` is short for `git flow bugfix pull`
|
||||||
|
- `gFbx` is short for `git flow bugfix delete`
|
||||||
|
|
||||||
|
#### Release (Fl)
|
||||||
|
|
||||||
|
- `gFl` is short for `git flow release`
|
||||||
|
- `gFll` is short for `git flow release list`
|
||||||
|
- `gFls` is short for `git flow release start`
|
||||||
|
- `gFlf` is short for `git flow release finish`
|
||||||
|
- `gFlp` is short for `git flow release publish`
|
||||||
|
- `gFlt` is short for `git flow release track`
|
||||||
|
- `gFld` is short for `git flow release diff`
|
||||||
|
- `gFlr` is short for `git flow release rebase`
|
||||||
|
- `gFlc` is short for `git flow release checkout`
|
||||||
|
- `gFlm` is short for `git flow release pull`
|
||||||
|
- `gFlx` is short for `git flow release delete`
|
||||||
|
|
||||||
|
#### Hotfix (Fh)
|
||||||
|
|
||||||
|
- `gFh` is short for `git flow hotfix`
|
||||||
|
- `gFhl` is short for `git flow hotfix list`
|
||||||
|
- `gFhs` is short for `git flow hotfix start`
|
||||||
|
- `gFhf` is short for `git flow hotfix finish`
|
||||||
|
- `gFhp` is short for `git flow hotfix publish`
|
||||||
|
- `gFht` is short for `git flow hotfix track`
|
||||||
|
- `gFhd` is short for `git flow hotfix diff`
|
||||||
|
- `gFhr` is short for `git flow hotfix rebase`
|
||||||
|
- `gFhc` is short for `git flow hotfix checkout`
|
||||||
|
- `gFhm` is short for `git flow hotfix pull`
|
||||||
|
- `gFhx` is short for `git flow hotfix delete`
|
||||||
|
|
||||||
|
#### Support (Fs)
|
||||||
|
|
||||||
|
- `gFs` is short for `git flow support`
|
||||||
|
- `gFsl` is short for `git flow support list`
|
||||||
|
- `gFss` is short for `git flow support start`
|
||||||
|
- `gFsf` is short for `git flow support finish`
|
||||||
|
- `gFsp` is short for `git flow support publish`
|
||||||
|
- `gFst` is short for `git flow support track`
|
||||||
|
- `gFsd` is short for `git flow support diff`
|
||||||
|
- `gFsr` is short for `git flow support rebase`
|
||||||
|
- `gFsc` is short for `git flow support checkout`
|
||||||
|
- `gFsm` is short for `git flow support pull`
|
||||||
|
- `gFsx` is short for `git flow support delete`
|
||||||
|
|
||||||
|
### Grep (g)
|
||||||
|
|
||||||
|
- `gg` displays lines matching a pattern.
|
||||||
|
- `ggi` displays lines matching a pattern ignoring case.
|
||||||
|
- `ggl` lists files matching a pattern.
|
||||||
|
- `ggL` lists files that are not matching a pattern.
|
||||||
|
- `ggv` displays lines not matching a pattern.
|
||||||
|
- `ggw` displays lines matching a pattern at word boundary.
|
||||||
|
|
||||||
|
### Index (i)
|
||||||
|
|
||||||
|
- `gia` adds file contents to the index.
|
||||||
|
- `giA` adds file contents to the index interactively.
|
||||||
|
- `giu` adds file contents to the index (updates only known files).
|
||||||
|
- `gid` displays changes between the index and a named commit (diff).
|
||||||
|
- `giD` displays changes between the index and a named commit (word diff).
|
||||||
|
- `gii` temporarily ignore differences in a given file.
|
||||||
|
- `giI` unignore differences in a given file.
|
||||||
|
- `gir` resets the current HEAD to the specified state.
|
||||||
|
- `giR` resets the current index interactively.
|
||||||
|
- `gix` removes files/directories from the index (recursively).
|
||||||
|
- `giX` removes files/directories from the index (recursively and forced).
|
||||||
|
|
||||||
|
### Log (l)
|
||||||
|
|
||||||
|
- `gl` displays the log.
|
||||||
|
- `gls` displays the stats log.
|
||||||
|
- `gld` displays the diff log.
|
||||||
|
- `glo` displays the one line log.
|
||||||
|
- `glg` displays the graph log.
|
||||||
|
- `glb` displays the brief commit log.
|
||||||
|
- `glc` displays the commit count for each contributor in descending order.
|
||||||
|
- `glS` displays the log and checks the validity of signed commits.
|
||||||
|
|
||||||
|
### Merge (m)
|
||||||
|
|
||||||
|
- `gm` joins two or more development histories together.
|
||||||
|
- `gmC` joins two or more development histories together but does not commit.
|
||||||
|
- `gmF` joins two or more development histories together but does not commit
|
||||||
|
generating a merge commit even if the merge resolved as a fast-forward.
|
||||||
|
- `gma` aborts the conflict resolution, and reconstructs the pre-merge state.
|
||||||
|
- `gmt` runs the merge conflict resolution tools to resolve conflicts.
|
||||||
|
|
||||||
|
### Push (p)
|
||||||
|
|
||||||
|
- `gp` updates remote refs along with associated objects.
|
||||||
|
- `gpf` forcefully updates remote refs along with associated objects using the
|
||||||
|
safer `--force-with-lease` option.
|
||||||
|
- `gpF` forcefully updates remote refs along with associated objects using the
|
||||||
|
riskier `--force` option.
|
||||||
|
- `gpa` updates remote branches along with associated objects.
|
||||||
|
- `gpA` updates remote branches and tags along with associated objects.
|
||||||
|
- `gpt` updates remote tags along with associated objects.
|
||||||
|
- `gpc` updates remote refs along with associated objects and adds _origin_ as
|
||||||
|
an upstream reference for the current branch.
|
||||||
|
- `gpp` pulls and pushes from origin to origin.
|
||||||
|
|
||||||
|
### Rebase (r)
|
||||||
|
|
||||||
|
- `gr` forward-ports local commits to the updated upstream _HEAD_.
|
||||||
|
- `gra` aborts the rebase.
|
||||||
|
- `grc` continues the rebase after merge conflicts are resolved.
|
||||||
|
- `gri` makes a list of commits to be rebased and opens the editor.
|
||||||
|
- `grs` skips the current patch.
|
||||||
|
|
||||||
|
### Remote (R)
|
||||||
|
|
||||||
|
- `gR` manages tracked repositories.
|
||||||
|
- `gRl` lists remote names and their URLs.
|
||||||
|
- `gRa` adds a new remote.
|
||||||
|
- `gRx` removes a remote.
|
||||||
|
- `gRm` renames a remote.
|
||||||
|
- `gRu` fetches remotes updates.
|
||||||
|
- `gRp` prunes all stale remote tracking branches.
|
||||||
|
- `gRs` displays information about a given remote.
|
||||||
|
- `gRb` opens a remote on [GitHub][3] in the default browser.
|
||||||
|
|
||||||
|
### Stash (s)
|
||||||
|
|
||||||
|
- `gs` stashes the changes of the dirty working directory.
|
||||||
|
- `gsa` applies the changes recorded in a stash to the working directory.
|
||||||
|
- `gsx` drops a stashed state.
|
||||||
|
- `gsX` drops all the stashed states.
|
||||||
|
- `gsl` lists stashed states.
|
||||||
|
- `gsL` lists dropped stashed states.
|
||||||
|
- `gsd` displays changes between the stash and its original parent.
|
||||||
|
- `gsp` removes and applies a single stashed state from the stash list.
|
||||||
|
- `gsr` recovers a given stashed state.
|
||||||
|
- `gss` stashes the changes of the dirty working directory, including untracked.
|
||||||
|
- `gsS` stashes the changes of the dirty working directory interactively.
|
||||||
|
- `gsw` stashes the changes of the dirty working directory retaining the index.
|
||||||
|
|
||||||
|
### Submodule (S)
|
||||||
|
|
||||||
|
- `gS` initializes, updates, or inspects submodules.
|
||||||
|
- `gSa` adds given a repository as a submodule.
|
||||||
|
- `gSf` evaluates a shell command in each of checked out submodules.
|
||||||
|
- `gSi` initializes submodules.
|
||||||
|
- `gSI` initializes and clones submodules recursively.
|
||||||
|
- `gSl` lists the commits of all submodules.
|
||||||
|
- `gSm` moves a submodule.
|
||||||
|
- `gSs` synchronizes submodules' remote URL to the value specified in
|
||||||
|
_.gitmodules_.
|
||||||
|
- `gSu` fetches and merges the latest changes for all submodule.
|
||||||
|
- `gSx` removes a submodule.
|
||||||
|
|
||||||
|
### Tag (t)
|
||||||
|
|
||||||
|
- `gt` lists tags or creates tag.
|
||||||
|
- `gtl` lists tags matching pattern.
|
||||||
|
- `gts` creates a signed tag.
|
||||||
|
- `gtv` validate a signed tag.
|
||||||
|
|
||||||
|
### Working directory (w)
|
||||||
|
|
||||||
|
- `gws` displays working-tree status in the short format.
|
||||||
|
- `gwS` displays working-tree status.
|
||||||
|
- `gwd` displays changes between the working tree and the index (diff).
|
||||||
|
- `gwD` displays changes between the working tree and the index (word diff).
|
||||||
|
- `gwr` resets the current HEAD to the specified state, does not touch the
|
||||||
|
index nor the working tree.
|
||||||
|
- `gwR` resets the current HEAD, index and working tree to the specified state.
|
||||||
|
- `gwc` removes untracked files from the working tree (dry-run).
|
||||||
|
- `gwC` removes untracked files and directories from the working tree.
|
||||||
|
- `gwx` removes files from the working tree and from the index recursively.
|
||||||
|
- `gwX` removes files from the working tree and from the index recursively and
|
||||||
|
forcefully.
|
||||||
|
|
||||||
|
### Working tree (W)
|
||||||
|
|
||||||
|
- `gWa` adds a new working tree.
|
||||||
|
- `gWl` lists all working trees.
|
||||||
|
- `gWx` removes a working tree.
|
||||||
|
- `gWX` removes a working tree forcefully.
|
||||||
|
- `gWm` moves a working tree to a new location.
|
||||||
|
- `gWc` prunes stale worktrees and their administrative data.
|
||||||
|
|
||||||
|
### Shadows
|
||||||
|
|
||||||
|
The following aliases may shadow system commands:
|
||||||
|
|
||||||
|
- `gb` shadows the [GB][10].
|
||||||
|
- `gm` shadows the [GraphicsMagick image processor][11].
|
||||||
|
- `gpt` shadows the [GUID partition table maintenance utility][4].
|
||||||
|
- `gs` shadows the [Ghostscript interpreter and previewer][5].
|
||||||
|
|
||||||
|
If you frequently use the above commands, you may wish to remove said aliases
|
||||||
|
from this module or to disable them at the bottom of the zshrc with `unalias`.
|
||||||
|
|
||||||
|
You can temporarily bypass an alias by prefixing it with a backward slash:
|
||||||
|
`\gpt`.
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
- `git-branch-current` displays the current branch.
|
||||||
|
- `git-commit-lost` lists lost commits.
|
||||||
|
- `git-dir` displays the path to the Git directory.
|
||||||
|
- `git-hub-browse` opens the [GitHub][3] repository in the default browser.
|
||||||
|
- `git-hub-shorten-url` shortens [GitHub URLs][12].
|
||||||
|
- `git-info` exposes repository information via the `$git_info` associative
|
||||||
|
array.
|
||||||
|
- `git-root` displays the path to the working tree root.
|
||||||
|
- `git-stash-clear-interactive` asks for confirmation before clearing the stash.
|
||||||
|
- `git-stash-dropped` lists dropped stashed states.
|
||||||
|
- `git-stash-recover` recovers given dropped stashed states.
|
||||||
|
- `git-submodule-move` moves a submodule.
|
||||||
|
- `git-submodule-remove` removes a submodule.
|
||||||
|
|
||||||
|
## Theming
|
||||||
|
|
||||||
|
To display information about the current repository in a prompt, define the
|
||||||
|
following styles in the `prompt_name_setup` function, where the syntax for
|
||||||
|
setting a style is as follows.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:info:context:subcontext' format 'string'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Main Contexts
|
||||||
|
|
||||||
|
| Name | Format Code | Description |
|
||||||
|
| -------- | :---------: | ---------------------------------- |
|
||||||
|
| action | %s | Special action name |
|
||||||
|
| ahead | %A | Commits ahead of remote count |
|
||||||
|
| behind | %B | Commits behind of remote count |
|
||||||
|
| branch | %b | Branch name |
|
||||||
|
| commit | %c | Commit hash |
|
||||||
|
| position | %p | Commits from the nearest tag count |
|
||||||
|
| remote | %R | Remote name |
|
||||||
|
| stashed | %S | Stashed states count |
|
||||||
|
|
||||||
|
### Concise Contexts
|
||||||
|
|
||||||
|
| Name | Format Code | Description |
|
||||||
|
| --------- | :---------: | --------------------- |
|
||||||
|
| clean | %C | Clean state |
|
||||||
|
| dirty | %D | Dirty files count |
|
||||||
|
| indexed | %i | Indexed files count |
|
||||||
|
| unindexed | %I | Unindexed files count |
|
||||||
|
| untracked | %u | Untracked files count |
|
||||||
|
|
||||||
|
The following contexts must be enabled with the following zstyle:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:info' verbose 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verbose Contexts
|
||||||
|
|
||||||
|
| Name | Format Code | Description |
|
||||||
|
| --------- | :---------: | --------------------- |
|
||||||
|
| added | %a | Added files count |
|
||||||
|
| clean | %C | Clean state |
|
||||||
|
| deleted | %d | Deleted files count |
|
||||||
|
| dirty | %D | Dirty files count |
|
||||||
|
| modified | %m | Modified files count |
|
||||||
|
| renamed | %r | Renamed files count |
|
||||||
|
| unmerged | %U | Unmerged files count |
|
||||||
|
| untracked | %u | Untracked files count |
|
||||||
|
|
||||||
|
### Special Action Contexts
|
||||||
|
|
||||||
|
| Name | Format | Description |
|
||||||
|
| -------------------- | :----: | ---------------------------- |
|
||||||
|
| apply | value | Applying patches |
|
||||||
|
| bisect | value | Binary searching for changes |
|
||||||
|
| cherry-pick | value | Cherry picking |
|
||||||
|
| cherry-pick-sequence | value | Cherry picking sequence |
|
||||||
|
| merge | value | Merging |
|
||||||
|
| rebase | value | Rebasing |
|
||||||
|
| rebase-interactive | value | Rebasing interactively |
|
||||||
|
| rebase-merge | value | Rebasing merge |
|
||||||
|
| revert | value | Reverting |
|
||||||
|
| revert-sequence | value | Reverting sequence |
|
||||||
|
|
||||||
|
First, format the repository state attributes. For example, to format the branch
|
||||||
|
and remote names, define the following styles.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:info:branch' format 'branch:%b'
|
||||||
|
zstyle ':prezto:module:git:info:remote' format 'remote:%R'
|
||||||
|
```
|
||||||
|
|
||||||
|
Second, format how the above attributes are displayed in prompts.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:git:info:keys' format \
|
||||||
|
'prompt' ' git(%b)' \
|
||||||
|
'rprompt' '[%R]'
|
||||||
|
```
|
||||||
|
|
||||||
|
Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to
|
||||||
|
`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook
|
||||||
|
function.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][6]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
- [Colin Hebert](https://github.com/ColinHebert)
|
||||||
|
|
||||||
|
[1]: https://www.git-scm.com
|
||||||
|
[2]: https://hub.github.com
|
||||||
|
[3]: https://www.github.com
|
||||||
|
[4]: https://www.manpagez.com/man/8/gpt/
|
||||||
|
[5]: https://www.manpagez.com/man/1/gs/
|
||||||
|
[6]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
|
[7]: https://github.com/sorin-ionescu/prezto/issues/219
|
||||||
|
[8]: https://git-scm.com/docs/git-log
|
||||||
|
[9]: https://git-scm.com/docs/git-submodule
|
||||||
|
[10]: https://getgb.io/
|
||||||
|
[11]: https://www.manpagez.com/man/1/gm/
|
||||||
|
[12]: https://github.blog/2011-11-10-git-io-github-url-shortener
|
||||||
|
[13]: ../completion#readme
|
||||||
|
[14]: https://github.com/sorin-ionescu/prezto/pull/1929
|
||||||
@@ -0,0 +1,283 @@
|
|||||||
|
#
|
||||||
|
# Defines Git aliases.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Settings
|
||||||
|
#
|
||||||
|
|
||||||
|
# Log
|
||||||
|
zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \
|
||||||
|
|| _git_log_medium_format='%C(bold)Commit:%C(reset) %C(green)%H%C(red)%d%n%C(bold)Author:%C(reset) %C(cyan)%an <%ae>%n%C(bold)Date:%C(reset) %C(blue)%ai (%ar)%C(reset)%n%+B'
|
||||||
|
zstyle -s ':prezto:module:git:log:oneline' format '_git_log_oneline_format' \
|
||||||
|
|| _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n'
|
||||||
|
zstyle -s ':prezto:module:git:log:brief' format '_git_log_brief_format' \
|
||||||
|
|| _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n'
|
||||||
|
|
||||||
|
# Status
|
||||||
|
zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_submodules' \
|
||||||
|
|| _git_status_ignore_submodules='none'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! zstyle -t ':prezto:module:git:alias' skip; then
|
||||||
|
# Git
|
||||||
|
alias g='git'
|
||||||
|
|
||||||
|
# Branch (b)
|
||||||
|
alias gb='git branch'
|
||||||
|
alias gba='git branch --all --verbose'
|
||||||
|
alias gbc='git checkout -b'
|
||||||
|
alias gbd='git branch --delete'
|
||||||
|
alias gbD='git branch --delete --force'
|
||||||
|
alias gbl='git branch --verbose'
|
||||||
|
alias gbL='git branch --all --verbose'
|
||||||
|
alias gbm='git branch --move'
|
||||||
|
alias gbM='git branch --move --force'
|
||||||
|
alias gbr='git branch --move'
|
||||||
|
alias gbR='git branch --move --force'
|
||||||
|
alias gbs='git show-branch'
|
||||||
|
alias gbS='git show-branch --all'
|
||||||
|
alias gbv='git branch --verbose'
|
||||||
|
alias gbV='git branch --verbose --verbose'
|
||||||
|
alias gbx='git branch --delete'
|
||||||
|
alias gbX='git branch --delete --force'
|
||||||
|
|
||||||
|
# Commit (c)
|
||||||
|
alias gc='git commit --verbose'
|
||||||
|
alias gcS='git commit --verbose --gpg-sign'
|
||||||
|
alias gca='git commit --verbose --all'
|
||||||
|
alias gcaS='git commit --verbose --all --gpg-sign'
|
||||||
|
alias gcm='git commit --message'
|
||||||
|
alias gcmS='git commit --message --gpg-sign'
|
||||||
|
alias gcam='git commit --all --message'
|
||||||
|
alias gco='git checkout'
|
||||||
|
alias gcO='git checkout --patch'
|
||||||
|
alias gcf='git commit --amend --reuse-message HEAD'
|
||||||
|
alias gcfS='git commit --amend --reuse-message HEAD --gpg-sign'
|
||||||
|
alias gcF='git commit --verbose --amend'
|
||||||
|
alias gcFS='git commit --verbose --amend --gpg-sign'
|
||||||
|
alias gcp='git cherry-pick --ff'
|
||||||
|
alias gcP='git cherry-pick --no-commit'
|
||||||
|
alias gcr='git revert'
|
||||||
|
alias gcR='git reset "HEAD^"'
|
||||||
|
alias gcs='git show'
|
||||||
|
alias gcsS='git show --pretty=short --show-signature'
|
||||||
|
alias gcl='git-commit-lost'
|
||||||
|
alias gcy='git cherry --verbose --abbrev'
|
||||||
|
alias gcY='git cherry --verbose'
|
||||||
|
|
||||||
|
# Conflict (C)
|
||||||
|
alias gCl='git --no-pager diff --name-only --diff-filter=U'
|
||||||
|
alias gCa='git add $(gCl)'
|
||||||
|
alias gCe='git mergetool $(gCl)'
|
||||||
|
alias gCo='git checkout --ours --'
|
||||||
|
alias gCO='gCo $(gCl)'
|
||||||
|
alias gCt='git checkout --theirs --'
|
||||||
|
alias gCT='gCt $(gCl)'
|
||||||
|
|
||||||
|
# Data (d)
|
||||||
|
alias gd='git ls-files'
|
||||||
|
alias gdc='git ls-files --cached'
|
||||||
|
alias gdx='git ls-files --deleted'
|
||||||
|
alias gdm='git ls-files --modified'
|
||||||
|
alias gdu='git ls-files --other --exclude-standard'
|
||||||
|
alias gdk='git ls-files --killed'
|
||||||
|
alias gdi='git status --porcelain --short --ignored | sed -n "s/^!! //p"'
|
||||||
|
|
||||||
|
# Fetch (f)
|
||||||
|
alias gf='git fetch'
|
||||||
|
alias gfa='git fetch --all'
|
||||||
|
alias gfc='git clone'
|
||||||
|
alias gfcr='git clone --recurse-submodules'
|
||||||
|
alias gfm='git pull'
|
||||||
|
alias gfma='git pull --autostash'
|
||||||
|
alias gfr='git pull --rebase'
|
||||||
|
alias gfra='git pull --rebase --autostash'
|
||||||
|
|
||||||
|
# Flow (F)
|
||||||
|
alias gFi='git flow init'
|
||||||
|
alias gFf='git flow feature'
|
||||||
|
alias gFb='git flow bugfix'
|
||||||
|
alias gFl='git flow release'
|
||||||
|
alias gFh='git flow hotfix'
|
||||||
|
alias gFs='git flow support'
|
||||||
|
|
||||||
|
alias gFfl='git flow feature list'
|
||||||
|
alias gFfs='git flow feature start'
|
||||||
|
alias gFff='git flow feature finish'
|
||||||
|
alias gFfp='git flow feature publish'
|
||||||
|
alias gFft='git flow feature track'
|
||||||
|
alias gFfd='git flow feature diff'
|
||||||
|
alias gFfr='git flow feature rebase'
|
||||||
|
alias gFfc='git flow feature checkout'
|
||||||
|
alias gFfm='git flow feature pull'
|
||||||
|
alias gFfx='git flow feature delete'
|
||||||
|
|
||||||
|
alias gFbl='git flow bugfix list'
|
||||||
|
alias gFbs='git flow bugfix start'
|
||||||
|
alias gFbf='git flow bugfix finish'
|
||||||
|
alias gFbp='git flow bugfix publish'
|
||||||
|
alias gFbt='git flow bugfix track'
|
||||||
|
alias gFbd='git flow bugfix diff'
|
||||||
|
alias gFbr='git flow bugfix rebase'
|
||||||
|
alias gFbc='git flow bugfix checkout'
|
||||||
|
alias gFbm='git flow bugfix pull'
|
||||||
|
alias gFbx='git flow bugfix delete'
|
||||||
|
|
||||||
|
alias gFll='git flow release list'
|
||||||
|
alias gFls='git flow release start'
|
||||||
|
alias gFlf='git flow release finish'
|
||||||
|
alias gFlp='git flow release publish'
|
||||||
|
alias gFlt='git flow release track'
|
||||||
|
alias gFld='git flow release diff'
|
||||||
|
alias gFlr='git flow release rebase'
|
||||||
|
alias gFlc='git flow release checkout'
|
||||||
|
alias gFlm='git flow release pull'
|
||||||
|
alias gFlx='git flow release delete'
|
||||||
|
|
||||||
|
alias gFhl='git flow hotfix list'
|
||||||
|
alias gFhs='git flow hotfix start'
|
||||||
|
alias gFhf='git flow hotfix finish'
|
||||||
|
alias gFhp='git flow hotfix publish'
|
||||||
|
alias gFht='git flow hotfix track'
|
||||||
|
alias gFhd='git flow hotfix diff'
|
||||||
|
alias gFhr='git flow hotfix rebase'
|
||||||
|
alias gFhc='git flow hotfix checkout'
|
||||||
|
alias gFhm='git flow hotfix pull'
|
||||||
|
alias gFhx='git flow hotfix delete'
|
||||||
|
|
||||||
|
alias gFsl='git flow support list'
|
||||||
|
alias gFss='git flow support start'
|
||||||
|
alias gFsf='git flow support finish'
|
||||||
|
alias gFsp='git flow support publish'
|
||||||
|
alias gFst='git flow support track'
|
||||||
|
alias gFsd='git flow support diff'
|
||||||
|
alias gFsr='git flow support rebase'
|
||||||
|
alias gFsc='git flow support checkout'
|
||||||
|
alias gFsm='git flow support pull'
|
||||||
|
alias gFsx='git flow support delete'
|
||||||
|
|
||||||
|
# Grep (g)
|
||||||
|
alias gg='git grep'
|
||||||
|
alias ggi='git grep --ignore-case'
|
||||||
|
alias ggl='git grep --files-with-matches'
|
||||||
|
alias ggL='git grep --files-without-matches'
|
||||||
|
alias ggv='git grep --invert-match'
|
||||||
|
alias ggw='git grep --word-regexp'
|
||||||
|
|
||||||
|
# Index (i)
|
||||||
|
alias gia='git add'
|
||||||
|
alias giA='git add --patch'
|
||||||
|
alias giu='git add --update'
|
||||||
|
alias gid='git diff --no-ext-diff --cached'
|
||||||
|
alias giD='git diff --no-ext-diff --cached --word-diff'
|
||||||
|
alias gii='git update-index --assume-unchanged'
|
||||||
|
alias giI='git update-index --no-assume-unchanged'
|
||||||
|
alias gir='git reset'
|
||||||
|
alias giR='git reset --patch'
|
||||||
|
alias gix='git rm -r --cached'
|
||||||
|
alias giX='git rm -r --force --cached'
|
||||||
|
|
||||||
|
# Log (l)
|
||||||
|
alias gl='git log --topo-order --pretty=format:"$_git_log_medium_format"'
|
||||||
|
alias gls='git log --topo-order --stat --pretty=format:"$_git_log_medium_format"'
|
||||||
|
alias gld='git log --topo-order --stat --patch --full-diff --pretty=format:"$_git_log_medium_format"'
|
||||||
|
alias glo='git log --topo-order --pretty=format:"$_git_log_oneline_format"'
|
||||||
|
alias glg='git log --topo-order --graph --pretty=format:"$_git_log_oneline_format"'
|
||||||
|
alias glb='git log --topo-order --pretty=format:"$_git_log_brief_format"'
|
||||||
|
alias glc='git shortlog --summary --numbered'
|
||||||
|
alias glS='git log --topo-order --show-signature --pretty=format:"${_git_log_medium_format}"'
|
||||||
|
|
||||||
|
# Merge (m)
|
||||||
|
alias gm='git merge'
|
||||||
|
alias gmC='git merge --no-commit'
|
||||||
|
alias gmF='git merge --no-ff'
|
||||||
|
alias gma='git merge --abort'
|
||||||
|
alias gmt='git mergetool'
|
||||||
|
|
||||||
|
# Push (p)
|
||||||
|
alias gp='git push'
|
||||||
|
alias gpf='git push --force-with-lease'
|
||||||
|
alias gpF='git push --force'
|
||||||
|
alias gpa='git push --all'
|
||||||
|
alias gpA='git push --all && git push --tags'
|
||||||
|
alias gpt='git push --tags'
|
||||||
|
alias gpc='git push --set-upstream origin "$(git-branch-current 2> /dev/null)"'
|
||||||
|
alias gpp='git pull origin "$(git-branch-current 2> /dev/null)" && git push origin "$(git-branch-current 2> /dev/null)"'
|
||||||
|
|
||||||
|
# Rebase (r)
|
||||||
|
alias gr='git rebase'
|
||||||
|
alias gra='git rebase --abort'
|
||||||
|
alias grc='git rebase --continue'
|
||||||
|
alias gri='git rebase --interactive'
|
||||||
|
alias grs='git rebase --skip'
|
||||||
|
|
||||||
|
# Remote (R)
|
||||||
|
alias gR='git remote'
|
||||||
|
alias gRl='git remote --verbose'
|
||||||
|
alias gRa='git remote add'
|
||||||
|
alias gRx='git remote rm'
|
||||||
|
alias gRm='git remote rename'
|
||||||
|
alias gRu='git remote update'
|
||||||
|
alias gRp='git remote prune'
|
||||||
|
alias gRs='git remote show'
|
||||||
|
alias gRb='git-hub-browse'
|
||||||
|
|
||||||
|
# Stash (s)
|
||||||
|
alias gs='git stash'
|
||||||
|
alias gsa='git stash apply'
|
||||||
|
alias gsx='git stash drop'
|
||||||
|
alias gsX='git-stash-clear-interactive'
|
||||||
|
alias gsl='git stash list'
|
||||||
|
alias gsL='git-stash-dropped'
|
||||||
|
alias gsd='git stash show --patch --stat'
|
||||||
|
alias gsp='git stash pop'
|
||||||
|
alias gsr='git-stash-recover'
|
||||||
|
alias gss='git stash save --include-untracked'
|
||||||
|
alias gsS='git stash save --patch --no-keep-index'
|
||||||
|
alias gsw='git stash save --include-untracked --keep-index'
|
||||||
|
|
||||||
|
# Submodule (S)
|
||||||
|
alias gS='git submodule'
|
||||||
|
alias gSa='git submodule add'
|
||||||
|
alias gSf='git submodule foreach'
|
||||||
|
alias gSi='git submodule init'
|
||||||
|
alias gSI='git submodule update --init --recursive'
|
||||||
|
alias gSl='git submodule status'
|
||||||
|
alias gSm='git-submodule-move'
|
||||||
|
alias gSs='git submodule sync'
|
||||||
|
alias gSu='git submodule update --remote --recursive'
|
||||||
|
alias gSx='git-submodule-remove'
|
||||||
|
|
||||||
|
# Tag (t)
|
||||||
|
alias gt='git tag'
|
||||||
|
alias gtl='git tag --list'
|
||||||
|
alias gts='git tag --sign'
|
||||||
|
alias gtv='git verify-tag'
|
||||||
|
|
||||||
|
# Working Copy (w)
|
||||||
|
alias gws='git status --ignore-submodules=$_git_status_ignore_submodules --short'
|
||||||
|
alias gwS='git status --ignore-submodules=$_git_status_ignore_submodules'
|
||||||
|
alias gwd='git diff --no-ext-diff'
|
||||||
|
alias gwD='git diff --no-ext-diff --word-diff'
|
||||||
|
alias gwr='git reset --soft'
|
||||||
|
alias gwR='git reset --hard'
|
||||||
|
alias gwc='git clean --dry-run'
|
||||||
|
alias gwC='git clean -d --force'
|
||||||
|
alias gwx='git rm -r'
|
||||||
|
alias gwX='git rm -r --force'
|
||||||
|
|
||||||
|
# Worktree management (W)
|
||||||
|
alias gWa='git worktree add'
|
||||||
|
alias gWl='git worktree list'
|
||||||
|
alias gWx='git worktree remove'
|
||||||
|
alias gWX='git worktree remove --force'
|
||||||
|
alias gWm='git worktree move'
|
||||||
|
alias gWc='git worktree prune'
|
||||||
|
fi
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#compdef git-hub-browse
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes git-hub-browse.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local state expl remotes remote branches_or_tags branches tags files ret=1
|
||||||
|
|
||||||
|
_arguments -C -s -S \
|
||||||
|
'1::args:->remote' \
|
||||||
|
'2::args:->branch-or-tag' \
|
||||||
|
'3::args:->file' && ret=0
|
||||||
|
|
||||||
|
case "$state" in
|
||||||
|
(remote)
|
||||||
|
remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2))
|
||||||
|
|
||||||
|
_describe -t branch 'remotes' remotes && ret=0
|
||||||
|
;;
|
||||||
|
(branch-or-tag)
|
||||||
|
remote="$words[(($CURRENT - 1))]"
|
||||||
|
|
||||||
|
branches_or_tags=($(
|
||||||
|
command git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2
|
||||||
|
))
|
||||||
|
|
||||||
|
branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/})
|
||||||
|
tags=(${${(M)branches_or_tags[@]##refs/tags/?##}##refs/tags/})
|
||||||
|
|
||||||
|
_describe -t branch 'branches' branches && ret=0
|
||||||
|
_describe -t tag 'tags' tags && ret=0
|
||||||
|
;;
|
||||||
|
(file)
|
||||||
|
files=(${(0)"$(_call_program files command git ls-files -z --exclude-standard 2> /dev/null)"})
|
||||||
|
_wanted file expl 'file' _multi_parts - / files && ret=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return $ret
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#compdef git-hub-shorten-url
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes git-hub-shorten-url.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
local service="$service"
|
||||||
|
|
||||||
|
zstyle ":completion:*:${service}:*:prefixes" ignored-patterns '^http(|s)://'
|
||||||
|
zstyle ":completion:*:${service}:*:hosts" ignored-patterns '^*github.com'
|
||||||
|
|
||||||
|
_arguments '1::GitHub URL:_urls' '2::code:' && return 0
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#compdef git-info
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes git-info.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
_arguments "1:toggle:((
|
||||||
|
on\:'enable in-prompt information for the current repository'
|
||||||
|
off\:'disable in-prompt information for the current repository'
|
||||||
|
))" && return 0
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#compdef git-submodule-move
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes git-submodule-move.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local state expl ret=1
|
||||||
|
local -a submodules
|
||||||
|
local submodule
|
||||||
|
|
||||||
|
_arguments -C -s -S \
|
||||||
|
'1::args:->submodule' \
|
||||||
|
'2::args:->directory' && ret=0
|
||||||
|
|
||||||
|
case "$state" in
|
||||||
|
(submodule)
|
||||||
|
while IFS=$'\n' read submodule; do
|
||||||
|
submodules+=("$submodule")
|
||||||
|
done < <(
|
||||||
|
command git config --file "$(git-root)/.gitmodules" --list \
|
||||||
|
| grep '.path=' \
|
||||||
|
| cut -d= -f2-
|
||||||
|
)
|
||||||
|
|
||||||
|
_describe -t submodule 'submodules' submodules && ret=0
|
||||||
|
;;
|
||||||
|
(directory)
|
||||||
|
_wanted directories expl 'directory' _path_files -/ || _message 'directory'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return $ret
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#compdef git-submodule-remove
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
#
|
||||||
|
# Completes git-submodule-remove.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a submodules
|
||||||
|
local submodule
|
||||||
|
|
||||||
|
while IFS=$'\n' read submodule; do
|
||||||
|
submodules+=("$submodule")
|
||||||
|
done < <(
|
||||||
|
command git config --file "$(git-root)/.gitmodules" --list \
|
||||||
|
| grep '.path=' \
|
||||||
|
| cut -d= -f2-
|
||||||
|
)
|
||||||
|
|
||||||
|
_describe -t submodule 'submodules' submodules && return 0
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#
|
||||||
|
# Displays the current Git branch.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-branch-current {
|
||||||
|
|
||||||
|
if ! command git rev-parse 2> /dev/null; then
|
||||||
|
print "$0: not a repository: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local ref="$(command git symbolic-ref HEAD 2> /dev/null)"
|
||||||
|
|
||||||
|
if [[ -n "$ref" ]]; then
|
||||||
|
print "${ref#refs/heads/}"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#
|
||||||
|
# Lists lost Git commits.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-commit-lost {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
command git fsck 2> /dev/null \
|
||||||
|
| grep "^dangling commit" \
|
||||||
|
| awk '{print $3}' \
|
||||||
|
| command git log \
|
||||||
|
--date-order \
|
||||||
|
--no-walk \
|
||||||
|
--stdin \
|
||||||
|
--pretty=format:${_git_log_oneline_format}
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# Displays the path to the Git directory.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-dir {
|
||||||
|
|
||||||
|
local git_dir="${$(command git rev-parse --git-dir):A}"
|
||||||
|
|
||||||
|
if [[ -n "$git_dir" ]]; then
|
||||||
|
print "$git_dir"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
print "$0: not a repository: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# Opens a GitHub repository in the default browser.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-hub-browse {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local remotes remote references reference file url
|
||||||
|
|
||||||
|
remote="${1:-origin}"
|
||||||
|
remotes=($(command git remote show))
|
||||||
|
|
||||||
|
if (( $remotes[(i)$remote] == $#remotes + 1 )); then
|
||||||
|
print "$0: remote not found: $remote" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
url=$(
|
||||||
|
command git remote get-url "$remote" \
|
||||||
|
| sed -En "s#(git@|https?://)(github.com)(:|/)(.+)/(.+)\.git#https://\2/\4/\5#p"
|
||||||
|
)
|
||||||
|
|
||||||
|
reference="${${2:-$(git-branch-current)}:-HEAD}"
|
||||||
|
references=(
|
||||||
|
HEAD
|
||||||
|
${${(f)"$(command git ls-remote --heads --tags "$remote")"}##*refs/(heads|tags)/}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (( $references[(i)$reference] == $#references + 1 )); then
|
||||||
|
print "$0: branch or tag not found: $reference" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$reference" == 'HEAD' ]]; then
|
||||||
|
reference="$(command git rev-parse HEAD 2> /dev/null)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
file="$3"
|
||||||
|
|
||||||
|
if [[ -n "$url" ]]; then
|
||||||
|
url="$url/tree/$reference/$file"
|
||||||
|
|
||||||
|
if [[ -n "$BROWSER" ]]; then
|
||||||
|
"$BROWSER" "$url"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
print "$0: browser not set or set to a non-existent browser" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print "$0: not a Git repository or remote not set" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#
|
||||||
|
# Shortens GitHub URLs.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-hub-shorten-url {
|
||||||
|
|
||||||
|
local url="$1" code="$2"
|
||||||
|
|
||||||
|
if [[ "$url" == '-' ]]; then
|
||||||
|
read url <&0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then
|
||||||
|
print "usage: $0 [ url | - ] [code] ; url must be a github.com URL" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $+commands[curl] )); then
|
||||||
|
print "${${(@M)${(f)"$(curl -s -i 'https://git.io' -F "url=$url" ${(z)code:+ -F "code=$code"})"}:#Location: *}#Location: }"
|
||||||
|
else
|
||||||
|
print "$0: command not found: curl" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,459 @@
|
|||||||
|
#
|
||||||
|
# Exposes Git repository information via the $git_info associative array.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Gets the Git special action (am, bisect, cherry, merge, rebase, revert).
|
||||||
|
# Borrowed from vcs_info and edited.
|
||||||
|
function _git-action {
|
||||||
|
local action_dir
|
||||||
|
local git_dir="$(git-dir)"
|
||||||
|
local apply_formatted
|
||||||
|
local bisect_formatted
|
||||||
|
local cherry_pick_formatted
|
||||||
|
local cherry_pick_sequence_formatted
|
||||||
|
local merge_formatted
|
||||||
|
local rebase_formatted
|
||||||
|
local rebase_interactive_formatted
|
||||||
|
local rebase_merge_formatted
|
||||||
|
local revert_formatted
|
||||||
|
local revert_sequence_formatted
|
||||||
|
|
||||||
|
for action_dir in \
|
||||||
|
"$git_dir/rebase-apply" \
|
||||||
|
"$git_dir/rebase" \
|
||||||
|
"$git_dir/../.dotest"
|
||||||
|
do
|
||||||
|
if [[ -d "$action_dir" ]] ; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' \
|
||||||
|
|| apply_formatted='apply'
|
||||||
|
zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' \
|
||||||
|
|| rebase_formatted='rebase'
|
||||||
|
|
||||||
|
if [[ -f "$action_dir/rebasing" ]] ; then
|
||||||
|
print "$rebase_formatted"
|
||||||
|
elif [[ -f "$action_dir/applying" ]] ; then
|
||||||
|
print "$apply_formatted"
|
||||||
|
else
|
||||||
|
print "$rebase_formatted/$apply_formatted"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for action_dir in \
|
||||||
|
"$git_dir/rebase-merge/interactive" \
|
||||||
|
"$git_dir/.dotest-merge/interactive"
|
||||||
|
do
|
||||||
|
if [[ -f "$action_dir" ]]; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' \
|
||||||
|
|| rebase_interactive_formatted='rebase-interactive'
|
||||||
|
print "$rebase_interactive_formatted"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for action_dir in \
|
||||||
|
"$git_dir/rebase-merge" \
|
||||||
|
"$git_dir/.dotest-merge"
|
||||||
|
do
|
||||||
|
if [[ -d "$action_dir" ]]; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' \
|
||||||
|
|| rebase_merge_formatted='rebase-merge'
|
||||||
|
print "$rebase_merge_formatted"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -f "$git_dir/MERGE_HEAD" ]]; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' \
|
||||||
|
|| merge_formatted='merge'
|
||||||
|
print "$merge_formatted"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$git_dir/CHERRY_PICK_HEAD" ]]; then
|
||||||
|
if [[ -d "$git_dir/sequencer" ]] ; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' \
|
||||||
|
|| cherry_pick_sequence_formatted='cherry-pick-sequence'
|
||||||
|
print "$cherry_pick_sequence_formatted"
|
||||||
|
else
|
||||||
|
zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' \
|
||||||
|
|| cherry_pick_formatted='cherry-pick'
|
||||||
|
print "$cherry_pick_formatted"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$git_dir/REVERT_HEAD" ]]; then
|
||||||
|
if [[ -d "$git_dir/sequencer" ]] ; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' \
|
||||||
|
|| revert_sequence_formatted='revert-sequence'
|
||||||
|
print "$revert_sequence_formatted"
|
||||||
|
else
|
||||||
|
zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' \
|
||||||
|
|| revert_formatted='revert'
|
||||||
|
print "$revert_formatted"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$git_dir/BISECT_LOG" ]]; then
|
||||||
|
zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' \
|
||||||
|
|| bisect_formatted='bisect'
|
||||||
|
print "$bisect_formatted"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gets the Git status information.
|
||||||
|
function git-info {
|
||||||
|
# Extended globbing is needed to parse repository status.
|
||||||
|
setopt LOCAL_OPTIONS
|
||||||
|
setopt EXTENDED_GLOB
|
||||||
|
|
||||||
|
local action
|
||||||
|
local action_format
|
||||||
|
local action_formatted
|
||||||
|
local added=0
|
||||||
|
local added_format
|
||||||
|
local added_formatted
|
||||||
|
local ahead=0
|
||||||
|
local ahead_and_behind
|
||||||
|
local ahead_and_behind_cmd
|
||||||
|
local ahead_format
|
||||||
|
local ahead_formatted
|
||||||
|
local ahead_or_behind
|
||||||
|
local behind=0
|
||||||
|
local behind_format
|
||||||
|
local behind_formatted
|
||||||
|
local branch
|
||||||
|
local branch_format
|
||||||
|
local branch_formatted
|
||||||
|
local branch_info
|
||||||
|
local clean
|
||||||
|
local clean_formatted
|
||||||
|
local commit
|
||||||
|
local commit_format
|
||||||
|
local commit_formatted
|
||||||
|
local deleted=0
|
||||||
|
local deleted_format
|
||||||
|
local deleted_formatted
|
||||||
|
local dirty=0
|
||||||
|
local dirty_format
|
||||||
|
local dirty_formatted
|
||||||
|
local ignore_submodules
|
||||||
|
local indexed=0
|
||||||
|
local indexed_format
|
||||||
|
local indexed_formatted
|
||||||
|
local -A info_formats
|
||||||
|
local info_format
|
||||||
|
local modified=0
|
||||||
|
local modified_format
|
||||||
|
local modified_formatted
|
||||||
|
local position
|
||||||
|
local position_format
|
||||||
|
local position_formatted
|
||||||
|
local remote
|
||||||
|
local remote_cmd
|
||||||
|
local remote_format
|
||||||
|
local remote_formatted
|
||||||
|
local renamed=0
|
||||||
|
local renamed_format
|
||||||
|
local renamed_formatted
|
||||||
|
local stashed=0
|
||||||
|
local stashed_format
|
||||||
|
local stashed_formatted
|
||||||
|
local status_cmd
|
||||||
|
local status_mode
|
||||||
|
local unindexed=0
|
||||||
|
local unindexed_format
|
||||||
|
local unindexed_formatted
|
||||||
|
local unmerged=0
|
||||||
|
local unmerged_format
|
||||||
|
local unmerged_formatted
|
||||||
|
local untracked=0
|
||||||
|
local untracked_format
|
||||||
|
local untracked_formatted
|
||||||
|
|
||||||
|
# Clean up previous $git_info.
|
||||||
|
unset git_info
|
||||||
|
typeset -gA git_info
|
||||||
|
|
||||||
|
# Return if not inside a Git repository work tree.
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $# > 0 )); then
|
||||||
|
if [[ "$1" == [Oo][Nn] ]]; then
|
||||||
|
command git config --bool prompt.showinfo true
|
||||||
|
elif [[ "$1" == [Oo][Ff][Ff] ]]; then
|
||||||
|
command git config --bool prompt.showinfo false
|
||||||
|
else
|
||||||
|
print "usage: $0 [ on | off ]" >&2
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Return if git-info is disabled.
|
||||||
|
if ! is-true "${$(command git config --bool prompt.showinfo):-true}"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ignore submodule status.
|
||||||
|
zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules'
|
||||||
|
|
||||||
|
# Format commit.
|
||||||
|
zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
|
||||||
|
if [[ -n "$commit_format" ]]; then
|
||||||
|
commit="$(command git rev-parse HEAD 2> /dev/null)"
|
||||||
|
if [[ -n "$commit" ]]; then
|
||||||
|
zformat -f commit_formatted "$commit_format" "c:$commit"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format stashed.
|
||||||
|
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
|
||||||
|
if [[ -n "$stashed_format" ]]; then
|
||||||
|
commondir=""
|
||||||
|
if [[ -f "$(git-dir)/commondir" ]]; then
|
||||||
|
commondir="$(<$(git-dir)/commondir)"
|
||||||
|
[[ "$commondir" =~ ^/ ]] || commondir="$(git-dir)/$commondir"
|
||||||
|
fi
|
||||||
|
if [[ -f "$(git-dir)/refs/stash" || ( -n "$commondir" && -f "$commondir/refs/stash" ) ]]; then
|
||||||
|
stashed=${#${(f)"$(command git stash list 2> /dev/null)"}}
|
||||||
|
if (( $stashed > 0 )); then
|
||||||
|
zformat -f stashed_formatted "$stashed_format" "S:$stashed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format action.
|
||||||
|
zstyle -s ':prezto:module:git:info:action' format 'action_format'
|
||||||
|
if [[ -n "$action_format" ]]; then
|
||||||
|
action="$(_git-action)"
|
||||||
|
if [[ -n "$action" ]]; then
|
||||||
|
zformat -f action_formatted "$action_format" "s:$action"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the branch.
|
||||||
|
branch="$(escape-eval "${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}")"
|
||||||
|
|
||||||
|
# Format branch.
|
||||||
|
zstyle -s ':prezto:module:git:info:branch' format 'branch_format'
|
||||||
|
if [[ -n "$branch" && -n "$branch_format" ]]; then
|
||||||
|
zformat -f branch_formatted "$branch_format" "b:$branch"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format position.
|
||||||
|
zstyle -s ':prezto:module:git:info:position' format 'position_format'
|
||||||
|
if [[ -z "$branch" && -n "$position_format" ]]; then
|
||||||
|
position="$(escape-eval "$(command git describe --contains --all HEAD 2> /dev/null)")"
|
||||||
|
if [[ -n "$position" ]]; then
|
||||||
|
zformat -f position_formatted "$position_format" "p:$position"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format remote.
|
||||||
|
zstyle -s ':prezto:module:git:info:remote' format 'remote_format'
|
||||||
|
if [[ -n "$branch" && -n "$remote_format" ]]; then
|
||||||
|
# Gets the remote name.
|
||||||
|
remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}'
|
||||||
|
remote="$(escape-eval "${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}")"
|
||||||
|
if [[ -n "$remote" ]]; then
|
||||||
|
zformat -f remote_formatted "$remote_format" "R:$remote"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format'
|
||||||
|
zstyle -s ':prezto:module:git:info:behind' format 'behind_format'
|
||||||
|
if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then
|
||||||
|
# Gets the commit difference counts between local and remote.
|
||||||
|
ahead_and_behind_cmd='command git rev-list --count --left-right HEAD...@{upstream}'
|
||||||
|
|
||||||
|
# Get ahead and behind counts.
|
||||||
|
ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)"
|
||||||
|
|
||||||
|
# Format ahead.
|
||||||
|
if [[ -n "$ahead_format" ]]; then
|
||||||
|
ahead="$ahead_and_behind[(pws:\t:)1]"
|
||||||
|
if (( ahead > 0 )); then
|
||||||
|
zformat -f ahead_formatted "$ahead_format" "A:$ahead"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format behind.
|
||||||
|
if [[ -n "$behind_format" ]]; then
|
||||||
|
behind="$ahead_and_behind[(pws:\t:)2]"
|
||||||
|
if (( behind > 0 )); then
|
||||||
|
zformat -f behind_formatted "$behind_format" "B:$behind"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get status type.
|
||||||
|
if ! zstyle -t ':prezto:module:git:info' verbose; then
|
||||||
|
# Format indexed.
|
||||||
|
zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format'
|
||||||
|
if [[ -n "$indexed_format" ]]; then
|
||||||
|
((
|
||||||
|
indexed+=$(
|
||||||
|
command git diff-index \
|
||||||
|
--no-ext-diff \
|
||||||
|
--name-only \
|
||||||
|
--cached \
|
||||||
|
--ignore-submodules=${ignore_submodules:-none} \
|
||||||
|
HEAD \
|
||||||
|
2> /dev/null \
|
||||||
|
| wc -l
|
||||||
|
)
|
||||||
|
))
|
||||||
|
if (( indexed > 0 )); then
|
||||||
|
zformat -f indexed_formatted "$indexed_format" "i:$indexed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format unindexed.
|
||||||
|
zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format'
|
||||||
|
if [[ -n "$unindexed_format" ]]; then
|
||||||
|
((
|
||||||
|
unindexed+=$(
|
||||||
|
command git diff-files \
|
||||||
|
--no-ext-diff \
|
||||||
|
--name-only \
|
||||||
|
--ignore-submodules=${ignore_submodules:-none} \
|
||||||
|
2> /dev/null \
|
||||||
|
| wc -l
|
||||||
|
)
|
||||||
|
))
|
||||||
|
if (( unindexed > 0 )); then
|
||||||
|
zformat -f unindexed_formatted "$unindexed_format" "I:$unindexed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format untracked.
|
||||||
|
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
|
||||||
|
if [[ -n "$untracked_format" ]]; then
|
||||||
|
((
|
||||||
|
untracked+=$(
|
||||||
|
command git ls-files \
|
||||||
|
--other \
|
||||||
|
--exclude-standard \
|
||||||
|
2> /dev/null \
|
||||||
|
| wc -l
|
||||||
|
)
|
||||||
|
))
|
||||||
|
if (( untracked > 0 )); then
|
||||||
|
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
(( dirty = indexed + unindexed + untracked ))
|
||||||
|
else
|
||||||
|
# Use porcelain status for easy parsing.
|
||||||
|
status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}"
|
||||||
|
|
||||||
|
# Get current status.
|
||||||
|
while IFS=$'\n' read line; do
|
||||||
|
# Count added, deleted, modified, renamed, unmerged, untracked, dirty.
|
||||||
|
# T (type change) is undocumented, see http://git.io/FnpMGw.
|
||||||
|
# For a table of scenarii, see http://i.imgur.com/2YLu1.png.
|
||||||
|
[[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ ))
|
||||||
|
[[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ ))
|
||||||
|
[[ "$line" == ?[MT]\ * ]] && (( modified++ ))
|
||||||
|
[[ "$line" == R?\ * ]] && (( renamed++ ))
|
||||||
|
[[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ ))
|
||||||
|
[[ "$line" == \?\?\ * ]] && (( untracked++ ))
|
||||||
|
(( dirty++ ))
|
||||||
|
done < <(${(z)status_cmd} 2> /dev/null)
|
||||||
|
|
||||||
|
# Format added.
|
||||||
|
if (( added > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:added' format 'added_format'
|
||||||
|
zformat -f added_formatted "$added_format" "a:$added"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format deleted.
|
||||||
|
if (( deleted > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format'
|
||||||
|
zformat -f deleted_formatted "$deleted_format" "d:$deleted"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format modified.
|
||||||
|
if (( modified > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:modified' format 'modified_format'
|
||||||
|
zformat -f modified_formatted "$modified_format" "m:$modified"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format renamed.
|
||||||
|
if (( renamed > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format'
|
||||||
|
zformat -f renamed_formatted "$renamed_format" "r:$renamed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format unmerged.
|
||||||
|
if (( unmerged > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format'
|
||||||
|
zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format untracked.
|
||||||
|
if (( untracked > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
|
||||||
|
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format dirty and clean.
|
||||||
|
if (( dirty > 0 )); then
|
||||||
|
zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'
|
||||||
|
zformat -f dirty_formatted "$dirty_format" "D:$dirty"
|
||||||
|
# Overwrite branch format to use dirty-branch format
|
||||||
|
zstyle -s ':prezto:module:git:info:dirty-branch' format 'branch_format'
|
||||||
|
if [[ -n "$branch" && -n "$branch_format" ]]; then
|
||||||
|
zformat -f branch_formatted "$branch_format" "b:$branch"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Format info.
|
||||||
|
zstyle -a ':prezto:module:git:info:keys' format 'info_formats'
|
||||||
|
for info_format in ${(k)info_formats}; do
|
||||||
|
zformat -f REPLY "$info_formats[$info_format]" \
|
||||||
|
"a:$added_formatted" \
|
||||||
|
"A:$ahead_formatted" \
|
||||||
|
"B:$behind_formatted" \
|
||||||
|
"b:$branch_formatted" \
|
||||||
|
"C:$clean_formatted" \
|
||||||
|
"c:$commit_formatted" \
|
||||||
|
"d:$deleted_formatted" \
|
||||||
|
"D:$dirty_formatted" \
|
||||||
|
"i:$indexed_formatted" \
|
||||||
|
"I:$unindexed_formatted" \
|
||||||
|
"m:$modified_formatted" \
|
||||||
|
"p:$position_formatted" \
|
||||||
|
"R:$remote_formatted" \
|
||||||
|
"r:$renamed_formatted" \
|
||||||
|
"s:$action_formatted" \
|
||||||
|
"S:$stashed_formatted" \
|
||||||
|
"U:$unmerged_formatted" \
|
||||||
|
"u:$untracked_formatted"
|
||||||
|
git_info[$info_format]="$REPLY"
|
||||||
|
done
|
||||||
|
|
||||||
|
unset REPLY
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
git-info "$@"
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# Displays the path to the working tree root.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-root {
|
||||||
|
|
||||||
|
local root="$(command git rev-parse --show-toplevel 2> /dev/null)"
|
||||||
|
|
||||||
|
if [[ -n "$root" ]]; then
|
||||||
|
print "$root"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#
|
||||||
|
# Asks for confirmation before clearing the Git stash.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-stash-clear-interactive {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local stashed
|
||||||
|
|
||||||
|
if [[ -f "$(git-dir)/refs/stash" ]]; then
|
||||||
|
stashed=${#${(f)"$(command git stash list 2> /dev/null)"}}
|
||||||
|
if (( $stashed > 0 )); then
|
||||||
|
if read -q "?Clear $stashed stashed state(s) [y/N]? "; then
|
||||||
|
command git stash clear
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#
|
||||||
|
# Lists dropped Git stashed states.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-stash-dropped {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
command git fsck --unreachable 2> /dev/null \
|
||||||
|
| grep 'commit' \
|
||||||
|
| awk '{print $3}' \
|
||||||
|
| command git log \
|
||||||
|
--pretty=format:$_git_log_oneline_format \
|
||||||
|
--extended-regexp \
|
||||||
|
--grep="${1:-(WIP )?[Oo]n [^:]+:}" \
|
||||||
|
--merges \
|
||||||
|
--no-walk \
|
||||||
|
--stdin
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# Recovers dropped Git stashed states.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-stash-recover {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local commit
|
||||||
|
|
||||||
|
for commit in "$@"; do
|
||||||
|
command git update-ref \
|
||||||
|
-m "$(command git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit"
|
||||||
|
done
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#
|
||||||
|
# Moves a Git submodule.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-submodule-move {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
elif [[ "$PWD" != "$(git-root)" ]]; then
|
||||||
|
print "$0: must be run from the root of the work tree" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local src="$1"
|
||||||
|
local dst="$2"
|
||||||
|
local url
|
||||||
|
|
||||||
|
url="$(command git config --file "$(git-root)/.gitmodules" --get "submodule.${src}.url")"
|
||||||
|
|
||||||
|
if [[ -z "$url" ]]; then
|
||||||
|
print "$0: submodule not found: $src" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$dst:h"
|
||||||
|
|
||||||
|
git-submodule-remove "$src"
|
||||||
|
command git submodule add "$url" "$dst"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#
|
||||||
|
# Removes a Git submodule.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# function git-submodule-remove {
|
||||||
|
|
||||||
|
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
|
||||||
|
print "$0: not a repository work tree: $PWD" >&2
|
||||||
|
return 1
|
||||||
|
elif [[ "$PWD" != "$(git-root)" ]]; then
|
||||||
|
print "$0: must be run from the root of the work tree" >&2
|
||||||
|
return 1
|
||||||
|
elif ! command git config --file .gitmodules --get "submodule.${1}.path" &> /dev/null; then
|
||||||
|
print "$0: submodule not found: $1" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
command git config --file "$(git-dir)/config" --remove-section "submodule.${1}" &> /dev/null
|
||||||
|
command git config --file "$(git-root)/.gitmodules" --remove-section "submodule.${1}" &> /dev/null
|
||||||
|
command git add .gitmodules
|
||||||
|
|
||||||
|
command git rm --cached -rf "$1"
|
||||||
|
rm -rf "$1"
|
||||||
|
rm -rf "$(git-dir)/modules/$1"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
# }
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# Provides Git aliases and functions.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if (( ! $+commands[git] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load dependencies.
|
||||||
|
pmodload 'helper'
|
||||||
|
|
||||||
|
# Load 'run-help' function.
|
||||||
|
autoload -Uz run-help-git
|
||||||
|
|
||||||
|
# Source module files.
|
||||||
|
source "${0:h}/alias.zsh"
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# GNU Utility
|
||||||
|
|
||||||
|
Provides for the interactive use of GNU utilities on BSD systems.
|
||||||
|
|
||||||
|
Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.,
|
||||||
|
`ls` instead of `gls`, is not recommended since scripts that target other
|
||||||
|
utilities will be broken.
|
||||||
|
|
||||||
|
This module wraps GNU utilities in functions without a prefix for interactive
|
||||||
|
use.
|
||||||
|
|
||||||
|
This module must be loaded _before_ the [_`utility`_][1] module so that GNU
|
||||||
|
utilities enabled in this module are available for configuration in _`utility`_
|
||||||
|
module.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
### Prefix
|
||||||
|
|
||||||
|
To use a different prefix, add the following to
|
||||||
|
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'g'` with the desired prefix.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zstyle ':prezto:module:gnu-utility' prefix 'g'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
_The authors of this module should be contacted via the [issue tracker][2]._
|
||||||
|
|
||||||
|
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||||
|
|
||||||
|
[1]: ../utility#readme
|
||||||
|
[2]: https://github.com/sorin-ionescu/prezto/issues
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
#
|
||||||
|
# Provides for the interactive use of GNU utilities on BSD systems.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Get the prefix or use the default.
|
||||||
|
zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' \
|
||||||
|
|| _gnu_utility_p='g'
|
||||||
|
|
||||||
|
# Return if requirements are not found.
|
||||||
|
if (( ! $+commands[${_gnu_utility_p}whoami] )); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
_gnu_utility_cmds=(
|
||||||
|
# Coreutils
|
||||||
|
'[' 'b2sum' 'base32' 'base64' 'basename' 'basenc' 'cat' 'chcon' 'chgrp'
|
||||||
|
'chmod' 'chown' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut'
|
||||||
|
'date' 'dd' 'df' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr'
|
||||||
|
'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' 'install' 'join'
|
||||||
|
'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' 'mkfifo'
|
||||||
|
'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' 'numfmt' 'od'
|
||||||
|
'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' 'pwd'
|
||||||
|
'readlink' 'realpath' 'rm' 'rmdir' 'runcon'
|
||||||
|
'seq' 'sha1sum' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf'
|
||||||
|
'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail'
|
||||||
|
'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' 'tty'
|
||||||
|
'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir'
|
||||||
|
'wc' 'who' 'whoami' 'yes'
|
||||||
|
|
||||||
|
# The following utilities are not part of Coreutils but installed separately.
|
||||||
|
|
||||||
|
# Binutils
|
||||||
|
'addr2line' 'ar' 'c++filt' 'coffdump' 'dlltool' 'dllwrap' 'elfedit' 'nm'
|
||||||
|
'objcopy' 'objdump' 'ranlib' 'readelf'
|
||||||
|
'size' 'srconv' 'strings' 'strip' 'sysdump' 'windmc' 'windres'
|
||||||
|
|
||||||
|
# Findutils
|
||||||
|
'find' 'locate' 'oldfind' 'updatedb' 'xargs'
|
||||||
|
|
||||||
|
# Libtool
|
||||||
|
'libtool' 'libtoolize'
|
||||||
|
|
||||||
|
# Miscellaneous
|
||||||
|
'awk' 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Wrap GNU utilities in functions.
|
||||||
|
for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do
|
||||||
|
_gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}"
|
||||||
|
if (( $+commands[$_gnu_utility_pcmd] \
|
||||||
|
&& ! $+builtins[$_gnu_utility_cmd] )); then
|
||||||
|
eval "
|
||||||
|
function $_gnu_utility_cmd {
|
||||||
|
'$commands[$_gnu_utility_pcmd]' \"\$@\"
|
||||||
|
}
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
unset _gnu_utility_{p,cmds,cmd,pcmd}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user