gpt4 book ai didi

Perl:如何让 Emacs 将引号添加到 Perl 脚本的完整路径?

转载 作者:行者123 更新时间:2023-12-04 15:46:48 24 4
gpt4 key购买 nike

令人尴尬的简单问题。当我使用 C-c c 时,在 Windows 7 64 上的 Emacs 23.4.1 中使用 CPerl 模式运行脚本 Emacs 不会将路径用引号括起来,因此任何带有空格的目录都会导致 Perl 无法找到该文件。"C:/Perl64/bin\perl.exe -w g:/foo/bar/first second/myscript.pl"生成此错误消息:"Can't open perl script "g:/foo/bar/first": No such file or directory"
问题:如何让 Emacs 在将文件名传递给 Perl 本身时使用引号?

编辑:出于某种原因,我无法发表评论(可能是浏览器问题),因此我正在编辑原始帖子以回应@legoscia 的评论:“C-c c 运行命令模式编译”。在 Perl 菜单中,它被标记为“运行”。

最佳答案

我只有 mode-compile.el v2.29 可用,但在那个版本中,问题与您描述的完全一样,编译命令的参数没有正确转义,并且没有启用它的选项。

这是一个小技巧,但您应该能够重新定义相关函数,并在您的 .emacs 中正确转义文件名。文件:

(eval-after-load 'mode-compile
'(progn
(defun mc--shell-compile (shell dbgflags &optional errors-regexp-alist)
;; Run SHELL with debug flags DBGFLAGS on current-buffer
(let* ((shcmd (or (mc--which shell)
(error "Compilation abort: command %s not found" shell)))
(shfile (or mc--remote-pathname (buffer-file-name)
(error "Compilation abort: Buffer %s has no filename"
(buffer-name))))
(run-cmd (concat shcmd " " dbgflags " " (shell-quote-argument shfile) " "
(setq mc--shell-args
(read-string (if mode-compile-expert-p
"Argv: "
(format "Arguments to %s %s script: "
shfile shell))
mc--shell-args)))))
;; Modify compilation-error-regexp-alist if needed
(if errors-regexp-alist
(progn
;; Set compilation-error-regexp-alist from compile
(or (listp errors-regexp-alist)
(error "Compilation abort: In mc--shell-compile errors-regexp-alist not a list."))
;; Add new regexp alist to compilation-error-regexp-alist
(mapcar '(lambda(x)
(if (mc--member x compilation-error-regexp-alist) nil
(setq compilation-error-regexp-alist
(append (list x)
compilation-error-regexp-alist))))
errors-regexp-alist)))
;; Run compile with run-cmd
(mc--compile run-cmd)))))

我改变的线路正在改变

(run-cmd (concat shcmd " " dbgflags " " shfile " "



(run-cmd (concat shcmd " " dbgflags " " (shell-quote-argument shfile) " "

一个更完整的修复方法是也避开 dbgflags (无论它们在哪里设置,仅仅转义整个变量都是不对的)和 mc--shell-args当它们也被设置时。

关于Perl:如何让 Emacs 将引号添加到 Perl 脚本的完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11095943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com