2013-11-16 1 views
0

Близко связано с Emacs specific region read only как вы удалить свойство только для чтения в области текста в буфере.emacs удалить регион только для чтения

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

+0

Любопытно узнать, какое условие делает вывод из оболочки Python доступным только для чтения. –

+0

@ AndreasRöhler И это не каждая линия, всего 1 из 10 или около того. Это был список двухслойных вложенных кортежей с набором списков, ints и ndarrays. Я думаю, что конкретные строки, которые были отмечены как только что прочитанные, были первыми строками массива. – tacaswell

+0

AFAIU это не должно происходить со стороны python-mode. Хотелось бы увидеть примерный код. В любом случае решения интересны и полезны :) –

ответ

2

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

(defun set-region-read-only (begin end) 
    "See http://stackoverflow.com/questions/7410125" 
    (interactive "r") 
    (let ((modified (buffer-modified-p))) 
    (add-text-properties begin end '(read-only t)) 
    (set-buffer-modified-p modified))) 

(defun set-region-writeable (begin end) 
    "See http://stackoverflow.com/questions/7410125" 
    (interactive "r") 
    (let ((modified (buffer-modified-p)) 
     (inhibit-read-only t)) 
    (remove-text-properties begin end '(read-only t)) 
    (set-buffer-modified-p modified))) 
2

После загадочного комментарий под считыванием только в the documentation, чтобы удалить только для чтения из области просто необходимо:

(defun remove-region-read-only (begin end) 
    (interactive "r") 
    (let ((inhibit-read-only t)) 
    (remove-text-properties begin end '(read-only t))) 
) 
Смежные вопросы