The Lambda Lab
/
projects
/
elpher.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7f807b9
)
Added point caching element to node.
author
Tim Vaughan
<tgvaughan@gmail.com>
Sun, 21 Apr 2019 08:03:43 +0000
(10:03 +0200)
committer
Tim Vaughan
<tgvaughan@gmail.com>
Sun, 21 Apr 2019 08:03:43 +0000
(10:03 +0200)
elopher.el
patch
|
blob
|
history
diff --git
a/elopher.el
b/elopher.el
index
812ebb4
..
79b2885
100644
(file)
--- a/
elopher.el
+++ b/
elopher.el
@@
-78,23
+78,39
@@
;; Node
;; Node
-(defun elopher-make-node (parent address getter &optional content)
- (list parent address getter content))
+(defun elopher-make-node (parent address getter &optional content
pos
)
+ (list parent address getter content
pos
))
(defun elopher-node-parent (node)
(defun elopher-node-parent (node)
- (
car node
))
+ (
elt node 0
))
(defun elopher-node-address (node)
(defun elopher-node-address (node)
- (
cadr node
))
+ (
elt node 1
))
(defun elopher-node-getter (node)
(defun elopher-node-getter (node)
- (
caddr node
))
+ (
elt node 2
))
(defun elopher-node-content (node)
(defun elopher-node-content (node)
- (cadddr node))
+ (elt node 3))
+
+(defun elopher-node-pos (node)
+ (elt node 4))
(defun elopher-set-node-content (node content)
(defun elopher-set-node-content (node content)
- (setcar (cdddr node) content))
+ (setcar (nthcdr 3 node) content))
+
+(defun elopher-set-node-pos (node pos)
+ (setcar (nthcdr 4 node) pos))
+
+(defun elopher-save-pos ()
+ (when elopher-current-node
+ (elopher-set-node-pos elopher-current-node (point))))
+
+(defun elopher-restore-pos ()
+ (let ((pos (elopher-node-pos elopher-current-node)))
+ (if pos
+ (goto-char (elopher-node-pos elopher-current-node))
+ (goto-char (point-min)))))
;; Node graph traversal
;; Node graph traversal
@@
-102,6
+118,7
@@
(defvar elopher-current-node)
(defun elopher-visit-node (node)
(defvar elopher-current-node)
(defun elopher-visit-node (node)
+ (elopher-save-pos)
(elopher-prepare-buffer)
(setq elopher-current-node node)
(funcall (elopher-node-getter node)))
(elopher-prepare-buffer)
(setq elopher-current-node node)
(funcall (elopher-node-getter node)))
@@
-206,22
+223,20
@@
(address (elopher-node-address elopher-current-node)))
(if content
(let ((inhibit-read-only t))
(address (elopher-node-address elopher-current-node)))
(if content
(let ((inhibit-read-only t))
- (
save-excursion
-
(insert content))
)
+ (
insert content))
+
(elopher-restore-pos
)
(if address
(elopher-get-selector address
(lambda (proc event)
(let ((inhibit-read-only t))
(if address
(elopher-get-selector address
(lambda (proc event)
(let ((inhibit-read-only t))
- (erase-buffer)
- (save-excursion
- (elopher-insert-index elopher-selector-string)))
+ (elopher-insert-index elopher-selector-string))
+ (elopher-restore-pos)
(elopher-set-node-content elopher-current-node
(buffer-string))))
(progn
(let ((inhibit-read-only t))
(elopher-set-node-content elopher-current-node
(buffer-string))))
(progn
(let ((inhibit-read-only t))
- (erase-buffer)
- (save-excursion
- (elopher-insert-index elopher-start-page)))
+ (elopher-insert-index elopher-start-page))
+ (elopher-restore-pos)
(elopher-set-node-content elopher-current-node
(buffer-string)))))))
(elopher-set-node-content elopher-current-node
(buffer-string)))))))
@@
-293,6
+308,7
@@
(defun elopher ()
"Start elopher with default landing page."
(interactive)
(defun elopher ()
"Start elopher with default landing page."
(interactive)
+ (setq elopher-current-node nil)
(elopher-visit-node elopher-start-node))
(elopher-visit-node elopher-start-node))