emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r118351: Refactor the eww history saving to prepare


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] trunk r118351: Refactor the eww history saving to prepare for storing even more
Date: Mon, 10 Nov 2014 20:23:03 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 118351
revision-id: address@hidden
parent: address@hidden
committer: Lars Magne Ingebrigtsen <address@hidden>
branch nick: trunk
timestamp: Mon 2014-11-10 21:22:59 +0100
message:
  Refactor the eww history saving to prepare for storing even more
  
  * net/eww.el (eww-data): New plist to store all the data relevant
  to a single page, used throughout the file instead of the
  variables `eww-current-url', `eww-current-dom',
  `eww-current-source', and `eww-current-title'.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/net/eww.el                eww.el-20130610114603-80ap3gwnw4x4m5ix-1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2014-11-10 17:07:09 +0000
+++ b/lisp/ChangeLog    2014-11-10 20:22:59 +0000
@@ -1,3 +1,10 @@
+2014-11-10  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * net/eww.el (eww-data): New plist to store all the data relevant
+       to a single page, used throughout the file instead of the
+       variables `eww-current-url', `eww-current-dom',
+       `eww-current-source', and `eww-current-title'.
+
 2014-11-10  Sylvain Chouleur  <address@hidden>  (tiny change)
 
        Allow VTIMEZONE where daylight and standard time zones are equal.

=== modified file 'lisp/net/eww.el'
--- a/lisp/net/eww.el   2014-11-05 19:29:28 +0000
+++ b/lisp/net/eww.el   2014-11-10 20:22:59 +0000
@@ -132,11 +132,7 @@
   :version "24.4"
   :group 'eww)
 
-(defvar eww-current-url nil)
-(defvar eww-current-dom nil)
-(defvar eww-current-source nil)
-(defvar eww-current-title ""
-  "Title of current page.")
+(defvar eww-data nil)
 (defvar eww-history nil)
 (defvar eww-history-position 0)
 
@@ -209,7 +205,7 @@
         (data-buffer (current-buffer)))
     (unwind-protect
        (progn
-          (setq eww-current-title "")
+          (plist-put eww-data :title "")
          (cond
            ((and eww-use-external-browser-for-content-type
                  (string-match-p eww-use-external-browser-for-content-type
@@ -225,8 +221,8 @@
           (t
            (eww-display-raw)
            (eww-update-header-line-format)))
-         (setq eww-current-url url
-               eww-history-position 0))
+         (plist-put eww-data :title url)
+         (setq eww-history-position 0))
       (kill-buffer data-buffer))))
 
 (defun eww-parse-headers ()
@@ -277,8 +273,8 @@
        (source (and (null document)
                     (buffer-substring (point) (point-max)))))
     (eww-setup-buffer)
