C'est quelque chose que j'ai fait dans le passé :
(defun jea-open-deep-file (arg)
(interactive "sWhich File?: ")
(cond
((string= "1" arg) (find-file "~/.emacs"))
((string= "2" arg) (find-file "/Users/jamesanderson/code/python/aws/comprehend/README.md"))
((string= "3" arg) (find-file "~/some/other/file/somewhere/else.el"))
(t (message "unknown choice"))))
(global-set-key [(f7)] 'jea-open-deep-file)
Alors, qu'est-ce qui se passe ici ? Il y a une fonction appelée : "jea-open-deep-file" qui peut ouvrir n'importe quel fichier avec "find-file". Si vous voulez l'essayer, vous pouvez la mettre dans votre fichier ".emacs", ou dans le tampon *scratch* pour l'essayer une seule fois. Une fois que vous avez modifié les appels à find-file pour pointer sur les fichiers que vous voulez ouvrir, vous pouvez évaluer le tampon (il y a plusieurs façons de le faire, la plus simple pour cette discussion est : Alt+X puis "eval-buffer" sans les guillemets dans la zone inférieure).
Comment l'utiliser ? Dans ce cas, j'ai fait correspondre la fonction à la fonction F7 clé. Choisissez-en une que vous n'utilisez pas déjà. Donc, une fois installé avec eval-buffer, je peux y aller :
- F7
- Il me demande "Quel fichier ?"
- Je tape 1, 2 ou 3 et je tape RETURN
- emacs ouvre le fichier
Je n'ai pas accès à une machine Windows pour le moment, mais vous devrez peut-être modifier légèrement les chemins, par exemple : "C:\\Program Files (x86)\\Aspell\\bin\\aspell.exe"
ceci avec un supplément \ s'échappe.
Chaque fois que vous voulez ajouter un fichier à jea-open-deep-file, vous devrez réévaluer la fonction (cela semble un peu bizarre au début, mais c'est ainsi que vous "éditez l'éditeur pendant que vous éditez", ce qui est vraiment agréable de ne pas avoir à recharger toute l'application emacs).
Edit :
Si vous voulez sauter à une ligne particulière, essayez :
(defun jea-open-file-goto-line (fname line)
(progn
(find-file fname)
(goto-char 0)
(forward-line line)))
(defun jea-open-deep-file (arg)
(interactive "sWhich File-Line?: ")
(let* ((split (split-string arg "-"))
(file (car split))
(line (string-to-number (cadr split))))
(cond
((string= "a" file) (jea-open-file-goto-line "~/.emacs" line))
((string= "b" file) (jea-open-file-goto-line "/Users/jamesanderson/code/python/aws/comprehend/README.md" line))
((string= "c" file) (jea-open-file-goto-line "~/some/other/file/somewhere/else.el" line))
(t (message "unknown choice")))))
(global-set-key [(f7)] 'jea-open-deep-file)
à l'invite, tapez "b-13" (sans les guillemets) si vous voulez aller à la 13ème ligne du fichier marqué "b".