Domanda

Avendo un percorso relativo, come posso trasformarlo in uno assoluto dalla posizione in cui si trova il file elisp che sto caricando. Cioè, ho un file elisp che sto caricando, ha un percorso relativo e ne ho bisogno uno assoluto.

È stato utile?

Soluzione

'file-truename

Dalla documentazione:

  

Restituisce il truename di FILENAME, che   dovrebbe essere assoluto. Il truename di a   il nome del file si trova inseguendo simbolico   collega entrambi a livello del file   e a livello delle directory   contenendolo, fino a quando non rimangono più collegamenti   a qualsiasi livello.

L'altra soluzione offerta ("nome-file-espanso) lascia al suo posto collegamenti simbolici, che possono essere o meno ciò che si desidera. 'file-truename utilizza' nome-file-espanso, quindi entrambi determineranno il percorso relativo alla directory predefinita per il buffer (che è ciò che stai chiedendo).

Dopo aver visto il commento / la domanda con una risposta diversa, il problema è che la directory predefinita è quella del buffer che chiama 'load.

Fortunatamente, esiste una variabile che carica i set che memorizza il percorso del file da caricare. Prova questo frammento di codice:

;; this is in the file being loaded
(let ((default-directory (file-name-directory load-file-name)))
   (file-truename "blih"))

Altri suggerimenti

Ho finito per usare:

(expand-file-name "relative/path" (file-name-directory load-file-name))

Puoi usare la funzione expand-file-name per convertire un relativo nome o percorso in un nome / percorso assoluto. Guarda qui per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top