-    (setq eww-current-source source
-         eww-current-dom document)
+    (plist-put eww-data :source source)
+    (plist-put eww-data :dom document)
     (let ((inhibit-read-only t)
          (after-change-functions nil)
          (shr-target-id (url-target (url-generic-parse-url url)))
@@ -308,8 +304,8 @@
        (while (and (not (eobp))
                    (get-text-property (point) 'eww-form))
          (forward-line 1)))))
-    (setq eww-current-url url
-         eww-history-position 0)
+    (plist-put eww-data :url url)
+    (setq eww-history-position 0)
     (eww-update-header-line-format)))
 
 (defun eww-handle-link (cont)
@@ -354,19 +350,19 @@
             ;; FIXME?  Title can be blank.  Default to, eg, last component
             ;; of url?
             (format-spec eww-header-line-format
-                         `((?u . ,eww-current-url)
-                           (?t . ,eww-current-title)))))
+                         `((?u . ,(plist-get eww-data :url))
+                           (?t . ,(or (plist-get eww-data :title) ""))))))
     (setq header-line-format nil)))
 
 (defun eww-tag-title (cont)
-  (setq eww-current-title "")
-  (dolist (sub cont)
-    (when (eq (car sub) 'text)
-      (setq eww-current-title (concat eww-current-title (cdr sub)))))
-  (setq eww-current-title
-       (replace-regexp-in-string
-        "^ \\| $" ""
-        (replace-regexp-in-string "[ \t\r\n]+" " " eww-current-title)))
+  (let ((title ""))
+    (dolist (sub cont)
+      (when (eq (car sub) 'text)
+       (setq title (concat title (cdr sub)))))
+    (plist-put eww-data :title
+              (replace-regexp-in-string
+               "^ \\| $" ""
+               (replace-regexp-in-string "[ \t\r\n]+" " " title))))
   (eww-update-header-line-format))
 
 (defun eww-tag-body (cont)
@@ -421,7 +417,7 @@
   "View the HTML source code of the current page."
   (interactive)
   (let ((buf (get-buffer-create "*eww-source*"))
-        (source eww-current-source))
+        (source (plist-get eww-data :source)))
     (with-current-buffer buf
       (delete-region (point-min) (point-max))
       (insert (or source "no source"))
@@ -436,7 +432,7 @@
 contains the main textual portion, leaving out navigation menus and
 the like."
   (interactive)
-  (let* ((source eww-current-source)
+  (let* ((source (plist-get eww-data :source))
         (dom (shr-transform-dom
               (with-temp-buffer
                 (insert source)
@@ -449,7 +445,7 @@
     (eww-display-html nil nil
                      (shr-retransform-dom
                       (eww-highest-readability dom)))
-    (setq eww-current-source source)))
+    (plist-put eww-data :source source)))
 
 (defun eww-score-readability (node)
   (let ((score -1))
@@ -560,11 +556,7 @@
   "Mode for browsing the web.
 
 \\{eww-mode-map}"
-  ;; FIXME?  This seems a strange default.
-  (setq-local eww-current-url 'author)
-  (setq-local eww-current-dom nil)
-  (setq-local eww-current-source nil)
-  (setq-local eww-current-title "")
+  (setq-local eww-data (list :title ""))
   (setq-local browse-url-browser-function 'eww-browse-url)
   (setq-local after-change-functions 'eww-process-text-input)
   (setq-local eww-history nil)
@@ -578,7 +570,7 @@
 ;;;###autoload
 (defun eww-browse-url (url &optional _new-window)
   (when (and (equal major-mode 'eww-mode)
-            eww-current-url)
+            (plist-get eww-data :url))
     (eww-save-history))
   (eww url))
 
@@ -603,11 +595,8 @@
   (let ((inhibit-read-only t))
     (erase-buffer)
     (insert (plist-get elem :text))
-    (setq eww-current-source (plist-get elem :source)
-         eww-current-dom (plist-get elem :dom))
     (goto-char (plist-get elem :point))
-    (setq eww-current-url (plist-get elem :url)
-         eww-current-title (plist-get elem :title))
+    (setq eww-data elem)
     (eww-update-header-line-format)))
 
 (defun eww-next-url ()
@@ -616,7 +605,7 @@
 or <a> tag."
   (interactive)
   (if eww-next-url
-      (eww-browse-url (shr-expand-url eww-next-url eww-current-url))
+      (eww-browse-url (shr-expand-url eww-next-url (plist-get eww-data :url)))
     (user-error "No `next' on this page")))
 
 (defun eww-previous-url ()
@@ -625,7 +614,8 @@
 or <a> tag."
   (interactive)
   (if eww-previous-url
-      (eww-browse-url (shr-expand-url eww-previous-url eww-current-url))
+      (eww-browse-url (shr-expand-url eww-previous-url
+                                     (plist-get eww-data :url)))
     (user-error "No `previous' on this page")))
 
 (defun eww-up-url ()
@@ -634,7 +624,7 @@
 or <a> tag."
   (interactive)
   (if eww-up-url
-      (eww-browse-url (shr-expand-url eww-up-url eww-current-url))
+      (eww-browse-url (shr-expand-url eww-up-url (plist-get eww-data :url)))
     (user-error "No `up' on this page")))
 
 (defun eww-top-url ()
@@ -646,14 +636,14 @@
                      eww-contents-url
                      eww-home-url)))
     (if best-url
-       (eww-browse-url (shr-expand-url best-url eww-current-url))
+       (eww-browse-url (shr-expand-url best-url (plist-get eww-data :url)))
       (user-error "No `top' for this page"))))
 
 (defun eww-reload ()
   "Reload the current page."
   (interactive)
-  (url-retrieve eww-current-url 'eww-render
-               (list eww-current-url (point))))
+  (let ((url (plist-get eww-data :url)))
+    (url-retrieve url 'eww-render (list url (point)))))
 
 ;; Form support.
 
@@ -1096,13 +1086,13 @@
               '(("Content-Type" . "application/x-www-form-urlencoded")))
              (url-request-data (mm-url-encode-www-form-urlencoded values)))
          (eww-browse-url (shr-expand-url (cdr (assq :action form))
-                                         eww-current-url)))
+                                         (plist-get eww-data :url))))
       (eww-browse-url
        (concat
        (if (cdr (assq :action form))
            (shr-expand-url (cdr (assq :action form))
-                           eww-current-url)
-         eww-current-url)
+                           (plist-get eww-data :url))
+         (plist-get eww-data :url))
        "?"
        (mm-url-encode-www-form-urlencoded values))))))
 
