Как сделать ярлык emacs для переключения между связанными файлами? - PullRequest
0 голосов
/ 20 июля 2011

Например, у меня открыт файл model / user.py, и я хочу иметь ярлык, который открывает controller / user.py.Или я хочу переключиться на test / model / testUser.py (надуманный пример)

Я бы хотел создать ярлык emacs, который, учитывая файл, открытый в данный момент, открывает файлы, связанные различными способами.

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Если «связанные файлы» следуют некоторому шаблону, я думаю, что тривиально написать некоторые функции elisp для выполнения задачи.Допустим, у вас есть модель и вам нужно открыть связанный с ней контроллер, вам нужно будет сделать что-то вроде этого:

(defun my-open-related-controller ()
  (interactive)
  (let* ((name (buffer-file-name))) ;gets the filename of the current buffer
    ;; Of course, this is only an example. The point here is that you need
    ;; to "discover" the name of the related file based on the current one.
    (setf name (replace-regexp-in-string "model" "controller" name))

    ;; Now you will open the file(if it isn't open already) and switch to it
    (find-file name)))

Затем вы можете связать функцию, скажем, с F5:

(define-key name-of-the-mode-map [f5] 'my-open-related-controller)

Если вы хотите создать эту привязку глобально, используйте:

(global-set-key [f5] 'my-open-related-controller)

Конечно, это только грубый пример (так как вы не дали много конкретных деталей), но его должно быть достаточно, чтобы получитьты начал.Надеюсь, это поможет!

2 голосов
/ 20 июля 2011

Если вы не хотите писать это самостоятельно и предпочитаете настраивать существующую библиотеку, вы можете посмотреть toggle.el .Он предназначен для того, чтобы делать то, что вы просите.

0 голосов
/ 25 июля 2011

Существует также jump.el , который rinari использует для этой цели (за исключением проектов Ruby on Rails). Я дал вторую ссылку, потому что rinari.el в этом проекте содержит настройки, которые управляют переходами из одного места в другое (контроллер для просмотра, модель, миграция и т. Д.).

Похоже, вы можете получить jump.el для перехода к определенному методу в файле - но это может занять немного усилий.

...