2009-08-11 2 views
2

Я хочу знать, что «вещь» находится в точке в буфере с буфером.Emacs вещь в точке в буфере буфера

Например Debug является "каталог":

drwxrwxrwx 0 10.08.2009 17:50 Debug

Makefile является "Файл":

-rw-RW -rw- 15к 6-03-2009 13:02 Makefile

и это "заголовок"

d:/foo/bar/Debug:

Один из способов найти вещь - посмотреть, какое лицо находится в точке. Есть ли другой способ сделать это? Как определить границы раздела вещей?

Стандарт (имя файла «вещь в точке») не обрабатывает пробелы в имени файла.

ответ

5

Эти функции могут быть полезны в стряпают, что вы хотите:

  • Dired-получить имя файла
  • dired- двигаться к имени файла
  • Dired-перемещение-к-отслуживших файла
  • файл-каталог-р и друзей
+0

да, это то, что я искал. большое спасибо –

1

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

(defun highlight-thing-at-point() 
    (interactive) 
    (let* ((my-thing (bounds-of-thing-at-point 'sexp)) 
     (my-overlay (make-overlay (first my-thing) (rest my-thing)))) 
    (overlay-put my-overlay 'name 'my-highlights) 
    (overlay-put my-overlay 'face 'highlight))) 

(defun unhighlight-all-of-mine() 
    (interactive) 
    (remove-overlays nil nil 'my-highlights)) 

EDIT:

Вы можете добавить пользовательскую функцию для возвращения за границы файла в точке, которая имеет пробелы в нем. См. Пример this EmacsWiki article. Поэтому, если вы напишете функцию с именем my-bounds-of-filename-at-point, вы можете установить ее как значение по умолчанию для имени файла (bounds-of-thing-at-point) и (имя файла-точки), например это:

(put 'filename 'bounds-of-thing-at-point 'my-bounds-of-filename-at-point) 
+0

Мой вопрос был не в освещении, а в поиске того, что находится в точке. (bounds-of-thing-at-point 'sexp) не обрабатывает пробелы в имени файла в буфере с буфером. –

+0

Да, вы правы, я могу определить свой собственный парсер. Еще проще, я могу зайти вперёд (тогда назад) по одному персонажу, пока он не изменит лицо. Таким образом, я могу найти границы. Но мой вопрос состоял в том, чтобы использовать что-то существующее, стандартное решение для этой, казалось бы, стандартной задачи. –

1

Первый символ в списке - d для каталогов, l для ссылок, - для обычных файлов. Есть символы, представляющие символьные и блочные устройства, процессы и т. Д. Что еще вы хотели знать? (Я никогда не видел ваш тип «заголовок» Как вы производите, что.?)

+0

Дублированный буфер отображается с использованием разных граней - заголовок (например, самая первая строка в буфере с буфером), dired-directory и т. Д. Мой вопрос заключался в том, что «вещь» находится в точке и как определять границы (начало и конец) вещь. –

+0

Олег, ты повторяешь свой вопрос, используя те же слова. Если вам нужен другой ответ, было бы полезно предоставить больше или другую информацию. Почему вас беспокоит точка, а не текущая строка? Почему вы хотите знать границы, когда вы можете использовать регулярное выражение для поиска всего имени файла? – PanCrit

1

Там никогда (почти никогда?) a предмет в пункт. Существуют функции «точка-точка», которые могут извлекать текст в точке или около нее, что является предметом определенного типа. Итак, у вас есть фундаментальное заблуждение.

В Dired, как и в других местах, в зависимости от того, где находится точка, вы можете получить имя символа в точке, имя файла в точке и несколько других вещей - все из одной и той же позиции.

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

Если вы используете Dired+, то вы можете использовать Ch RET (команда diredp-describe-file), чтобы получить информацию о файле или директории на текущей строке - его тип, атрибуты и т.д.

Если вы хотите получить предмет в точке или около точки программно, см. Thing At Point+.

 Смежные вопросы

  • Нет связанных вопросов^_^