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?
Antwort
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
können Sie Nur-Lese-Modus ändern, indem Sie: M-x
- >toggle-read-only
->RET
(mit anderen Worten die Eingabetaste drücken)
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.
„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)()))
Dies ist die einzige Antwort darauf verstehe, dass es kein schreibgeschützter Puffer ist, also löst Cx Cq das Problem überhaupt nicht – JaviMerino
Dies ist die echte Antwort –
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
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.
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)))
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.
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
@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
Wenn es besagt, dass "Text" schreibgeschützt ist (statt "buffer"), dann ist wahrscheinlich eine 'schreibgeschützte' Texteigenschaft in Kraft? – phils