如何覆盖(装饰)内置功能鱼

问题描述 投票:0回答:1

我想沉默是对printf的第9行中发现,因为我觉得这恼人的/usr/share/fish/functions/__fish_move_last.fish

我该怎么办,如果没有在复制整个功能?

如果我只是复制到~/.config/fish/functions/文件和注释行9,当原来的功能在新版本中得到更新,我就能把事情。

我宁愿沉默的是这样的功能:

functions -c __fish_move_last __fish_move_last_ORIG

function __fish_move_last
    __fish_move_last_ORIG $argv >/dev/null
end

但是,如果我把在~/.config/fish/functions/__fish_move_last.fish该片段中,我得到这个错误:

鱼:无法自动加载项“__fish_move_last”,它已经被自动加载。这是自动加载脚本循环依赖,请删除它。

我试图在文件的开头明确的加载原有的功能,以避免自动加载,但它并没有使错误消失:

source /usr/share/fish/functions/__fish_move_last.fish

functions -c __fish_move_last __fish_move_last_ORIG

function __fish_move_last
    __fish_move_last_ORIG $argv >/dev/null
end

什么是这里的正确的做法?

override autoload fish
1个回答
2
投票

我该怎么办,如果没有在复制整个功能?

你不知道。

解决的办法是,确实是,复制整个功能。

当原有的功能在新版本中得到更新,我就能把事情。

从理论上讲,这是可能的。然而,在这种特殊情况下,它的最后一个变化是

  • 重新格式化,在2016年11月
  • 改变“...”的省略号(‘...’)于2016年7月
  • 在2010年消除尾随空格

因此,我认为你是安全的。

如果你还是担心这个,你也可以复制此功能和所有依赖于它(prevd和nextd,我会承担)。

或者你可以沉默prevd和nextd,或沉默那些__fish_move_lasts输出。

任何形式的功能压倒一切的任意位看起来他们会更容易出错,而不是更少。

© www.soinside.com 2019 - 2024. All rights reserved.