Emacs: определить местоположение в файле - PullRequest
2 голосов
/ 13 января 2011

Скажем, я просматривал исходный файл в emacs и заметил кое-что, что хотел бы обратить внимание коллеги. Есть ли простой способ (то есть команда), чтобы получить имя файла и местоположение точки, например, если я на линии 21 в foo.cpp

c:\temp\foo.cpp:21

Ответы [ 4 ]

5 голосов
/ 13 января 2011

Эта функция делает то, что вы хотите.Он отображает информацию в виде сообщения и добавляет ее в список уничтожений (для легкого вставки).

(defun get-file-line ()
  "show (and set kill-ring) current file and line"
  (interactive)
  (unless (buffer-file-name)
    (error "No file for buffer %s" (buffer-name)))
  (let ((msg (format "%s:%d"
                     (file-truename (buffer-file-name))
                     (line-number-at-pos))))
    (kill-new msg)
    (message msg)))
1 голос
/ 13 января 2011

Имя буфера обычно совпадает с именем файла, и по умолчанию номер строки также находится на моделине.

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

0 голосов
/ 20 августа 2011

Вы также можете пометить позицию: Cx rm .

Это добавит объект закладки в ваш файл закладок: значение переменной bookmark-default-file, которая равна "~/.emacs.bmk"по умолчанию.

Вы можете скопировать это и отправить своему коллеге для использования в его собственном файле закладок.

Cx rb приведет вас непосредственно к закладке.Смотрите руководство Emacs, узел Bookmarks.

0 голосов
/ 13 января 2011

На ум приходит пара функций:

  • what-line, которые обычно не связаны с ключом.
  • what-cursor-position, который обычно связан с Cx = .

Ни один из них не печатает имя базового буферафайл, если есть, но вы можете написать интерактивную функцию, которая будет делать это, если отображение строки режима не соответствует вашим потребностям.

...