从命令行第2部分启动emacs-gdb

时间:2011-07-05 23:03:31

标签: emacs gdb zsh

我想在运行gdb的情况下启动emacs。我想让所有的命令行参数同时输入。这个帖子: Start emacs-gdb from command line?,已经解决了95%的问题,但我对这个问题有一个烦人的唠叨。我真的需要能够传递有空格的参数,ala

edbg path/to/myprog --firstarg "something with spaces" --secondarg 1

我一直在这个网站和谷歌搜索,我玩了几个小时,但我似乎无法弄清楚这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

所以,据我所知,你定义了这个Bash函数:

edbg() { emacs --eval "(gdb \"gdb --annotate=3 $*\")";}

并且它不起作用,因为参数中的任何空格都被重新分析为新的单词边界。好吧,这是Bash脚本中常见的问题,有一个特殊的变量$ @,当它在双引号字符串中时,会以不同的方式扩展函数的参数。这让我们中途到了。剩下的就是把报价放在他们周围:

edbg() {
  arglist="";
  for a in "$@"; do
    if [[ $a == ${a/ /} ]]; then
      arglist="$arglist $a";
    else
      arglist="$arglist \\\"$a\\\"";
    fi
  done;
  emacs --eval "(gdb \"gdb --annotate $arglist\")"
}

请注意,这不会在包含制表符或换行符的args周围加上引号,这也需要引号;您的$ IFS可能会有所不同。

相关问题