2011-02-26 13 views
5

Estoy buscando una forma de insertar un nombre de archivo/ruta en línea durante la edición. Algo así como una selección de archivos estilo ido en línea sería perfecto. ¿Hay algo así por ahí?Emacs in place nombre de archivo/inserción de ruta

+0

escribí algo que funciona, pero es bastante medieval y simple: http://pastebin.com/tVHvM8st interesado en una mejor solución todavía. – re5et

+0

¿Desea insertar el nombre de la ruta absoluta del archivo * actual *, o cualquiera, con la finalización? –

+0

cualquiera con finalización, como lo hace la pasta. algo un poco más elegante sería bueno, tal vez en línea no usar el mini-buffer – re5et

Respuesta

4

siempre uso comint-dynamic-complete-filename para esto. Esto no parece estar cargado de forma predeterminada, sino provisto por comint-mode. De este modo se puede poner algo así como

(autoload 'comint-dynamic-complete-filename "comint" nil t) 
(global-set-key "\M-]" 'comint-dynamic-complete-filename) 

en su ~/.emacs o similares. Utilice su propia clave de encuadernación preferida, por supuesto.

1

bien, si quieres sólo tiene que insertar el nombre del archivo actual en el punto, entonces

(insert (expand-file-name (buffer-file-name))) 

debe hacerlo.

Si desea poder encontrar un archivo en cualquier ruta, querrá replicar parte del código en find-file-noselect en files.el en la línea 1714.

En cualquier caso, si desea enlazar esto una función, usted probablemente querrá

(defun insert-file-name-at-point() 
    (interactive) ....) 
+0

estoy usando emacs 24, y find-file-noselect comienza en 1768, ¿a qué parte se refiere? – re5et

1
(defun insert-file-name (file &optional relativep) 
    "Read file name and insert it at point. 
With a prefix argument, insert only the non-directory part." 
    (interactive "fFile: \nP") 
    (when relativep (setq file (file-name-nondirectory file))) 
    (insert file)) 
Cuestiones relacionadas