feat(revamp): add zsh and neovim configs, add an install script and a dependencies list
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
[general]
|
||||
location-provider=manual
|
||||
|
||||
[manual]
|
||||
lat=48.81471
|
||||
lon=2.36073
|
||||
@@ -0,0 +1,172 @@
|
||||
### Modifier
|
||||
set $mod Mod4
|
||||
|
||||
### Execs
|
||||
exec --no-startup-id nm-applet
|
||||
#exec_always --no-startup-id $HOME/.config/polybar/launch.sh
|
||||
#exec --no-startup-id feh --no-fehbg --bg-scale $HOME/Images/forbiddencity.jpg
|
||||
exec --no-startup-id nitrogen --restore
|
||||
exec --no-startup-id setxkbmap us
|
||||
exec --no-startup-id xrdb ~/.Xresources
|
||||
|
||||
|
||||
### i3 config
|
||||
# Gaps and borders
|
||||
hide_edge_borders both
|
||||
for_window [class="^.*"] border pixel 2
|
||||
gaps inner 8
|
||||
gaps outer 5
|
||||
client.focused #555555 #555555 #ffffff #2e9ef4 #017515
|
||||
|
||||
# Font
|
||||
font pango:monospace 9
|
||||
|
||||
# Floating modifier
|
||||
floating_modifier $mod
|
||||
|
||||
### Bindings
|
||||
# Lock screen
|
||||
bindsym Ctrl+Mod1+l exec --no-startup-id betterlockscreen -l blur
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec --no-startup-id sakura
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
bindsym $mod+d exec --no-startup-id rofi -font "Hack 14" -show-icons -show drun
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus left
|
||||
bindsym $mod+k focus down
|
||||
bindsym $mod+l focus up
|
||||
bindsym $mod+semicolon focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move left
|
||||
bindsym $mod+Shift+k move down
|
||||
bindsym $mod+Shift+l move up
|
||||
bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+h split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
## Workspaces
|
||||
# Names
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# Change workspace
|
||||
bindsym $mod+1 workspace $ws1
|
||||
bindsym $mod+2 workspace $ws2
|
||||
bindsym $mod+3 workspace $ws3
|
||||
bindsym $mod+4 workspace $ws4
|
||||
bindsym $mod+5 workspace $ws5
|
||||
bindsym $mod+6 workspace $ws6
|
||||
bindsym $mod+7 workspace $ws7
|
||||
bindsym $mod+8 workspace $ws8
|
||||
bindsym $mod+9 workspace $ws9
|
||||
bindsym $mod+0 workspace $ws10
|
||||
|
||||
# Move program to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace $ws10
|
||||
|
||||
# Reload config
|
||||
bindsym $mod+Shift+c reload
|
||||
# Reload i3
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# Resize mode
|
||||
mode "resize" {
|
||||
bindsym j resize shrink width 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize shrink height 10 px or 10 ppt
|
||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
## Status bar
|
||||
bar {
|
||||
status_command i3blocks
|
||||
position top
|
||||
}
|
||||
## Volume
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
|
||||
|
||||
## Brightness
|
||||
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10
|
||||
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10
|
||||
|
||||
## Power button
|
||||
bindsym XF86PowerOff exec --no-startup-id /home/alex/.bin/pmenu
|
||||
|
||||
## Screenshots
|
||||
# scrot & gimp - root
|
||||
bindsym Print exec scrot -e 'mv $f /tmp/ && gimp /tmp/$f'
|
||||
# scrot & gimp - select window or rectangle
|
||||
bindsym Mod1+Print exec scrot -s -e 'mv $f /tmp/ && gimp /tmp/$f'
|
||||
Executable
+1273
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
backend = "glx";
|
||||
vsync = true;
|
||||
|
||||
shadow = true;
|
||||
dock = { shadow = false; };
|
||||
dnd = { shadow = false; };
|
||||
shadow-radius = 7;
|
||||
shadow-offset-x = -10;
|
||||
shadow-offset-y = -10;
|
||||
shadow-exclude =
|
||||
[
|
||||
"n:e:Notification",
|
||||
"_GTK_FRAME_EXTENTS@:c",
|
||||
"class_g = 'firefox' && argb"
|
||||
];
|
||||
shadow-ignore-shaped = true;
|
||||
|
||||
blur-background-fixed = false;
|
||||
blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ];
|
||||
|
||||
fading = true;
|
||||
fade-delta = 7;
|
||||
fade-in-step = 0.05;
|
||||
fade-out-step = 0.05;
|
||||
fade-exclude = [];
|
||||
|
||||
mark-wmwin-focused = true;
|
||||
mark-ovredir-focused = true;
|
||||
use-ewmh-active-win = false;
|
||||
detect-rounded-corners = true;
|
||||
detect-client-opacity = true;
|
||||
refresh-rate = 60;
|
||||
dbe = false;
|
||||
unredir-if-possible = false;
|
||||
focus-exclude = [];
|
||||
detect-transient = true;
|
||||
detect-client-leader = true;
|
||||
invert-color-include = [];
|
||||
|
||||
wintypes: {
|
||||
tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; };
|
||||
};
|
||||
|
||||
inactive-opacity = 0.95
|
||||
opacity-rule =
|
||||
[
|
||||
"100:name *= 'mantablockscreen'",
|
||||
"100:class_g = 'Firefox'"
|
||||
];
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
rofi.theme: /usr/share/rofi/themes/gruvbox-dark-hard.rasi
|
||||
@@ -0,0 +1,188 @@
|
||||
### Modifier
|
||||
set $mod Mod4
|
||||
|
||||
### Execs
|
||||
exec {
|
||||
systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||
hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||
/usr/bin/lxpolkit
|
||||
setxkbmap us
|
||||
gammastep
|
||||
}
|
||||
|
||||
# Specific workspaces
|
||||
# Thunderbird
|
||||
set $ws11 ""
|
||||
assign [class="^Thunderbird$"] $ws11
|
||||
exec --no-startup-id thunderbird
|
||||
# Spotify
|
||||
set $ws12 ""
|
||||
for_window [class="^Spotify$"] move to $ws12
|
||||
|
||||
### Sway config
|
||||
# Gaps and borders
|
||||
default_border pixel 2
|
||||
gaps inner 8
|
||||
gaps outer 5
|
||||
|
||||
# Bar
|
||||
bar {
|
||||
swaybar_command waybar
|
||||
}
|
||||
|
||||
# Wallpaper
|
||||
output "*" bg $HOME/.config/wallpaper/forbiddencity.jpg fill
|
||||
output DP-2 mode 1920x1080@144Hz
|
||||
|
||||
# Font
|
||||
font pango:Hack 9
|
||||
|
||||
# Floating modifier
|
||||
floating_modifier $mod
|
||||
|
||||
### Bindings
|
||||
# Exit sway
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
|
||||
|
||||
# Lock screen
|
||||
bindsym Ctrl+Mod1+l exec --no-startup-id mantablockscreen -cc
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec --no-startup-id terminator
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
bindsym $mod+d exec --no-startup-id rofi -show-icons -show drun
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus left
|
||||
bindsym $mod+k focus down
|
||||
bindsym $mod+l focus up
|
||||
bindsym $mod+semicolon focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move left
|
||||
bindsym $mod+Shift+k move down
|
||||
bindsym $mod+Shift+l move up
|
||||
bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+h split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
## Workspaces
|
||||
# Names
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# Change workspace
|
||||
bindsym $mod+1 workspace $ws1
|
||||
bindsym $mod+2 workspace $ws2
|
||||
bindsym $mod+3 workspace $ws3
|
||||
bindsym $mod+4 workspace $ws4
|
||||
bindsym $mod+5 workspace $ws5
|
||||
bindsym $mod+6 workspace $ws6
|
||||
bindsym $mod+7 workspace $ws7
|
||||
bindsym $mod+8 workspace $ws8
|
||||
bindsym $mod+9 workspace $ws9
|
||||
bindsym $mod+0 workspace $ws10
|
||||
|
||||
# Move program to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace $ws10
|
||||
|
||||
# Reload config
|
||||
bindsym $mod+Shift+r reload
|
||||
|
||||
# Resize mode
|
||||
mode "resize" {
|
||||
bindsym j resize shrink width 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize shrink height 10 px or 10 ppt
|
||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
## Volume
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id amixer sset 'Master' 5%+
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id amixer sset 'Master' 5%-
|
||||
bindsym XF86AudioMute exec --no-startup-id amixer sset 'Master' toggle
|
||||
|
||||
## Music
|
||||
bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
|
||||
bindsym XF86AudioNext exec --no-startup-id playerctl next
|
||||
bindsym XF86AudioPrev exec --no-startup-id playerctl previous
|
||||
|
||||
## Screenshots
|
||||
# scrot & gimp - root
|
||||
bindsym Print exec --no-startup-id grim -g "$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)" - | swappy -f -
|
||||
|
||||
## Color
|
||||
# class border backgr. text indicator child_border
|
||||
client.focused #3d7a3b #287730 #ffffff #26bf42 #2a7728
|
||||
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
|
||||
client.unfocused #333333 #222222 #888888 #292d2e #222222
|
||||
client.urgent #3a2f30 #900000 #ffffff #900000 #900000
|
||||
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 30,
|
||||
"spacing": 0,
|
||||
"modules-left": ["sway/workspaces"],
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": ["tray", "pulseaudio", "network", "temperature", "backlight", "sway/language"],
|
||||
"sway/workspaces": {
|
||||
"all-outputs": true,
|
||||
"numeric-forst": true,
|
||||
"enable-bar-scroll": true,
|
||||
"format": "{name}{icon}",
|
||||
"format-icons": {
|
||||
"urgent": " ",
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"tray": {
|
||||
// "icon-size": 21,
|
||||
"spacing": 10
|
||||
},
|
||||
"clock": {
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format": "{:%H:%M %d %b %Y}",
|
||||
},
|
||||
"cpu": {
|
||||
"format": "{usage}% ",
|
||||
"tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": "{}% "
|
||||
},
|
||||
"temperature": {
|
||||
"hwmon-path": "/sys/devices/platform/nct6775.656/hwmon/hwmon4/temp2_input",
|
||||
"critical-threshold": 80,
|
||||
"format-critical": "{icon} {temperatureC}°C",
|
||||
"format": "{icon} {temperatureC}°C",
|
||||
"format-icons": ["", "", ""]
|
||||
},
|
||||
"network": {
|
||||
"interface": "enp4s*",
|
||||
"format-wifi": " {essid} ({signalStrength}%)",
|
||||
"format-ethernet": " {ipaddr}/{cidr}",
|
||||
//"tooltip-format": " {ifname} via {gwaddr}",
|
||||
"format-linked": " {ifname} (No IP)",
|
||||
"format-disconnected": "⚠ Disconnected",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}% {format_source}",
|
||||
"format-bluetooth": "{icon} {volume}% {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": " {volume}%",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
@@ -0,0 +1,28 @@
|
||||
# GPG
|
||||
|
||||
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
|
||||
|
||||
## Settings
|
||||
|
||||
### SSH
|
||||
|
||||
To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in
|
||||
replacement for `ssh-agent`, add the following line to
|
||||
_`$GNUPGHOME/gpg-agent.conf`_ or _`$$HOME/.gnupg/gpg-agent.conf`_:
|
||||
|
||||
```conf
|
||||
enable-ssh-support
|
||||
```
|
||||
|
||||
When OpenSSH Agent protocol emulation is enabled, this module will load the SSH
|
||||
module for additional processing.
|
||||
|
||||
## Authors
|
||||
|
||||
_The authors of this module should be contacted via the [issue tracker][3]._
|
||||
|
||||
- [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||
|
||||
[1]: https://www.gnupg.org
|
||||
[2]: https://linux.die.net/man/1/gpg-agent
|
||||
[3]: https://github.com/sorin-ionescu/prezto/issues
|
||||
@@ -0,0 +1,56 @@
|
||||
#
|
||||
# Provides for an easier use of GPG by setting up gpg-agent.
|
||||
#
|
||||
# Authors:
|
||||
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
||||
#
|
||||
|
||||
# Return if requirements are not found.
|
||||
if (( ! $+commands[gpg-agent] )); then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Set the default paths to gpg-agent files.
|
||||
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
|
||||
_gpg_agent_env="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/gpg-agent.env"
|
||||
|
||||
# Load environment variables from previous run
|
||||
source "$_gpg_agent_env" 2> /dev/null
|
||||
|
||||
# Start gpg-agent if not started.
|
||||
if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then
|
||||
# Start gpg-agent if not started.
|
||||
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then
|
||||
mkdir -p "$_gpg_agent_env:h"
|
||||
eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Inform gpg-agent of the current TTY for user prompts.
|
||||
export GPG_TTY=$TTY
|
||||
|
||||
# Integrate with the SSH module.
|
||||
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
|
||||
# Load required functions.
|
||||
autoload -Uz add-zsh-hook
|
||||
|
||||
# Override the ssh-agent environment file default path.
|
||||
_ssh_agent_env="$_gpg_agent_env"
|
||||
|
||||
# Load the SSH module for additional processing.
|
||||
pmodload 'ssh'
|
||||
|
||||
# Updates the GPG-Agent TTY before every command since SSH does not set it.
|
||||
function _gpg-agent-update-tty {
|
||||
gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null
|
||||
}
|
||||
add-zsh-hook preexec _gpg-agent-update-tty
|
||||
fi
|
||||
|
||||
# Clean up.
|
||||
unset _gpg_agent_{conf,env}
|
||||
|
||||
# Disable GUI prompts inside SSH.
|
||||
if [[ -n "$SSH_CONNECTION" ]]; then
|
||||
export PINENTRY_USER_DATA='USE_CURSES=1'
|
||||
fi
|
||||
@@ -0,0 +1,25 @@
|
||||
# Haskell
|
||||
|
||||
Enables local Haskell package installation.
|
||||
|
||||
## Per-user Package Installation
|
||||
|
||||
[Cabal][1], the Haskell package manager, can install packages into per user
|
||||
directories.
|
||||
|
||||
This module prepends per user directories to the relevant path variables to
|
||||
enable the execution of user installed executables and the reading of
|
||||
documentation.
|
||||
|
||||
### Usage
|
||||
|
||||
Install packages into per user directories with `cabal install --user`.
|
||||
|
||||
## Authors
|
||||
|
||||
_The authors of this module should be contacted via the [issue tracker][2]._
|
||||
|
||||
- [Sebastian Wiesner](https://github.com/lunaryorn)
|
||||
|
||||
[1]: https://www.haskell.org/cabal/
|
||||
[2]: https://github.com/sorin-ionescu/prezto/issues
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user