aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2018-04-15 22:48:28 +0200
committerLars Ingebrigtsen2018-04-15 22:48:28 +0200
commit003a89b6c8eb5e62b4ba2f2f3d4d3e3f6a8b7484 (patch)
tree8d4f7418bd49befc17509d8d7856ff30b9263996
parentf262b10b46c0f7daef9e433e95ce565191e6841d (diff)
downloademacs-003a89b6c8eb5e62b4ba2f2f3d4d3e3f6a8b7484.tar.gz
emacs-003a89b6c8eb5e62b4ba2f2f3d4d3e3f6a8b7484.zip
Add an undo command to url-cookie-mode
* lisp/url/url-cookie.el (url-cookie-undo): New command and keystroke (bug#16650).
-rw-r--r--lisp/url/url-cookie.el27
1 files changed, 27 insertions, 0 deletions
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index 535a98c9c7d..3adca26d76f 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -395,6 +395,8 @@ instead delete all cookies that do not match REGEXP."
395 395
396;;; Mode for listing and editing cookies. 396;;; Mode for listing and editing cookies.
397 397
398(defvar url-cookie--deleted-cookies nil)
399
398(defun url-cookie-list () 400(defun url-cookie-list ()
399 "Display a buffer listing the current URL cookies, if there are any. 401 "Display a buffer listing the current URL cookies, if there are any.
400Use \\<url-cookie-mode-map>\\[url-cookie-delete] to remove cookies." 402Use \\<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."
466 (let ((point (point))) 468 (let ((point (point)))
467 (erase-buffer) 469 (erase-buffer)
468 (url-cookie--generate-buffer) 470 (url-cookie--generate-buffer)
471 (goto-char point))
472 (push cookie url-cookie--deleted-cookies)))
473
474(defun url-cookie-undo ()
475 "Undo deletion of a cookie."
476 (interactive)
477 (unless url-cookie--deleted-cookies
478 (error "No cookie deletions to undo"))
479 (let* ((cookie (pop url-cookie--deleted-cookies))
480 (variable (if (url-cookie-secure cookie)
481 'url-cookie-secure-storage
482 'url-cookie-storage))
483 (list (symbol-value variable))
484 (elem (assoc (url-cookie-domain cookie) list)))
485 (if elem
486 (nconc elem (list cookie))
487 (setq elem (list (url-cookie-domain cookie) cookie))
488 (set variable (cons elem list)))
489 (setq url-cookies-changed-since-last-save t)
490 (url-cookie-write-file)
491 (let ((point (point))
492 (inhibit-read-only t))
493 (erase-buffer)
494 (url-cookie--generate-buffer)
469 (goto-char point)))) 495 (goto-char point))))
470 496
471(defvar url-cookie-mode-map 497(defvar url-cookie-mode-map
472 (let ((map (make-sparse-keymap))) 498 (let ((map (make-sparse-keymap)))
473 (define-key map [delete] 'url-cookie-delete) 499 (define-key map [delete] 'url-cookie-delete)
474 (define-key map [(control k)] 'url-cookie-delete) 500 (define-key map [(control k)] 'url-cookie-delete)
501 (define-key map [(control _)] 'url-cookie-undo)
475 map)) 502 map))
476 503
477(define-derived-mode url-cookie-mode special-mode "URL Cookie" 504(define-derived-mode url-cookie-mode special-mode "URL Cookie"