【问题标题】:How to reuse rostopic's completion function for completing a custom bash function?如何重用 rostopic 的完成功能来完成自定义 bash 功能?
【发布时间】:2018-02-22 04:05:45
【问题描述】:

定义 bash 函数rte():

$ function rte(){ rostopic echo $@ ; };

并尝试使用rostopic的补全函数

$ complete -p rostopic
complete -F _roscomplete_rostopic rostopic

通过命令:

$ complete -F _roscomplete_rostopic rte

以上设置可验证如下:

$ complete -p rte
complete -F _roscomplete_rostopic rte

但是,rte <partial input><tab> 不提供补全。

问题:如何让rte()使用rostopic的补全?我猜当rte()的完成调用rostopic的完成时,上下文echo需要提供给rostopic的完成(即COMP_WORDS需要包含echo)。

【问题讨论】:

    标签: ros bash-completion


    【解决方案1】:

    想出了一个解决方案——现在.bashrc 中有以下内容:

    function rte(){ rostopic echo "$@" ; };
    
    complete -F _mycomplete_ rte
    
    function _mycomplete_()
    {
        local fragment=${COMP_WORDS[COMP_CWORD]}
        COMP_CWORD=2
        COMP_WORDS[0]="rostopic"
        COMP_WORDS[1]="echo"
        COMP_WORDS[2]=$fragment
        COMP_LINE="rostopic echo $fragment"
    
        _roscomplete_rostopic;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 2012-09-20
      • 2015-09-13
      相关资源
      最近更新 更多