mirror of
https://github.com/skywind3000/z.lua
synced 2026-03-24 08:39:49 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c36d55698 | ||
|
|
bdab27db1b | ||
|
|
e08f5beca4 | ||
|
|
a245db0d93 | ||
|
|
dd721703c3 | ||
|
|
7920d56c89 | ||
|
|
645818ccc8 | ||
|
|
b98911a227 | ||
|
|
671830059b | ||
|
|
0fad96124b | ||
|
|
465f2b8e62 | ||
|
|
ff9d874ef4 |
@@ -458,7 +458,10 @@ As you see, z.lua is the fastest one and requires less resource.
|
|||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
- 1.7.0 (2019-03-09): Support ranger, fix ReplaceFile issue in luajit (windows).
|
- 1.7.3 (2019-09-07): use [lua-filesystem](http://keplerproject.github.io/luafilesystem/) package if possible when `$_ZL_USE_LFS` is `1`.
|
||||||
|
- 1.7.2 (2019-08-01): Improve bash/zsh shell compatibility by [@barlik](https://github.com/barlik).
|
||||||
|
- 1.7.1 (2019-06-07): Fixed: `$_ZL_DATA` failure on Linux sometimes.
|
||||||
|
- 1.7.0 (2019-03-09): Support [ranger](https://github.com/skywind3000/z.lua/wiki/FAQ#how-to-integrate-zlua-to-ranger-), fix ReplaceFile issue in luajit (windows).
|
||||||
- 1.6.0 (2019-03-04): optimize with ffi module (luajit builtin module).
|
- 1.6.0 (2019-03-04): optimize with ffi module (luajit builtin module).
|
||||||
- 1.5.11 (2019-03-02): fixed: os.path.isdir doesn't work for symbol link folders.
|
- 1.5.11 (2019-03-02): fixed: os.path.isdir doesn't work for symbol link folders.
|
||||||
- 1.5.10 (2019-03-01): Prevent writing file racing.
|
- 1.5.10 (2019-03-01): Prevent writing file racing.
|
||||||
@@ -510,6 +513,7 @@ This project needs help for the tasks below:
|
|||||||
- Thanks to [@TeddyDD](https://github.com/TeddyDD) for Fish Shell porting.
|
- Thanks to [@TeddyDD](https://github.com/TeddyDD) for Fish Shell porting.
|
||||||
- Thanks to [@manhong2112](https://github.com/manhong2112) for Power Shell porting.
|
- Thanks to [@manhong2112](https://github.com/manhong2112) for Power Shell porting.
|
||||||
- Thanks to [@BarbUk](https://github.com/BarbUk) for fzf completion in Bash.
|
- Thanks to [@BarbUk](https://github.com/BarbUk) for fzf completion in Bash.
|
||||||
|
- Thanks to [@barlik](https://github.com/barlik) for many improvements.
|
||||||
|
|
||||||
And many others.
|
And many others.
|
||||||
|
|
||||||
|
|||||||
51
z.lua
51
z.lua
@@ -4,7 +4,7 @@
|
|||||||
-- z.lua - a cd command that learns, by skywind 2018, 2019
|
-- z.lua - a cd command that learns, by skywind 2018, 2019
|
||||||
-- Licensed under MIT license.
|
-- Licensed under MIT license.
|
||||||
--
|
--
|
||||||
-- Version 1.7.0, Last Modified: 2019/03/09 16:51
|
-- Version 1.7.3, Last Modified: 2019/09/06 17:27
|
||||||
--
|
--
|
||||||
-- * 10x faster than fasd and autojump, 3x faster than z.sh
|
-- * 10x faster than fasd and autojump, 3x faster than z.sh
|
||||||
-- * available for posix shells: bash, zsh, sh, ash, dash, busybox
|
-- * available for posix shells: bash, zsh, sh, ash, dash, busybox
|
||||||
@@ -74,6 +74,7 @@
|
|||||||
-- set $_ZL_MAXAGE to define a aging threshold (default is 5000).
|
-- set $_ZL_MAXAGE to define a aging threshold (default is 5000).
|
||||||
-- set $_ZL_MATCH_MODE to 1 to enable enhanced matching mode.
|
-- set $_ZL_MATCH_MODE to 1 to enable enhanced matching mode.
|
||||||
-- set $_ZL_NO_CHECK to 1 to disable path validation. z --purge to clear.
|
-- set $_ZL_NO_CHECK to 1 to disable path validation. z --purge to clear.
|
||||||
|
-- set $_ZL_USE_LFS to 1 to use lua-filesystem package
|
||||||
--
|
--
|
||||||
--=====================================================================
|
--=====================================================================
|
||||||
|
|
||||||
@@ -548,6 +549,9 @@ end
|
|||||||
-- file or path exists
|
-- file or path exists
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
function os.path.exists(name)
|
function os.path.exists(name)
|
||||||
|
if name == '/' then
|
||||||
|
return true
|
||||||
|
end
|
||||||
local ok, err, code = os.rename(name, name)
|
local ok, err, code = os.rename(name, name)
|
||||||
if not ok then
|
if not ok then
|
||||||
if code == 13 then
|
if code == 13 then
|
||||||
@@ -1869,11 +1873,8 @@ function z_init()
|
|||||||
DATA_FILE = _zl_data
|
DATA_FILE = _zl_data
|
||||||
else
|
else
|
||||||
-- avoid windows environments affect cygwin & msys
|
-- avoid windows environments affect cygwin & msys
|
||||||
if _zl_data:sub(2, 2) ~= ':' then
|
if not string.match(_zl_data, '^%a:[/\\]') then
|
||||||
local t = _zl_data:sub(3, 3)
|
DATA_FILE = _zl_data
|
||||||
if t ~= '/' and t ~= "\\" then
|
|
||||||
DATA_FILE = _zl_data
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2013,14 +2014,14 @@ alias ${_ZL_CMD:-z}='_zlua'
|
|||||||
local script_init_bash = [[
|
local script_init_bash = [[
|
||||||
case "$PROMPT_COMMAND" in
|
case "$PROMPT_COMMAND" in
|
||||||
*_zlua?--add*) ;;
|
*_zlua?--add*) ;;
|
||||||
*) PROMPT_COMMAND="(_zlua --add \"\$(command pwd 2>/dev/null)\" &);$PROMPT_COMMAND" ;;
|
*) PROMPT_COMMAND="(_zlua --add \"\$(command pwd 2>/dev/null)\" &)${PROMPT_COMMAND:+;$PROMPT_COMMAND}" ;;
|
||||||
esac
|
esac
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local script_init_bash_fast = [[
|
local script_init_bash_fast = [[
|
||||||
case "$PROMPT_COMMAND" in
|
case "$PROMPT_COMMAND" in
|
||||||
*_zlua?--add*) ;;
|
*_zlua?--add*) ;;
|
||||||
*) PROMPT_COMMAND="(_zlua --add \"\$PWD\" &);$PROMPT_COMMAND" ;;
|
*) PROMPT_COMMAND="(_zlua --add \"\$PWD\" &)${PROMPT_COMMAND:+;$PROMPT_COMMAND}" ;;
|
||||||
esac
|
esac
|
||||||
]]
|
]]
|
||||||
|
|
||||||
@@ -2032,7 +2033,7 @@ _zlua_precmd() {
|
|||||||
}
|
}
|
||||||
case "$PROMPT_COMMAND" in
|
case "$PROMPT_COMMAND" in
|
||||||
*_zlua_precmd*) ;;
|
*_zlua_precmd*) ;;
|
||||||
*) PROMPT_COMMAND="_zlua_precmd;$PROMPT_COMMAND" ;;
|
*) PROMPT_COMMAND="_zlua_precmd${PROMPT_COMMAND:+;$PROMPT_COMMAND}" ;;
|
||||||
esac
|
esac
|
||||||
]]
|
]]
|
||||||
|
|
||||||
@@ -2059,7 +2060,7 @@ local script_init_zsh = [[
|
|||||||
_zlua_precmd() {
|
_zlua_precmd() {
|
||||||
(_zlua --add "${PWD:a}" &)
|
(_zlua --add "${PWD:a}" &)
|
||||||
}
|
}
|
||||||
typeset -gaU precmd_functions
|
typeset -ga precmd_functions
|
||||||
[ -n "${precmd_functions[(r)_zlua_precmd]}" ] || {
|
[ -n "${precmd_functions[(r)_zlua_precmd]}" ] || {
|
||||||
precmd_functions[$(($#precmd_functions+1))]=_zlua_precmd
|
precmd_functions[$(($#precmd_functions+1))]=_zlua_precmd
|
||||||
}
|
}
|
||||||
@@ -2069,7 +2070,7 @@ local script_init_zsh_once = [[
|
|||||||
_zlua_precmd() {
|
_zlua_precmd() {
|
||||||
(_zlua --add "${PWD:a}" &)
|
(_zlua --add "${PWD:a}" &)
|
||||||
}
|
}
|
||||||
typeset -gaU chpwd_functions
|
typeset -ga chpwd_functions
|
||||||
[ -n "${chpwd_functions[(r)_zlua_precmd]}" ] || {
|
[ -n "${chpwd_functions[(r)_zlua_precmd]}" ] || {
|
||||||
chpwd_functions[$(($#chpwd_functions+1))]=_zlua_precmd
|
chpwd_functions[$(($#chpwd_functions+1))]=_zlua_precmd
|
||||||
}
|
}
|
||||||
@@ -2542,7 +2543,33 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
-- testing case
|
-- LFS optimize
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
os.lfs = {}
|
||||||
|
os.lfs.enable = os.getenv('_ZL_USE_LFS')
|
||||||
|
if os.lfs.enable ~= nil then
|
||||||
|
local m = string.lower(os.lfs.enable)
|
||||||
|
if (m == '1' or m == 'yes' or m == 'true' or m == 't') then
|
||||||
|
os.lfs.status, os.lfs.pkg = pcall(require, 'lfs')
|
||||||
|
if os.lfs.status then
|
||||||
|
local lfs = os.lfs.pkg
|
||||||
|
os.path.exists = function (name)
|
||||||
|
return lfs.attributes(name) and true or false
|
||||||
|
end
|
||||||
|
os.path.isdir = function (name)
|
||||||
|
local mode = lfs.attributes(name)
|
||||||
|
if not mode then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return (mode.mode == 'directory') and true or false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
-- program entry
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
if not pcall(debug.getlocal, 4, 1) then
|
if not pcall(debug.getlocal, 4, 1) then
|
||||||
-- main script
|
-- main script
|
||||||
|
|||||||
Reference in New Issue
Block a user