【问题标题】:emacs, nrepl, M-. (nrepl-jump): Searching for program: permission denied, unzipemacs,nrepl,M-。 (nrepl-jump):搜​​索程序:权限被拒绝,解压缩
【发布时间】:2013-10-01 12:34:41
【问题描述】:

UPD:我的操作系统是 Win7 64 位

尝试使用 M- 跳转到符号的定义时出现以下错误。

Searching for program: permission denied, unzip

Google 在这个问题上对我没有多大帮助。有人能指出我正确的方向吗?

这是我的配置中与 clojure 相关的部分:

;; clojure

(require 'clojure-mode)

(add-hook 'clojure-mode-hook
          (lambda ()
            (setq buffer-save-without-query t)))

;;command to align let statements
;;To use: M-x align-cljlet
(require 'align-cljlet)

(setq auto-mode-alist (append '(("\\.cljs$" . clojure-mode))
                              auto-mode-alist))

(dolist (x '(scheme emacs-lisp lisp clojure))
  (add-hook (intern (concat (symbol-name x) "-mode-hook")) 'rainbow-delimiters-mode))


;; nrepl

(require 'nrepl )

(defun live-windows-hide-eol ()
 "Do not show ^M in files containing mixed UNIX and DOS line endings."
 (interactive)
 (setq buffer-display-table (make-display-table))
 (aset buffer-display-table ?\^M []))


(when (eq system-type 'windows-nt)
  (add-hook 'nrepl-mode-hook 'live-windows-hide-eol ))

(add-hook 'nrepl-interaction-mode-hook
          (lambda ()
            (nrepl-turn-on-eldoc-mode)))

(add-hook 'nrepl-mode-hook
          (lambda ()
            (nrepl-turn-on-eldoc-mode)))


(setq nrepl-popup-stacktraces nil)
(setq nrepl-popup-stacktraces-in-repl nil)
(add-to-list 'same-window-buffer-names "*nrepl*")

;;Auto Complete
(require 'ac-nrepl )
(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
(add-hook 'clojure-nrepl-mode-hook 'ac-nrepl-setup)

(eval-after-load "auto-complete"
  '(add-to-list 'ac-modes 'nrepl-mode))

;; specify the print length to be 100 to stop infinite sequences killing things.
(defun live-nrepl-set-print-length ()
  (nrepl-send-string-sync "(set! *print-length* 100)" "clojure.core"))

(add-hook 'nrepl-connected-hook 'live-nrepl-set-print-length)

;;; Windows M-. navigation fix
;(defun nrepl-jump-to-def (var)
;  "Jump to the definition of the var at point."
;  (let ((form (format "((clojure.core/juxt
;                         (comp (fn [s] (if (clojure.core/re-find #\"[Ww]indows\" (System/getProperty \"os.name\"))
;                                           (.replace s \"file:/\" \"file:\")
;                                           s))
;                               clojure.core/str
;                               clojure.java.io/resource :file)
;                         (comp clojure.core/str clojure.java.io/file :file) :line)
;                        (clojure.core/meta (clojure.core/ns-resolve '%s '%s)))"
;                      (nrepl-current-ns) var)))
;    (nrepl-send-string form
;                       (nrepl-jump-to-def-handler (current-buffer))
;                       (nrepl-current-ns)
;                       (nrepl-current-tooling-session))))

(setq nrepl-port "4555")

【问题讨论】:

  • 指定系统。确保解压缩正常 (which unzip)。此外,您拥有 clojure jar 的权限(我的在 ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar 中)。

标签: emacs clojure file-permissions nrepl


【解决方案1】:

问题很可能是您没有安装unzip。

如果您有 7-Zip,请将其在“程序文件”下的目录添加到您的 PATH 环境变量中。当我这样做并重新启动 Emacs 时,它会自动将其识别为 unzip 替代并正确配置自身(即变量 archive-zip-extract 设置为 ("7z" "x" "-so"))。

理想情况下,应该可以使用 Java 自己的 jar 程序来实现这一点,但显然它不支持将单个文件提取到标准输出,这是 Emacs 弧模式的工作方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 2013-06-29
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多