[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r113189: Add bookmark support to eww
From: |
Lars Ingebrigtsen |
Subject: |
[Emacs-diffs] trunk r113189: Add bookmark support to eww |
Date: |
Wed, 26 Jun 2013 16:54:54 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 113189
revision-id: address@hidden
parent: address@hidden
committer: Lars Magne Ingebrigtsen <address@hidden>
branch nick: trunk
timestamp: Wed 2013-06-26 18:54:48 +0200
message:
Add bookmark support to eww
* net/eww.el (eww-mode): Undo isn't necessary in eww buffers,
probably.
(eww-mode-map): Add a menu bar.
(eww-add-bookmark): New command.
(eww-bookmark-mode): New mode and commands.
modified:
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/net/eww.el eww.el-20130610114603-80ap3gwnw4x4m5ix-1
lisp/url/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-3116
lisp/url/url-cookie.el
urlcookie.el-20091113204419-o5vbwnq5f7feedwu-2980
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-06-26 13:07:24 +0000
+++ b/lisp/ChangeLog 2013-06-26 16:54:48 +0000
@@ -3,6 +3,8 @@
* net/eww.el (eww-mode): Undo isn't necessary in eww buffers,
probably.
(eww-mode-map): Add a menu bar.
+ (eww-add-bookmark): New command.
+ (eww-bookmark-mode): New mode and commands.
2013-06-26 Glenn Morris <address@hidden>
=== modified file 'lisp/net/eww.el'
--- a/lisp/net/eww.el 2013-06-26 13:07:24 +0000
+++ b/lisp/net/eww.el 2013-06-26 16:54:48 +0000
@@ -337,6 +337,11 @@
(define-key map "w" 'eww-copy-page-url)
(define-key map "C" 'url-cookie-list)
+ (define-key map "b" 'eww-add-bookmark)
+ (define-key map "B" 'eww-list-bookmarks)
+ (define-key map [(meta n)] 'eww-next-bookmark)
+ (define-key map [(meta p)] 'eww-previous-bookmark)
+
(easy-menu-define nil map ""
'("eww"
["Quit" eww-quit t]
@@ -348,6 +353,8 @@
["Browse with external browser" eww-browse-with-external-browser t]
["Download" eww-download t]
["Copy page URL" eww-copy-page-url t]
+ ["Add bookmark" eww-add-bookmark t]
+ ["List bookmarks" eww-copy-page-url t]
["List cookies" url-cookie-list t]))
map))
@@ -366,6 +373,7 @@
(defun eww-save-history ()
(push (list :url eww-current-url
+ :title eww-current-title
:point (point)
:text (buffer-string))
eww-history))
@@ -404,7 +412,8 @@
(erase-buffer)
(insert (plist-get elem :text))
(goto-char (plist-get elem :point))
- (setq eww-current-url (plist-get elem :url))))
+ (setq eww-current-url (plist-get elem :url)
+ eww-current-title (plist-get elem :title))))
(defun eww-next-url ()
"Go to the page marked `next'.
@@ -929,6 +938,169 @@
(setq count (1+ count)))
(expand-file-name file directory)))
+;;; Bookmarks code
+
+(defvar eww-bookmarks nil)
+
+(defun eww-add-bookmark ()
+ "Add the current page to the bookmarks."
+ (interactive)
+ (eww-read-bookmarks)
+ (dolist (bookmark eww-bookmarks)
+ (when (equal eww-current-url
+ (plist-get bookmark :url))
+ (error "Already bookmarked")))
+ (push (list :url eww-current-url
+ :title eww-current-title
+ :time (current-time-string))
+ eww-bookmarks)
+ (eww-write-bookmarks)
+ (message "Bookmarked %s (%s)" eww-current-url eww-current-title))
+
+(defun eww-write-bookmarks ()
+ (with-temp-file (expand-file-name "eww-bookmarks" user-emacs-directory)
+ (insert ";; Auto-generated file; don't edit\n")
+ (pp eww-bookmarks (current-buffer))))
+
+(defun eww-read-bookmarks ()
+ (with-temp-buffer
+ (insert-file-contents
+ (expand-file-name "eww-bookmarks" user-emacs-directory))
+ (setq eww-bookmarks (read (current-buffer)))))
+
+(defun eww-list-bookmarks ()
+ "Display the bookmarks."
+ (interactive)
+ (eww-bookmark-prepare)
+ (pop-to-buffer "*eww bookmarks*"))
+
+(defun eww-bookmark-prepare ()
+ (eww-read-bookmarks)
+ (when (null eww-bookmarks)
+ (error "No bookmarks are defined"))
+ (set-buffer (get-buffer-create "*eww bookmarks*"))
+ (eww-bookmark-mode)
+ (let ((format "%-40s %s")
+ (inhibit-read-only t)
+ start url)
+ (erase-buffer)
+ (setq header-line-format (concat " " (format format "URL" "Title")))
+ (dolist (bookmark eww-bookmarks)
+ (setq start (point))
+ (setq url (plist-get bookmark :url))
+ (when (> (length url) 40)
+ (setq url (substring url 0 40)))
+ (insert (format format url
+ (plist-get bookmark :title))
+ "\n")
+ (put-text-property start (1+ start) 'eww-bookmark bookmark))
+ (goto-char (point-min))))
+
+(defvar eww-bookmark-kill-ring nil)
+
+(defun eww-bookmark-kill ()
+ "Kill the current bookmark."
+ (interactive)
+ (let* ((start (line-beginning-position))
+ (bookmark (get-text-property start 'eww-bookmark))
+ (inhibit-read-only t))
+ (unless bookmark
+ (error "No bookmark on the current line"))
+ (forward-line 1)
+ (push (buffer-substring start (point)) eww-bookmark-kill-ring)
+ (delete-region start (point))
+ (setq eww-bookmarks (delq bookmark eww-bookmarks))
+ (eww-write-bookmarks)))
+
+(defun eww-bookmark-yank ()
+ "Yank a previously killed bookmark to the current line."
+ (interactive)
+ (unless eww-bookmark-kill-ring
+ (error "No previously killed bookmark"))
+ (beginning-of-line)
+ (let ((inhibit-read-only t)
+ (start (point))
+ bookmark)
+ (insert (pop eww-bookmark-kill-ring))
+ (setq bookmark (get-text-property start 'eww-bookmark))
+ (if (= start (point-min))
+ (push bookmark eww-bookmarks)
+ (let ((line (count-lines start (point))))
+ (setcdr (nthcdr (1- line) eww-bookmarks)
+ (cons bookmark (nthcdr line eww-bookmarks)))))
+ (eww-write-bookmarks)))
+
+(defun eww-bookmark-quit ()
+ "Kill the current buffer."
+ (interactive)
+ (kill-buffer (current-buffer)))
+
+(defun eww-bookmark-browse ()
+ "Browse the bookmark under point in eww."
+ (interactive)
+ (let ((bookmark (get-text-property (line-beginning-position) 'eww-bookmark)))
+ (unless bookmark
+ (error "No bookmark on the current line"))
+ (delete-window)
+ (eww (plist-get bookmark :url))))
+
+(defun eww-next-bookmark ()
+ "Go to the next bookmark in the list."
+ (interactive)
+ (let ((first nil)
+ bookmark)
+ (unless (get-buffer "*eww bookmarks*")
+ (setq first t)
+ (eww-bookmark-prepare))
+ (with-current-buffer (get-buffer "*eww bookmarks*")
+ (when (and (not first)
+ (not (eobp)))
+ (forward-line 1))
+ (setq bookmark (get-text-property (line-beginning-position)
+ 'eww-bookmark))
+ (unless bookmark
+ (error "No next bookmark")))
+ (eww-browse-url (plist-get bookmark :url))))
+
+(defun eww-previous-bookmark ()
+ "Go to the previous bookmark in the list."
+ (interactive)
+ (let ((first nil)
+ bookmark)
+ (unless (get-buffer "*eww bookmarks*")
+ (setq first t)
+ (eww-bookmark-prepare))
+ (with-current-buffer (get-buffer "*eww bookmarks*")
+ (if first
+ (goto-char (point-max))
+ (beginning-of-line))
+ ;; On the final line.
+ (when (eolp)
+ (forward-line -1))
+ (if (bobp)
+ (error "No previous bookmark")
+ (forward-line -1))
+ (setq bookmark (get-text-property (line-beginning-position)
+ 'eww-bookmark)))
+ (eww-browse-url (plist-get bookmark :url))))
+
+(defvar eww-bookmark-mode-map
+ (let ((map (make-sparse-keymap)))
+ (suppress-keymap map)
+ (define-key map "q" 'eww-bookmark-quit)
+ (define-key map [(control k)] 'eww-bookmark-kill)
+ (define-key map [(control y)] 'eww-bookmark-yank)
+ (define-key map "\r" 'eww-bookmark-browse)
+ map))
+
+(define-derived-mode eww-bookmark-mode nil "eww bookmarks"
+ "Mode for listing bookmarks.
+
+\\{eww-bookmark-mode-map}"
+ (buffer-disable-undo)
+ (setq buffer-read-only t
+ truncate-lines t))
+
(provide 'eww)
;;; eww.el ends here
=== modified file 'lisp/url/ChangeLog'
--- a/lisp/url/ChangeLog 2013-06-26 12:54:33 +0000
+++ b/lisp/url/ChangeLog 2013-06-26 16:54:48 +0000
@@ -2,6 +2,7 @@
* url-cookie.el: Implement a command and mode for displaying and
editing cookies.
+ (url-cookie-mode): Fix mode name.
2013-06-21 Glenn Morris <address@hidden>
=== modified file 'lisp/url/url-cookie.el'
--- a/lisp/url/url-cookie.el 2013-06-26 12:54:33 +0000
+++ b/lisp/url/url-cookie.el 2013-06-26 16:54:48 +0000
@@ -427,9 +427,10 @@
(suppress-keymap map)
(define-key map "q" 'url-cookie-quit)
(define-key map [delete] 'url-cookie-delete)
+ (define-key map [(control k)] 'url-cookie-delete)
map))
-(define-derived-mode url-cookie-mode nil "eww"
+(define-derived-mode url-cookie-mode nil "URL Cookie"
"Mode for listing cookies.
\\{url-cookie-mode-map}"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r113189: Add bookmark support to eww,
Lars Ingebrigtsen <=