Crea buffer di sola lettura in base al file


8

So di poter impostare qualcosa come -*- mode: read-only-mode -*-all'interno di un commento ed Emacs aprirà il file corrispondente in sola lettura. Il mio problema è che voglio ancora leggere i file che includono tale riga con la org-modemodalità principale; Emacs apre questi file in fundamental-mode.

Come posso dire a Emacs di aprire un file in sola lettura e di farlo comunque utilizzare la modalità principale corretta?

Risposte:


10

read-only-modeè una modalità minore e non dovrebbe essere impostata in questo modo.

È vero che l'utilizzo mode:con modalità secondarie funzionava. Non sono sicuro che se lo fa ancora , ma è decisamente deprecato (e se sta bloccando org-mode, forse non funziona più).

Utilizzare solo mode:per impostare la modalità principale e utilizzare eval:per abilitare le modalità secondarie:

Probabilmente puoi usare uno di questi:

-*- eval: (read-only-mode 1) -*-
-*- buffer-read-only: t -*-

L'uso mode:con le modalità secondarie funziona ancora. Lo uso da solo, in genere elencando prima una modalità principale e successivamente una minore (come outline-minor). Ma ora vedo che il manuale dice di non farlo, quindi immagino che dovrò cambiare questa pratica. Probabilmente con un gancio piuttosto che un eval.
Harald Hanche-Olsen,

6

Il modo normale sarebbe quello di rendere il file di sola lettura nel tuo sistema operativo. Con il file aperto, esegui M-x set-file-modes RET(o il suo alias chmod), premi down RETper inserire il nome del file corrente e inserisci a=r(per “tutto diventa letto” - vedi i permessi del file per i dettagli). Puoi anche farlo da Dired o da qualsiasi altro file manager.

In alternativa, se si desidera che il file sia di sola lettura in Emacs ma scrivibile in altre applicazioni, impostare la variabile file buffer-read-onlysu t.

-*- buffer-read-only: t -*-
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.