Emacs Lisp로 실행 파일의 경로를 어떻게 찾을 수 있습니까?


16

현재 사용 사례는 Cask실행 파일이 있는 곳을 찾는 것 입니다 (적어도 두 곳에서 설치할 수 있으며 이에 관한 문제가 있습니다).

이 방법으로 통을 요구해야합니다.

(require 'cask "~/.cask/cask.el")

그러나 올바른 경로를 찾아야하며 cask.el, 아는 한 가장 쉬운 방법은 실행 파일을 찾는 것입니다.

어떻게해야합니까?


6
executable-find당신을 위해 무엇을 찾고 있는지?
legoscia

2
실행 파일 또는 lisp 라이브러리 파일을 원하십니까? 캐스 크는 둘 다 가지고 있습니다.
shosti

두 가지 다른 질문을하고있는 것 같습니다. 캐스 크 실행 파일을 찾으시겠습니까? 또는 cask.el 라이브러리 파일 (실행 파일이 아님)? 질문과 제목을 적절히 수정하십시오.
Malabarba

답변:


17

@ 시그마의 대답은 좋은 시작이지만 실행 가능성별로 필터링하지 않으며 추가 접미사를 허용하지 않습니다. 예를 들어, Windows에서 running aa.exe경로에있는 경우를 호출 할 수 있습니다 .

따라서 사용하십시오 executable-find; 궁금한 점이 있다면 (Emacs의 출처에서 가져온) 정의입니다.

(defun executable-find (command)
  "Search for COMMAND in `exec-path' and return the absolute file name.
Return nil if COMMAND is not found anywhere in `exec-path'."
  ;; Use 1 rather than file-executable-p to better match the behavior of
  ;; call-process.
  (locate-file command exec-path exec-suffixes 1))

3

잘 이해하지 못합니다 (Cask를 직접 사용하지 않습니다).

(locate-file "cask" exec-path)

그것은 일반적인 질문에 대한 답변 인 것 같습니다.


3
실행 파일의 경우 특히을 사용해야 executable-find합니다.
lunaryorn

0

부분 접두사에서 실행 파일 경로 :

(locate-file-completion-table
   exec-path
   exec-suffixes
   ;; here is prefix like "emacs" gives "emacs21"/"emacs22"/"emacs-nox"
   (thing-at-point 'filename)
   'identity
   t)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.