2014-07-04 11 views
10

Also ich arbeitete in Emacs und die plötzlich, der Schleim-repl sbcl sagt, dass Text nur gelesen wird. Nun, das ist großartig, weil ich jetzt nichts mehr eingeben kann. Wie repariere ich?(Emacs) Text ist schreibgeschützt?

+6

Mit 'C-x C-q' kann der schreibgeschützte Modus aktiviert oder deaktiviert werden. Ich bin jedoch noch nicht zufrieden damit, es als Antwort zu veröffentlichen, weil Sie vielleicht mehr daran interessiert sind, zu wissen, was dieses Verhalten verursacht haben könnte, und ich bin mit der von Ihnen erwähnten Bibliothek nicht vertraut. – lawlist

+1

@lawlist Ich würde sagen, gehen Sie voran und schlagen Sie es als eine Antwort vor, wie ** schreibgeschützt ** im Puffer zu deaktivieren. Das OP kann immer mehr suchen, um herauszufinden, warum der Puffer plötzlich schreibgeschützt wurde. Das ist eine separate Frage (zumindest bis zu mehr Informationen, um es zu beantworten, wird hier bereitgestellt). – Drew

+0

Wenn es besagt, dass "Text" schreibgeschützt ist (statt "buffer"), dann ist wahrscheinlich eine 'schreibgeschützte' Texteigenschaft in Kraft? – phils

Antwort

0

Die Tastenkombination C-x C-q ist die Standardbindung für , die mit dieser Verknüpfung aktiviert oder deaktiviert werden kann. Beschreibt, die Tastenkombination Sequenz mit C-h k C-x C-q ergibt folgende Pufferausdruck:

C-x C-q runs the command read-only-mode, which is an interactive 
compiled Lisp function in `simple.el'. 

It is bound to C-x C-q. 

(read-only-mode &optional ARG) 

Change whether the current buffer is read-only. 
With prefix argument ARG, make the buffer read-only if ARG is 
positive, otherwise make it writable. If buffer is read-only 
and `view-read-only' is non-nil, enter view mode. 

Do not call this from a Lisp program unless you really intend to 
do the same thing as the C-x C-q command, including 
possibly enabling or disabling View mode. Also, note that this 
command works by setting the variable `buffer-read-only', which 
does not affect read-only regions caused by text properties. To 
ignore read-only status in a Lisp program (whether due to text 
properties or buffer state), bind `inhibit-read-only' temporarily 
to a non-nil value. 

also eine weitere Möglichkeit, diese Option zu nennen wäre zu nutzen: M-x read-only-mode RET

0

können Sie Nur-Lese-Modus ändern, indem Sie: M-x - >toggle-read-only ->RET (mit anderen Worten die Eingabetaste drücken)

3

Mögliche Ursache für eine solche Nachricht dies auch sein mag: Sie versuchen, CL-US|ER> (+ 1 2) etwas über die REPL Aufforderung, zum Beispiel zu drucken. Dieser Text im SLIME-Puffer ist schreibgeschützt. Beachten Sie den Speicherplatz nach >, es ist der Teil der Eingabeaufforderung.

9

„Puffer ist schreibgeschützt“ von C-x C-q geheilt werden kann, sondern als Drew & phils sagte
„Text schreibgeschützt ist“ sehr unterschiedlich ist - es bedeutet ein Teil des Puffers eine schreibgeschützte hat Eigentum.
Versuchen Sie, sich vom schreibgeschützten Teil weg zu bewegen, z. B. zum Ende des Puffers.

Emacs Lisp-Handbuch> elisp.info> Text> Texteigenschaften> Besondere Eigenschaften

Since changing properties counts as modifying the buffer, it is not 
possible to remove a `read-only' property unless you know the 
special trick: bind `inhibit-read-only' to a non-`nil' value and 
then remove the property. *Note Read Only Buffers::. 

somit den gesamten Puffer zu löschen, unabhängig:

M-: (let ((inhibit-read-only t)) (erase-buffer)) RET 

oder alle Eigenschaften zu entfernen:

(let ((inhibit-read-only t)) (set-text-properties (point-min) (point-max)())) 
+2

Dies ist die einzige Antwort darauf verstehe, dass es kein schreibgeschützter Puffer ist, also löst Cx Cq das Problem überhaupt nicht – JaviMerino

+0

Dies ist die echte Antwort –

+0

Für neue emacs-Benutzer führt devon oben folgenden Befehl aus: eval-expression Seine Standardschlüsseldefinition ist M -: (normalerweise Escape-Doppelpunkt) Nachdem Sie eval-expression ausgeführt haben, werden Sie aufgefordert, Ihren Lisp-Ausdruck einzugeben (oder einzufügen) in den Mini-Puffer und hit AAAfarmclub

0

Ich löste das, indem ich zuerst zwei Rahmen öffnete, einen mit einer .lisp Akte, die geöffnet wurde und den anderen w mit dem Schleim-Repl.

Aus dem Rahmen mit der .lisp-Datei habe ich C-c C-j auf eine Zeile Code (z. B. (+ 1 2)) angewendet.

Dies kopierte die Codezeile bis zum Slime-Repl und evaluierte es.

Dies löste auch irgendwie das Problem mit dem "Text ist nur Lese" -Problem.

1

Ich kann keinen Einblick in geben, warum Sie mit unerwünschten schreibgeschützten Texteigenschaften endete, aber gelegentlich begegne ich ähnlichen Situationen und finde daher den folgenden Befehl nützlich.

die betreffende Region auswählen (oder C-xh für den gesamten Puffer), und führt M-xset-region-writeable die schreibgeschützten Texteigenschaften zu entfernen.

(defun set-region-writeable (begin end) 
    "Removes the read-only text property from the marked region." 
    ;; 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))) 
0

Versuchen eingeben C-c M-o RET (es wird die Konsole löschen und eine neue Zeile hinzufügen), hatte ich ein Problem ähnlich wie bei Ihnen und für sie es fest.