From c40408fbe7d325d81ebe784f9565edb39ca23d9f Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Thu, 10 Aug 2006 20:06:19 +0000 Subject: [PATCH] * textmodes/dns-mode.el: Alias `zone-mode' to `dns-mode'. (dns-mode-soa-auto-increment-serial): New user option. (dns-mode-soa-maybe-increment-serial): New function. (dns-mode): Add the latter to `write-contents-functions'. * obsolete/zone-mode.el: Move to obsolete/ from net/. Delete autoload cookies. --- lisp/ChangeLog | 10 ++++++++++ lisp/{net => obsolete}/zone-mode.el | 2 -- lisp/textmodes/dns-mode.el | 29 +++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) rename lisp/{net => obsolete}/zone-mode.el (99%) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 213f5939f62..a994da42625 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2006-08-10 Romain Francoise + + * textmodes/dns-mode.el: Alias `zone-mode' to `dns-mode'. + (dns-mode-soa-auto-increment-serial): New user option. + (dns-mode-soa-maybe-increment-serial): New function. + (dns-mode): Add the latter to `write-contents-functions'. + + * obsolete/zone-mode.el: Move to obsolete/ from net/. + Delete autoload cookies. + 2006-08-10 John Wiegley * eshell/em-glob.el (eshell-glob-chars-list) diff --git a/lisp/net/zone-mode.el b/lisp/obsolete/zone-mode.el similarity index 99% rename from lisp/net/zone-mode.el rename to lisp/obsolete/zone-mode.el index 441ef143f9c..d8bfefc1e87 100644 --- a/lisp/net/zone-mode.el +++ b/lisp/obsolete/zone-mode.el @@ -64,7 +64,6 @@ (error "Serial numbers want to move backwards from %s to %s" old-serial new-serial) (replace-match (concat cur-date new-seq old-flag) t t)))))) -;;;###autoload (defun zone-mode-update-serial-hook () "Update the serial number in a zone if the file was modified." (interactive) @@ -82,7 +81,6 @@ (modify-syntax-entry ?\; "<" zone-mode-syntax-table) (modify-syntax-entry ?\n ">" zone-mode-syntax-table)) -;;;###autoload (define-derived-mode zone-mode fundamental-mode "zone" "A mode for editing DNS zone files. diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el index a323d4c4468..78be0f888a3 100644 --- a/lisp/textmodes/dns-mode.el +++ b/lisp/textmodes/dns-mode.el @@ -90,6 +90,18 @@ :type 'sexp :group 'dns-mode) +(defcustom dns-mode-soa-auto-increment-serial t + "Whether to increment the SOA serial number automatically. + +If this variable is t, the serial number is incremented upon each save of +the file. If it is `ask', Emacs asks for confirmation whether it should +increment the serial upon saving. If nil, serials must be incremented +manually with \\[dns-mode-soa-increment-serial]." + :type '(choice (const :tag "Always" t) + (const :tag "Ask" ask) + (const :tag "Never" nil)) + :group 'dns-mode) + ;; Syntax table. (defvar dns-mode-syntax-table @@ -135,8 +147,12 @@ Turning on DNS mode runs `dns-mode-hook'." (unless (featurep 'xemacs) (set (make-local-variable 'font-lock-defaults) '(dns-mode-font-lock-keywords nil nil ((?_ . "w"))))) + (add-hook 'write-contents-functions 'dns-mode-soa-maybe-increment-serial + nil t) (easy-menu-add dns-mode-menu dns-mode-map)) +;;;###autoload (defalias 'zone-mode 'dns-mode) + ;; Tools. ;;;###autoload @@ -192,6 +208,19 @@ Turning on DNS mode runs `dns-mode-hook'." (message "Replaced old serial %s with %s" serial new)) (error "Cannot locate serial number in SOA record")))))) +(defun dns-mode-soa-maybe-increment-serial () + "Increment SOA serial if needed. + +This function is run from `write-contents-functions'." + (when (and (buffer-modified-p) + dns-mode-soa-auto-increment-serial + (or (eq dns-mode-soa-auto-increment-serial t) + (y-or-n-p "Increment SOA serial? "))) + ;; We must return nil. If `dns-mode-soa-increment-serial' signals + ;; an error saving will fail but that probably means that the + ;; serial should be fixed to comply with the RFC anyway! -rfr + (progn (dns-mode-soa-increment-serial) nil))) + ;;;###autoload(add-to-list 'auto-mode-alist '("\\.soa\\'" . dns-mode)) (provide 'dns-mode) -- 2.39.5