@@ -1110,7 +1100,7 @@
   "Browse the current URL with an external browser.
 The browser to used is specified by the `shr-external-browser' variable."
   (interactive)
-  (funcall shr-external-browser (or url eww-current-url)))
+  (funcall shr-external-browser (or url (plist-get eww-data :url))))
 
 (defun eww-follow-link (&optional external mouse-event)
   "Browse the URL under point.
@@ -1127,9 +1117,9 @@
       (funcall shr-external-browser url))
      ;; This is a #target url in the same page as the current one.
      ((and (url-target (url-generic-parse-url url))
-          (eww-same-page-p url eww-current-url))
+          (eww-same-page-p url (plist-get eww-data :url)))
       (eww-save-history)
-      (eww-display-html 'utf-8 url eww-current-dom))
+      (eww-display-html 'utf-8 url (plist-get eww-data :url)))
      (t
       (eww-browse-url url)))))
 
@@ -1144,8 +1134,8 @@
 
 (defun eww-copy-page-url ()
   (interactive)
-  (message "%s" eww-current-url)
-  (kill-new eww-current-url))
+  (message "%s" (plist-get eww-data :url))
+  (kill-new (plist-get eww-data :url)))
 
 (defun eww-download ()
   "Download URL under point to `eww-download-directory'."
@@ -1189,19 +1179,20 @@
   (interactive)
   (eww-read-bookmarks)
   (dolist (bookmark eww-bookmarks)
-    (when (equal eww-current-url
-                (plist-get bookmark :url))
+    (when (equal (plist-get eww-data :url) (plist-get bookmark :url))
       (user-error "Already bookmarked")))
   (if (y-or-n-p "bookmark this page? ")
       (progn
-       (let ((title (replace-regexp-in-string "[\n\t\r]" " " 
eww-current-title)))
+       (let ((title (replace-regexp-in-string "[\n\t\r]" " "
+                                              (plist-get eww-data :url))))
          (setq title (replace-regexp-in-string "\\` +\\| +\\'" "" title))
-         (push (list :url eww-current-url
+         (push (list :url (plist-get eww-data :url)
                      :title title
                      :time (current-time-string))
                eww-bookmarks))
        (eww-write-bookmarks)
-       (message "Bookmarked %s (%s)" eww-current-url eww-current-title))))
+       (message "Bookmarked %s (%s)" (plist-get eww-data :url)
+                (plist-get eww-data :title)))))
 
 (defun eww-write-bookmarks ()
   (with-temp-file (expand-file-name "eww-bookmarks" eww-bookmarks-directory)
@@ -1359,13 +1350,10 @@
 ;;; History code
 
 (defun eww-save-history ()
-  (push (list :url eww-current-url
-              :title eww-current-title
-              :point (point)
-              :dom eww-current-dom
-              :source eww-current-source
-              :text (buffer-string))
-        eww-history))
+  (plist-put eww-data :point (point))
+  (plist-put eww-data :text (buffer-string))
+  (push eww-data eww-history)
+  (setq eww-data (list :title "")))
 
 (defun eww-list-histories ()
   "List the eww-histories."


reply via email to

[Prev in Thread] Current Thread [Next in Thread]