Add an undo command to url-cookie-mode
* lisp/url/url-cookie.el (url-cookie-undo): New command and keystroke (bug#16650).
This commit is contained in:
@@ -395,6 +395,8 @@ instead delete all cookies that do not match REGEXP."
|
||||
|
||||
;;; Mode for listing and editing cookies.
|
||||
|
||||
(defvar url-cookie--deleted-cookies nil)
|
||||
|
||||
(defun url-cookie-list ()
|
||||
"Display a buffer listing the current URL cookies, if there are any.
|
||||
Use \\<url-cookie-mode-map>\\[url-cookie-delete] to remove cookies."
|
||||
@@ -466,12 +468,37 @@ Use \\<url-cookie-mode-map>\\[url-cookie-delete] to remove cookies."
|
||||
(let ((point (point)))
|
||||
(erase-buffer)
|
||||
(url-cookie--generate-buffer)
|
||||
(goto-char point))
|
||||
(push cookie url-cookie--deleted-cookies)))
|
||||
|
||||
(defun url-cookie-undo ()
|
||||
"Undo deletion of a cookie."
|
||||
(interactive)
|
||||
(unless url-cookie--deleted-cookies
|
||||
(error "No cookie deletions to undo"))
|
||||
(let* ((cookie (pop url-cookie--deleted-cookies))
|
||||
(variable (if (url-cookie-secure cookie)
|
||||
'url-cookie-secure-storage
|
||||
'url-cookie-storage))
|
||||
(list (symbol-value variable))
|
||||
(elem (assoc (url-cookie-domain cookie) list)))
|
||||
(if elem
|
||||
(nconc elem (list cookie))
|
||||
(setq elem (list (url-cookie-domain cookie) cookie))
|
||||
(set variable (cons elem list)))
|
||||
(setq url-cookies-changed-since-last-save t)
|
||||
(url-cookie-write-file)
|
||||
(let ((point (point))
|
||||
(inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
(url-cookie--generate-buffer)
|
||||
(goto-char point))))
|
||||
|
||||
(defvar url-cookie-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map [delete] 'url-cookie-delete)
|
||||
(define-key map [(control k)] 'url-cookie-delete)
|
||||
(define-key map [(control _)] 'url-cookie-undo)
|
||||
map))
|
||||
|
||||
(define-derived-mode url-cookie-mode special-mode "URL Cookie"
|
||||
|
||||
Reference in New Issue
Block a user