diff options
| author | Lars Ingebrigtsen | 2018-04-15 22:48:28 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2018-04-15 22:48:28 +0200 |
| commit | 003a89b6c8eb5e62b4ba2f2f3d4d3e3f6a8b7484 (patch) | |
| tree | 8d4f7418bd49befc17509d8d7856ff30b9263996 | |
| parent | f262b10b46c0f7daef9e433e95ce565191e6841d (diff) | |
| download | emacs-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.el | 27 |
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. |
| 400 | Use \\<url-cookie-mode-map>\\[url-cookie-delete] to remove cookies." | 402 | 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." | |||
| 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" |