Commit 96e76618 authored by David Byers's avatar David Byers
Browse files

Various fixes to prioritize and review functions. Some new buttons and fixes...

Various fixes to prioritize and review functions. Some new buttons and fixes to auxiliary functions.
parent 51606e4b
Mon Apr 29 09:24:16 1996 David Byers <davby@sen2.ida.liu.se>
* review-new.el (lyskom-get-texts-by): Fixade s inte information om
hemliga texter returneras.
Mon Apr 29 02:26:14 1996 David Kgedal <davidk@lysator.liu.se>
* lyskom-rest.el (lyskom-format-aux-help): Hantera mte 0 fr sig.
......@@ -17,6 +22,11 @@ Sat Apr 27 02:48:51 1996 David K
* startup.el (kom-start-anew): Tm completion-cachen.
Thu Apr 25 14:04:26 1996 David Byers <davby@sen2.ida.liu.se>
* prioritize.el (kom-prioritize-set-priority): Stt mark nr man
trycker "p".
Fri Apr 26 00:01:14 1996 David Kgedal <davidk@lysator.liu.se>
* view-text.el (lyskom-print-delayed-header-comm): Nu borde den
......@@ -56,6 +66,40 @@ Thu Apr 25 01:42:29 1996 David K
* view-text.el (lyskom-print-header-comm): Dito.
Wed Apr 24 17:49:29 1996 David Byers <davby@sen2.ida.liu.se>
* review.el (lyskom-get-texts-by-and-to): Fixade bug som gjorde att
man kunde missa de allra frsta texterna i ett mte om man tersg
senaste.
Tue Apr 23 00:47:17 1996 David Kgedal <davidk@lysator.liu.se>
* lyskom-rest.el (lyskom-start-of-command): Anta att
lyskom-first-time-around r definierad.
Tue Apr 23 11:26:57 1996 David Byers <davby@sen2.ida.liu.se>
* startup.el (kom-start-anew): Rensa completing-read-cachen innan
frsk att konvertera det inmatade anvndarnamnet.
* english-strings.el (lyskom-button-actions): Lade till hints fr
sista inlggsnumret som skrivs ut.
* swedish-strings.el (lyskom-button-actions): Lade till hints fr
sista inlggsnumret som skrivs ut.
* vars.el.in (kom-inhibit-typeahead): Lade till kom-inhibit-typeahead.
* lyskom-rest.el (lyskom-end-of-command): terimplementerade
bortkastning av typeahead.
* view-text.el (lyskom-print-text): Lade till sttning av
lyskom-current-function och lyskom-current-function-phase.
* lyskom-buttons.el (lyskom-get-button-hint): Ny funktion.
(lyskom-generate-button): Anvnd lyskom-get-button-hint fr att hitta
hinten.
Wed Apr 24 03:44:31 1996 David Kgedal <davidk@lysator.liu.se>
* view-text.el (lyskom-print-header-comm): Delade upp den s att
......@@ -86,7 +130,7 @@ Mon Apr 22 05:57:27 1996 David K
bara den frdiga strngen.
(lyskom-format-insert-before-prompt,lyskom-format-insert),
(lyskom-format): Justerade drefter.
Wed Apr 17 17:32:23 1996 David Kgedal <davidk@lysator.liu.se>
* parse.el (lyskom-parse-error): Gr s att en bug inte blir s
......@@ -102,10 +146,27 @@ Sun Apr 14 23:44:45 1996 David K
* view-text.el (lyskom-follow-comments): Felaktiga parametrar i
ett anrop till lyskom-view-text.
Wed Apr 10 10:16:20 1996 David Byers <davby@sen2.ida.liu.se>
* prioritize.el (kom-prioritize): En numera avrttad bug gjorde att
medlemskapslistan blev reverserad.
Mon Apr 8 18:42:12 1996 David Byers <davby@sen2.ida.liu.se>
* prioritize.el: Skrev om frn scratch.
Sat Apr 6 18:13:25 1996 David Byers <davby@sen2.ida.liu.se>
* lyskom-rest.el (lyskom-insert): Fixade lyskom-insert s den ger
rtt beteende om kom-continuous-scrolling inte r satt.
Thu Apr 4 10:36:06 1996 David Byers <davby@sen2.ida.liu.se>
* lyskom-rest.el (lyskom-insert): Gr lyskom-scroll i lyskom-insert
bara om kom-continuous-scrolling r satt.
bara om kom-continuous-scrolling r satt. (lyskom-start-of-command):
Tilldela nil till lyskom-is-waiting varje gng ett nytt kommando
startas. (lyskom-print-prompt): Tog bort tilldelningar av
lyskom-is-waiting.
* vars.el.in (kom-continuous-scrolling): Ny variabel.
(lyskom-elisp-variables): Lade till kom-continuous-scrolling.
......
......@@ -1378,6 +1378,14 @@ If MARK-NO == 0, review all marked texts."
;;; ================================================================
;;; (Se) Tiden - display time and date.
(defconst lyskom-times
'(((nil 12 24 nil nil nil) . xmaseve)
((nil 12 25 nil nil nil) . xmasday)
((nil 1 1 nil nil nil) . newyearday)
((nil 12 31 11 nil nil) . newyearevelate)
((nil 12 31 nil nil nil) . newyeareve)))
(def-kom-command kom-display-time ()
"Ask server about time and date."
......@@ -1390,14 +1398,42 @@ If MARK-NO == 0, review all marked texts."
(time->hour time)
(time->min time)
(time->sec time)
; Kult:
;; Kult:
(if (and (= (time->hour time)
(+ (/ (time->sec time) 10)
(* (% (time->sec time) 10) 10)))
(= (/ (time->min time) 10)
(% (time->min time) 10)))
(lyskom-get-string 'palindrome)
""))))
""))
;; Mera kult
(mapcar (function
(lambda (el)
(let ((x (car el))
(y (cdr el)))
(if (and (or (null (elt x 0))
(= (+ (time->year time) 1900) (elt x 0)))
(or (null (elt x 1))
(= (1+ (time->mon time)) (elt x 1)))
(or (null (elt x 2))
(= (time->mday time) (elt x 2)))
(or (null (elt x 3))
(= (time->hour time) (elt x 3)))
(or (null (elt x 4))
(= (time->min time) (elt x 4)))
(or (null (elt x 5))
(= (time->sec time) (elt x 5))))
(progn
(lyskom-insert " ")
(lyskom-format-insert (cdr el)
(+ (time->year time) 1900)
(1+ (time->mon time))
(time->mday time)
(time->hour time)
(time->min time)
(time->sec time)))))))
lyskom-times))
(lyskom-insert "\n"))
;;; ================================================================
......
......@@ -764,7 +764,7 @@ Format is 23:29 if the text is written today. Otherwise 04-01."
;; We split the rest between author and subject
(namelen (/ (- (lyskom-window-width) 22) 3))
(subjlen (/ (* (- (lyskom-window-width) 22) 2) 3))
(author-name (lyskom-format "%#1:M" (text-stat->author text-stat))))
(author-name (lyskom-format "%#1:P" (text-stat->author text-stat))))
(lyskom-format-insert 'summary-line
text-no
time
......
......@@ -38,7 +38,8 @@
(setq lyskom-clientversion-long
(concat lyskom-clientversion-long
"$Id$"))
"$Id$"))
;;; ================================================================
......@@ -329,8 +330,14 @@ and you have finished reading. Please come back later.
(no-marked-texts . "You have not marked any articles.\n")
(no-marked-texts-mark .
"You have not marked any articles with mark %#1d.\n")
(time-is . "The time is %4#1d %02#3d/%02#2d %02#4d:%02#5d:%02#6d %#7s(according to the server).\n")
;; (time-is . "The time is %4#1d-%02#2d-%02#3d %02#4d:%02#5d:%02#6d %#7s(according to the server).\n")
(time-is . "The time is %4#1d %02#3d/%02#2d %02#4d:%02#5d:%02#6d %#7s(according to the server).")
(xmaseve . "Christmas eve!")
(xmasday . "Christmas day.\nDid you get any nice gifts this year?")
(newyearday . "\nMay %#1d be a prosperous and good year for you!")
(newyeareve . "Happy New Year!")
(newyearevelate . "Less than an hour to go...")
(total-users . " A total of %#1d users.\n")
(who-to-add-q . "Add who/what as a recipient: ")
(who-to-add-copy-q . "Add which conference/user as recipient of a carbon copy: ")
......@@ -523,7 +530,6 @@ Mark the envelope with \"LysKOM bug report\"\n\n")
(set-session-priority . "Set reading level:")
; From review.el:
(review-how-many . "Review how many articles: ")
(latest-n . "last %#1d")
(first-n . "first %#1d")
(info-by-whom . "%#1s by whom: ")
......@@ -533,7 +539,7 @@ Mark the envelope with \"LysKOM bug report\"\n\n")
(no-get-conf . "You are not allowed to access that conferene.\n")
(no-get-pers . "You are not allowed to access that user.\n")
(no-review-info . "You are not allowed to review %#1s\n")
(review-info . "Review %#1s")
(review-info . "Review %#1s\n")
(you-review . "You are now reviewing %#1s.\n")
(read-text-first . "You must read a article first.\n")
(cannot-read-last-text . "You cannot review the last read article.\n")
......@@ -654,6 +660,16 @@ Group message to %#3M from %#2P (%#4s):
(person-or-conf-no-regexp . "\\`[ \t]*[mpMP]\\w*[ \t]+\\([0-9]+\\)\\'")
; From prioritize.el:
(cant-move-nothing-nowhere . "Can't move nothing anywhere.")
(priority-prompt . "New priority: ")
(beginning-of-list . "Beginning of list")
(end-of-list . "End of list")
(reprioritize-from . "Reprioritize from: ")
(reprioritize-to . "Reprioritize to: ")
(no-selection . "No selection")
(selection . "%d selected")
(cannot-get-membership . "Cannot retrieve your membership list.")
(cannot-get-pers-stat . "Cannot retrieve your personal status.")
(your-membship . "Your memberships:
......@@ -897,7 +913,6 @@ Text:
(kom-review-next "Review next")
(kom-find-root "Review original (article)")
(kom-review-by-to "Review last")
(kom-review-first "Review first")
(kom-view-commented-text "Review (the) commented (article)")
(kom-view-previous-commented-text
"Review (the) previouls commented (article)")
......@@ -1102,6 +1117,7 @@ Cf. paragraph-start.")
(define-key lyskom-mode-map "r8" 'kom-initial-digit-view)
(define-key lyskom-mode-map "r9" 'kom-initial-digit-view)
(define-key lyskom-mode-map "rc" 'kom-view-commented-text)
(define-key lyskom-mode-map "rC" 'kom-view-previous-commented-text)
(define-key lyskom-mode-map "ra?" 'lyskom-help)
(define-key lyskom-mode-map "rac" 'kom-review-comments)
(define-key lyskom-mode-map "rar" 'kom-review-tree)
......@@ -1110,7 +1126,6 @@ Cf. paragraph-start.")
(define-key lyskom-mode-map "ru" 'kom-review-noconversion)
(define-key lyskom-mode-map "ro" 'kom-find-root)
(define-key lyskom-mode-map "rl" 'kom-review-by-to)
(define-key lyskom-mode-map "rf" 'kom-review-first)
(define-key lyskom-mode-map "rg" 'kom-review-last-normally-read)
(define-key lyskom-mode-map "B" 'kom-review-backward)
(define-key lyskom-mode-map "rs" 'kom-review-stack)
......@@ -1177,21 +1192,61 @@ Cf. paragraph-start.")
"Keymap used in lyskom-prioritize-mode.")
(if lyskom-prioritize-mode-map
;;;(if lyskom-prioritize-mode-map
;;; nil
;;; (setq lyskom-prioritize-mode-map (make-keymap))
;;; (suppress-keymap lyskom-prioritize-mode-map)
;;; (define-key lyskom-prioritize-mode-map "\C-?" 'previous-line)
;;; (define-key lyskom-prioritize-mode-map " " 'next-line)
;;; (define-key lyskom-prioritize-mode-map "\C-k" 'kom-prioritize-kill)
;;; (define-key lyskom-prioritize-mode-map "\C-y" 'kom-prioritize-yank)
;;; (define-key lyskom-prioritize-mode-map "p" 'kom-prioritize-set-priority)
;;; (define-key lyskom-prioritize-mode-map "\C-c\C-c" 'kom-prioritize-quit)
;;; (define-key lyskom-prioritize-mode-map "q" 'kom-prioritize-quit)
;;; (define-key lyskom-prioritize-mode-map "Q" 'kom-prioritize-quit)
;;; (define-key lyskom-prioritize-mode-map "u" 'kom-prioritize-move-up)
;;; (define-key lyskom-prioritize-mode-map "d" 'kom-prioritize-move-down)
;;;)
(if lyskom-prioritize-mode-map
nil
(setq lyskom-prioritize-mode-map (make-keymap))
(suppress-keymap lyskom-prioritize-mode-map)
(define-key lyskom-prioritize-mode-map "\C-?" 'previous-line)
(define-key lyskom-prioritize-mode-map " " 'next-line)
(define-key lyskom-prioritize-mode-map "\C-k" 'kom-prioritize-kill)
(define-key lyskom-prioritize-mode-map "\C-y" 'kom-prioritize-yank)
(define-key lyskom-prioritize-mode-map "p" 'kom-prioritize-set-priority)
(define-key lyskom-prioritize-mode-map "\C-c\C-c" 'kom-prioritize-quit)
(define-key lyskom-prioritize-mode-map "q" 'kom-prioritize-quit)
(define-key lyskom-prioritize-mode-map "Q" 'kom-prioritize-quit)
(define-key lyskom-prioritize-mode-map "u" 'kom-prioritize-move-up)
(define-key lyskom-prioritize-mode-map "d" 'kom-prioritize-move-down)
)
(define-key lyskom-prioritize-mode-map [mouse-2] 'kom-mouse-2)
(define-key lyskom-prioritize-mode-map [down-mouse-3] 'kom-mouse-3)
(define-key lyskom-prioritize-mode-map [mouse-3] 'kom-mouse-null)
(define-key lyskom-prioritize-mode-map "*" 'kom-key-mouse-2)
(define-key lyskom-prioritize-mode-map "\C-m" 'kom-prioritize-select)
(define-key lyskom-prioritize-mode-map "\C-j" 'kom-prioritize-select)
(define-key lyskom-prioritize-mode-map " " 'kom-prioritize-select)
(define-key lyskom-prioritize-mode-map [down] 'kom-prioritize-next-line)
(define-key lyskom-prioritize-mode-map "\C-n" 'kom-prioritize-next-line)
(define-key lyskom-prioritize-mode-map [up] 'kom-prioritize-previous-line)
(define-key lyskom-prioritize-mode-map "\C-p" 'kom-prioritize-previous-line)
(define-key lyskom-prioritize-mode-map "p" 'kom-prioritize-previous-line)
(define-key lyskom-prioritize-mode-map [M-up] 'kom-prioritize-move-up)
(define-key lyskom-prioritize-mode-map "\M-p" 'kom-prioritize-move-up)
(define-key lyskom-prioritize-mode-map "u" 'kom-prioritize-move-up)
(define-key lyskom-prioritize-mode-map [M-down] 'kom-prioritize-move-down)
(define-key lyskom-prioritize-mode-map "\M-n" 'kom-prioritize-move-down)
(define-key lyskom-prioritize-mode-map "d" 'kom-prioritize-move-down)
(define-key lyskom-prioritize-mode-map "\M-<" 'kom-prioritize-beginning)
(define-key lyskom-prioritize-mode-map "\M->" 'kom-prioritize-end)
(define-key lyskom-prioritize-mode-map "r" 'kom-prioritize-reprioritize)
(define-key lyskom-prioritize-mode-map "g" 'kom-prioritize-goto-priority)
(define-key lyskom-prioritize-mode-map "p" 'kom-prioritize-set-priority)
(define-key lyskom-prioritize-mode-map "s" 'kom-prioritize-save)
(define-key lyskom-prioritize-mode-map "q" 'kom-prioritize-quit)
(define-key lyskom-prioritize-mode-map "\C-y" 'kom-prioritize-yank))
(defvar lyskom-prioritize-header-lines 2
"Number of lines in the header of the prioritization buffer")
(defvar lyskom-prioritize-header
" Prio Conference
-----------------------------------------------------------------------------
"
"Header for the reprioritization buffer")
;;;; ============================================================
......@@ -1224,7 +1279,7 @@ This variable is stored in the LysKOM server.")
("Write personal reply" . lyskom-button-private-comment-text)
("Mark article" . lyskom-button-mark-text)
("Unmark article" . lyskom-button-unmark-text))
nil)
((nil lyskom-print-text footer lyskom-button-comment-text)))
(conf
conf-text
lyskom-button-view-conf-presentation
......
......@@ -239,6 +239,32 @@ the current match-data."
(elt el 4))
(defun lyskom-get-button-hint (hints)
"Get the hint to be used right now (if any) from HINTS"
(let ((result nil)
(hint nil))
(while (and hints (null result))
(setq hint (car hints))
(setq hints (cdr hints))
(cond ((null (car hint))
(if (and (eq lyskom-current-function
(elt hint 1))
(or (null (elt hint 2))
(eq lyskom-current-function-phase
(elt hint 2))))
(setq result (elt hint 3))))
((listp (car hint))
(if (and lyskom-executing-command
(memq lyskom-current-command (car hint)))
(setq result (cdr hint))))
((symbolp (car hint))
(if (and lyskom-executing-command
lyskom-current-command
(eq lyskom-current-command (car hint)))
(setq result (cdr hint))))))
result))
(defun lyskom-generate-button (type arg &optional text face)
"Generate the properties for a button of type TYPE with argument ARG.
......@@ -255,6 +281,7 @@ FACE is the default text face for the button."
(t nil)))
(data (assq type lyskom-button-actions))
(hints (and data (elt data 4)))
(the-hint (lyskom-get-button-hint hints))
(props
(cond ((and (or (eq type 'conf)
(eq type 'pers))
......@@ -290,12 +317,10 @@ FACE is the default text face for the button."
'lyskom-button-type type
'lyskom-button-arg arg
'lyskom-buffer lyskom-buffer)))))
(if (and lyskom-executing-command
lyskom-current-command
(assq lyskom-current-command hints))
(if the-hint
(cons 'lyskom-button-hint
(cons (cdr (assq lyskom-current-command hints))
props))
(cons the-hint props))
props)))
......
No preview for this file type
......@@ -22,8 +22,12 @@
;;;;;
;;;;; Please mail bug reports to bug-lyskom@lysator.liu.se.
;;;;;
;;; ================================================================
;;; Prioritera medlemsskap - Prioritize membership
;;;; ================================================================
;;;;
;;;; File: prioritize.el
;;;; Author: David Byers
;;;;
;;;;
(setq lyskom-clientversion-long
......@@ -33,109 +37,516 @@
;;; Author: Per Cederqvist and Linus Tolke (some code from kom-membership)
;;; ================================================================
;;; Global variables
;;;
(defvar lyskom-prioritize-mode-line '(""
mode-line-modified
mode-line-buffer-identification
" "
global-mode-string
" %[("
mode-name
mode-line-process
minor-mode-alist
")%] "
lyskom-prioritize-mode-line-selected
"--"
(-3 . "%p")
"-%-"))
(defvar lyskom-prioritize-get-conf-stat-hack nil
"Can't touch this...")
(defvar lyskom-prioritize-entry-list nil
"List of entries to be prioritized.")
(defvar lyskom-prioritize-selection nil
"List of selected entries in the prioritization list.")
(defvar lyskom-prioritize-mode-line-selected ""
"String showing number of selected entries.")
;;; ================================================================
;;; Data types
;;;
(defun make-prioritize-entry (prio conf-stat)
(vector prio conf-stat nil nil))
(defun prioritize-entry->priority (el)
(aref el 0))
(defun prioritize-entry->name (el)
(conf-stat->name (aref el 1)))
(defun prioritize-entry->conf-stat (el)
(aref el 1))
(defun prioritize-entry->selected (el)
(aref el 2))
(defun set-prioritize-entry->priority (el prio)
(aset el 0 prio))
(defvar lyskom-prioritize-stack nil
"List of killed conferences.
Each entry consists of a marker.
Only used by lyskom-prioritize-mode.")
(defun set-prioritize-entry->conf-stat (el conf)
(aset el 1 conf))
(defvar lyskom-prioritize-buffer nil
"Used by kom-prioritize to remember which buffer the LysKOM session is in.
Only used by lyskom-prioritize-mode.")
(defun set-prioritize-entry->selected (el marks)
(aset el 2 marks))
(defun lyskom-prioritize-marker (pos)
"Return a marker that points to the second character on the current line."
;;; ================================================================
;;; Utility functions
;;;
(defun lyskom-prioritize-remove-from-list (elem l)
"Destructively emove the element at index ELEM from the list L."
(if (> elem (length l))
(error "Args out of range: %S, %d" l elem))
(if (= 0 elem)
(cdr l)
(setcdr (nthcdr (1- elem) l)
(nthcdr (1+ elem) l))
l))
(defun lyskom-prioritize-add-to-list (elem data l)
"At the position ELEM, add DATA to the list L using side effects."
(if (> elem (length l))
(error "Args out of range: %S, %d" l elem))
(if (= 0 elem)
(cons data l)
(setcdr (nthcdr (1- elem) l)
(cons data (nthcdr elem l)))
l))
(defun lyskom-prioritize-move-element (from to l)
"Move element from position FROM to position TO in list L using side-fx."
(setq from (1- from))
(setq to (1- to))
(let ((elem (if (< from 0) nil (elt l from))))
(lyskom-prioritize-add-to-list
to
elem
(lyskom-prioritize-remove-from-list from l))))
(defun lyskom-prioritize-current-entry ()
"Get the entry on the line containing point."
(lyskom-prioritize-get-entry-from-no
(- (1+ (count-lines 1 (point)))
lyskom-prioritize-header-lines)))
(defun lyskom-prioritize-get-entry-from-no (no)
"Get entry number NO from the prioritize list."
(elt lyskom-prioritize-entry-list (1- no)))
(defun lyskom-prioritize-get-no-from-entry (entry)
"Get the index of entry ENTRY in the prioritize list."
(1+ (- (length lyskom-prioritize-entry-list)
(length (memq entry lyskom-prioritize-entry-list)))))
(defun lyskom-prioritize-get-selected ()
"Get a list of all selected entries."
lyskom-prioritize-selection)
(defun lyskom-prioritize-goto-entry (entry)
"Go to the line containing ENTRY."
(goto-line (+ lyskom-prioritize-header-lines
(lyskom-prioritize-get-no-from-entry entry)))
(beginning-of-line))
(defun lyskom-prioritize-redraw-entry (entry)
"Redraw the prioritize entry ENTRY in the buffer"
(save-excursion
(let ((lineno (+ lyskom-prioritize-header-lines
(lyskom-prioritize-get-no-from-entry entry)))
(inhibit-read-only t))
(goto-line lineno)
(delete-region (save-excursion (beginning-of-line) (point))
(save-excursion (end-of-line) (point)))
(insert (lyskom-prioritize-format-entry entry)))))
(defun lyskom-prioritize-format-entry (entry)
"Return a string representation of the prioritize entry ENTRY"
(lyskom-format "%#1s %3#2s %#3M"
(if (prioritize-entry->selected entry) "*" " ")
(if (= 0 (prioritize-entry->priority entry))
"-" (format "%d" (prioritize-entry->priority entry)))
(prioritize-entry->conf-stat entry)))
(defun lyskom-prioritize-redraw-buffer ()
"Update the entire buffer contents"
(save-excursion
(goto-char pos)
(let ((inhibit-read-only t))
(erase-buffer)
(insert lyskom-prioritize-header)
(mapcar (function
(lambda (el)
(insert (concat (lyskom-prioritize-format-entry el)
"\n"))))
lyskom-prioritize-entry-list))))
(defun lyskom-prioritize-move-entry (from to &optional dontset forceup)
(let ((buffer-read-only nil))
(if (/= from to)
(let ((entry (lyskom-prioritize-get-entry-from-no from))
(after nil)
(before nil)
(start (1+ (count-lines 1 (point)))))
(if (null entry) (error (lyskom-get-string
'cant-move-nothing-nowhere)))
;;
;; Move the entry in the prioritize list
;;
(setq lyskom-prioritize-entry-list
(lyskom-prioritize-move-element from to
lyskom-prioritize-entry-list))
(if (not dontset)
(progn
(setq after (lyskom-prioritize-get-entry-from-no (1+ to))
before (lyskom-prioritize-get-entry-from-no (1- to)))
(if (> from to)
(if (and after
(/= (prioritize-entry->priority after)
(prioritize-entry->priority entry)))
(set-prioritize-entry->priority
entry
(prioritize-entry->priority after)))
(if (and before
(/= (prioritize-entry->priority before)
(prioritize-entry->priority entry)))
(set-prioritize-entry->priority
entry
(prioritize-entry->priority before))))))
;;