Emacs Lisp ile yürütülebilir dosyanın yolunu nasıl bulabilirim?


16

Şu anki kullanım durumum, Caskyürütülebilir dosyanın nerede olduğunu bulmaktır (en az iki yere kurulabilir ve bu konuda açık bir sorun vardır ).

Fıçıya şu şekilde ihtiyacım var:

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

Ama bunun için doğru yolu bulmalıyım ve cask.elbildiğim kadarıyla bunu yapmanın en kolay yolu yürütülebilir dosyayı bulmaktır .

Bunu nasıl yapabilirim?


6
executable-findAradığınız ne var?
legoscia

2
Yürütülebilir dosyayı veya lisp kitaplığı dosyasını istiyor musunuz? Fıçının her ikisi de var.
shosti

Görünüşe göre iki farklı şey soruyorsun. Fıçı yürütülebilir dosyasını bulmak istiyor musunuz? Veya cask.el kütüphane dosyası (yürütülebilir olmayan)? Lütfen sorunuzu ve başlığınızı buna göre değiştirin.
Malabarba

Yanıtlar:


18

@ Sigma'nın cevabı iyi bir başlangıçtır, ancak çalıştırılabilirliğe göre filtrelenmez ve fazladan eklere izin vermez. Örneğin, pencerelerinizde, ayolunuzda bulunanlar a.exevarsa , koşu çağırabilir .

Yani kullanın executable-find; merak ediyorsanız tanımı (Emacs'ın kaynaklarından alınmıştır):

(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

Tamamen anladığımdan emin değilim (Cask'u kendim kullanmıyorum), ancak aşağıdakiler sizi doğru yola sokar mı?

(locate-file "cask" exec-path)

Genel sorunuzun cevabı bu gibi görünüyor.


3
Yürütülebilir dosyalar için özellikle kullanmalısınız executable-find.
lunaryorn

0

Kısmi önekte yürütülebilir dosya yolları:

(locate-file-completion-table
   exec-path
   exec-suffixes
   ;; here is prefix like "emacs" gives "emacs21"/"emacs22"/"emacs-nox"
   (thing-at-point 'filename)
   'identity
   t)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.