La documentation sur les propriétés de texte dit: < / p>
Étant donné que les propriétés de texte sont considérées comme faisant partie du contenu du tampon (ou de la chaîne), et peuvent affecter la manière dont une mémoire tampon examine l'écran, tout changement de mémoire tampon marque la mémoire tampon modifiée. P> blockQuote>
Tout d'abord, je ne comprends pas cette politique. Quelqu'un peut-il expliquer? Les accessoires de texte ne sont pas réellement enregistrés dans le fichier lorsque le tampon est enregistré. Alors, pourquoi marquer le tampon comme modifié? Pour moi, le tampon modifié indique "Certaines modifications n'ont pas encore été enregistrées". Mais comprendre la politique est juste pour mon propre amusement. p>
Plus important encore, existe-t-il une manière déjà établie qui, dans le code, je peux modifier les propriétés de texte de syntaxe sur le texte dans un tampon, tout en conservant le drapeau modifié par la mémoire tampon sur ce qu'il était, avant de modifier? Je pense à quelque chose comme
sauvegarde-excursion code>. Il serait assez facile d'écrire, mais cela semble être un cas commun et j'aimerais utiliser la fonction standard, si possible. P>Pour plus d'informations sur le scénario - j'ai un mode qui effectue un texte complet et définit les propriétés de la syntaxe dans le texte. Après avoir ouvert un tampon, la balayage fonctionne, mais il en résulte un tampon avec une mémoire tampon définie sur T. P>
comme toujours, merci. p>
3 Réponses :
C'est peut-être simplement parce qu'ils sont considérés comme une partie de la chaîne ... (comme les Docs disent). N'oubliez pas que Emacs est tampon em> -centrique, pas centré sur le fichier, donc le fait que le contenu est enregistré sur le disque sur le disque est quelque peu pertinent (lors de la pensée tampon-centré). aussi, les propriétés sont Undotable, et cela convient définitivement avec le tampon marqué comme modifié. P> Je ne sais pas qu'il existe une façon standard d'enregistrer l'état modifié par la mémoire tampon, mais je vois un dans le PABBREV.EL Bibliothèque: P> il ne protège pas contre Exits non local , alors peut-être que vous voudriez peut-être ajouter un appel à Détendez-vous-protéger CODE> , comme: P> (defmacro save-buffer-modified-p (&rest body)
"Eval BODY without affected buffer modification status"
`(let ((buffer-modified (buffer-modified-p))
(buffer-undo-list t))
(unwind-protect
,@body
(set-buffer-modified-p buffer-modified))))
Excellent merci. J'avais eu la pièce Set-tampon-modified-p code>, mais pas la liste de tampon Buffer-annulation code> chose.
Mais attendez! Ceci est toujours utile, mais regardez ma réponse.
Attendez! J'ai trouvé cela dans cc -fs.el
Nice, je n'ai pas vu ça. Un peu plus complet que celui à Pabbrev.
Les versions les plus récentes d'EMACS incluent la macro "avec modifications silencieuses" pour ceci:
Le journal des modifications EMACS pour la version 23.3 Mentions ayant introduit avec des modifications silencieuses code>, mais la version Windows Build version 23.3.1 n'a toujours pas une telle définition. Comme c'est étrange. gnu.org/software/emacs/news.23.3