В emacs редактируйте раздел файла так, как если бы он был отдельным файлом

320
kdb

Для некоторых задач я предпочитаю отдельные большие файлы, а не разбивать проект (например, отчет LaTeX, скрипт Python среднего размера) на отдельные файлы меньшего размера, например, для упрощения поиска и поиска и замены. Однако для редактирования часто предпочтительнее иметь отдельные представления разных частей проекта, предпочитая несколько небольших файлов.

Является ли какой-то режим / пакет для emacs, который позволяет редактировать части файлов, как если бы они были отдельным файлом, при этом синхронизируя буфер со всеми другими представлениями файла? Я знаю об этом clone-indirect-buffer, но хотя он и выполняет часть цели, я бы предпочел метод, ограничивающий косвенный буфер определенным разделом файла. Подумайте, например, об орг-режимах, C-c 'но реализованных с косвенным буфером. В идеале реализация должна поддерживать некоторый синтаксис для определения разделов.

Я думаю, что редактор LEO основан на концепции, которую я хочу для emacs, хотя я никогда не пробовал (не работал в моей системе).

2

1 ответ на вопрос

1
Drew

One library that provides such behavior is Narrow Indirect (narrow-indirect.el). It gives you a different view of a portion of the buffer, or even of the whole buffer (use C-x h C-x 4 n n).

It always has the same text and text properties, but otherwise it is pretty independent. In particular, you can kill an indirect buffer without affecting its base buffer. You will likely want to kill indirect narrowed buffers rather than widening them.

You can use indirect buffers for more than you might think. You can use clones taken from portions of Dired buffers, for example, to give you useful (active) views into a directory listing. There are only a few keys/commands (such as g to update the listing) that do not work, because they depend on a view of the whole Dired buffer. Experiment, and you will no doubt find interesting new uses for indirect buffers.

See also the Emacs manual, node Indirect Buffers.

Кажется, что я просил в основном. Хотя тем временем я обнаружил, что возможности в основном уже встроены (функции «clone-косвенный-buffer» и «узкий-для -...»). Я предполагаю, что мне придется взглянуть на распространение этого на автоматическое определение более общих областей самостоятельно (забыл спросить об этом в моем вопросе). kdb 9 лет назад 0
Что вы подразумеваете под "* автоматическим определением более общих областей *"? Drew 9 лет назад 0
Например, поддержка синтаксиса, который позволяет объявлять разделы файла независимо от типа содержимого файла; Например, функция «узкий раздел», где текущий раздел начинается со строки комментария, содержащей `START_SECTION` или, возможно,`
`и заканчивается строкой, содержащей соответствующий закрывающий тег.
kdb 9 лет назад 0

Похожие вопросы