Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
lyskom-elisp-client
lyskom-elisp-client
Commits
81235303
Commit
81235303
authored
May 28, 2000
by
Johan Sundström
Browse files
kom-list-news rehacked from scratch
parent
473f9f35
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/ChangeLog
View file @
81235303
2000-05-28 Johan Sundström <jhs@lysator.liu.se>
* commands2.el (kom-list-news): Rehacked from scratch. Now
complies to present-day (..., present-time! Moah-ha-ha! :-)
elisp-client coding standards. Also generally faster now.
(lyskom-list-news): New function.
(lyskom-iter-list-news): [New] support function to kom-list-news.
* english-strings.el (lyskom-message): Fixed what looked like a
bug in total-unreads.
* swedish-strings.el, english-strings.el (lyskom-message): Added
the strings shown-unreads and no-unreads-shown.
2000-05-28 Johan Sundström <jhs@lysator.liu.se>
* edit-text.el (kom-edit-insert-commented): Edit-mode ^C^Y may now
...
...
src/commands2.el
View file @
81235303
...
...
@@ -715,74 +715,114 @@ send. If DONTSHOW is non-nil, don't display the sent message."
;;; Lista Nyheter - List News
;;; Author: Linus Tolke
;;; Rehacked: Inge Wallin
;;; Rehacked: Inge Wallin
, Johan Sundstrm
(
defvar
lyskom-special-conf-name
"\\`\\(Inl.gg .t mig\\|NL:\\)\\'"
"Regexp to match conf names that are special."
)
(
defun
lyskom-iter-list-news
(
unreads
conf-stat
)
"Callback function used to show the number of unread messages of a
conference. It heavily relies on (and destructively modifies) its
environment."
(
when
(
and
(
or
(
not
at-least
)
(
>=
unreads
at-least
))
; unreads within lower bound
(
or
(
not
at-most
)
(
<=
unreads
at-most
)))
; unreads within upper bound
(
when
mship-confs
; remember all read conferences?
(
setq
mship-confs
(
delq
(
conf-stat->conf-no
conf-stat
)
mship-confs
)))
(
cond
((
and
(
boundp
'lyskom-special-conf-name
)
(
stringp
lyskom-special-conf-name
)
(
string-match
lyskom-special-conf-name
(
conf-stat->name
conf-stat
)))
(
lyskom-format-insert
'you-have-unreads-special
unreads
conf-stat
))
(
t
(
lyskom-format-insert
'you-have-unreads
unreads
conf-stat
)))
(
setq
shown-unreads
(
+
shown-unreads
unreads
)
shown-confs
(
1+
shown-confs
)))
(
setq
total-unreads
(
+
total-unreads
unreads
)
total-confs
(
1+
total-confs
)))
(
def-kom-command
kom-list-news
(
&optional
num
)
"Print the number of unread articles to the user."
"Print the number of unread articles to the user. A prefix argument
of zero lists all conferences, a positive prefix arguments sets a
lower bound on the number of unread messages, whereas a negative
prefix argument sets an upper bound on the number of unread messages."
(
interactive
"P"
)
(
let
((
num-arg
(
cond
((
numberp
num
)
num
)
((
and
(
listp
num
)
(
numberp
(
car
num
)))
(
car
num
))
(
t
nil
)))
(
mship-confs
nil
)
(
at-least
1
)
(
at-most
nil
)
(
shown-unreads
0
)
(
total-unreads
0
)
(
shown-confs
0
)
(
total-confs
0
))
(
when
num-arg
(
cond
((
=
num-arg
0
)
(
setq
at-least
nil
mship-confs
(
delq
nil
(
mapcar
(
lambda
(
el
)
(
when
(
not
(
membership-type->passive
(
membership->type
el
)))
(
membership->conf-no
el
)))
lyskom-membership
))))
((
>
num-arg
0
)
(
lyskom-format-insert
'list-unread-with-n-unread
(
setq
at-least
num-arg
)))
((
<
num-arg
0
)
(
lyskom-format-insert
'list-unread-with-at-most-n-unread
(
setq
at-most
(
-
num-arg
))))))
(
lyskom-list-news
'lyskom-iter-list-news
)
(
when
mship-confs
; then list all read conferences too
(
lyskom-traverse
conf-no
mship-confs
(
lyskom-format-insert
'you-have-no-unreads
conf-no
)))
(
if
(
=
0
total-unreads
)
(
lyskom-insert-string
'you-have-read-everything
)
(
if
(
=
0
shown-unreads
)
(
lyskom-insert-string
'no-unreads-shown
)
(
lyskom-insert
"\n"
))
; separate the shown list from the summary message
(
when
(
and
(
>
shown-unreads
0
)
(
<
shown-unreads
total-unreads
))
(
lyskom-format-insert
'shown-unreads
shown-unreads
shown-confs
))
(
lyskom-format-insert
'total-unreads
total-unreads
total-confs
))))
(
defun
lyskom-list-news
(
&optional
callback
&optional
callback-args
)
"With no arguments, returns a list of tuples (unread . conf-stat).
When called with a CALLBACK function, this function is called
iteratively as the list is built up. This function should take the two
arguments `number-of-unread-messages-in-conference' and `conf-stat'
and optionally any other arguments sent in the list CALLBACK-ARGS, and
its return value will form the elements of the list returned from
lyskom-list-news. The callback will only be fed conferences with at
least one unread message in them."
(
unless
kom-allow-incompleteness
(
sit-for
0
)
(
lyskom-prefetch-all-confs
))
(
let*
((
num-arg
(
cond
((
numberp
num
)
num
)
((
and
(
listp
num
)
(
numberp
(
car
num
)))
(
car
num
))
(
t
nil
)))
(
sum
0
)
(
mship-confs
(
and
(
numberp
num-arg
)
(
=
num-arg
0
)
(
delq
nil
(
mapcar
(
lambda
(
el
)
(
when
(
not
(
membership-type->passive
(
membership->type
el
)))
(
membership->conf-no
el
)))
lyskom-membership
))))
(
nconfs
0
))
(
cond
((
not
num-arg
))
((
>
num-arg
0
)
(
lyskom-format-insert
'list-unread-with-n-unread
num-arg
))
((
<
num-arg
0
)
(
lyskom-format-insert
'list-unread-with-at-most-n-unread
(
-
num-arg
))))
(
mapcar
(
function
(
lambda
(
info
)
(
let
((
un
(
length
(
cdr
(
read-info->text-list
info
))))
(
name
(
conf-stat->name
(
read-info->conf-stat
info
)))
(
conf-stat
(
read-info->conf-stat
info
)))
(
setq
mship-confs
(
delq
(
conf-stat->conf-no
conf-stat
)
mship-confs
))
(
cond
((
eq
(
read-info->type
info
)
'CONF
)
(
if
(
or
(
not
num-arg
)
; no prefix argument
(
and
(
>=
num-arg
0
)
; positive numeric argument
(
>=
un
num-arg
))
; less than number of unreads
(
and
(
not
(
=
un
0
))
; unreads present,
(
<=
num-arg
-1
)
; negative numeric argument,
(
<=
un
(
-
num-arg
))))
; at most -argument unreads
(
lyskom-insert
(
if
(
and
(
boundp
'lyskom-special-conf-name
)
(
stringp
lyskom-special-conf-name
)
(
string-match
lyskom-special-conf-name
name
))
(
lyskom-format
'you-have-unreads-special
un
conf-stat
)
(
lyskom-format
'you-have-unreads
un
conf-stat
))))
(
setq
sum
(
+
sum
un
)
nconfs
(
1+
nconfs
)))))))
(
read-list->all-entries
lyskom-to-do-list
))
(
mapcar
(
lambda
(
conf-no
)
(
lyskom-format-insert
'you-have-no-unreads
conf-no
))
mship-confs
)
(
if
(
=
0
sum
)
(
lyskom-insert-string
'you-have-read-everything
)
(
lyskom-format-insert
'total-unreads
sum
nconfs
))))
(
mapcar
(
function
(
lambda
(
info
)
(
let
((
unreads
(
length
(
cdr
(
read-info->text-list
info
))))
(
conf-stat
(
read-info->conf-stat
info
)))
(
when
(
eq
(
read-info->type
info
)
'CONF
)
(
if
callback
(
apply
callback
unreads
conf-stat
callback-args
)
(
cons
unreads
conf-stat
))))))
(
read-list->all-entries
lyskom-to-do-list
)))
;;; ================================================================
...
...
src/english-strings.el
View file @
81235303
...
...
@@ -609,7 +609,10 @@ The message you were sending to %#1M was:
(you-have-unreads-special . "
You
have
%#1d
uncommented
text%#1?d%[%]%[s%]
in
%#2M\n
")
(you-have-no-unreads . "
You
have
read
everything
in
%#1M\n
")
(you-have-read-everything . "
No
news
(
is
bad
news
)
.
\n
")
(total-unreads . "
\nYou
have
%#1d
unread
text%#1?d%[%]%[s%]
texts
in
%#2M.\n
")
(no-unreads-shown . "
Found
no
conferences
meeting
that
criterion.\n
")
(total-unreads .
"
You
have
%#1d
unread
text%#1?d%[%]%[s%]
texts
in
%#2d
conference%#2?d%[%]%[s%].\n
")
(shown-unreads . "
Showed
%#1d
unread
text%#1?d%[%]%[s%]
in
%#2d
conference%#2?d%[%]%[s%].\n
")
(list-unread-with-n-unread . "
Listing
conferences
with
at
least
%#1d
unread.\n
")
(list-unread-with-at-most-n-unread . "
Listing
conferences
with
at
most
%#1d
unread.\n
")
(waiting-for-anything .
...
...
src/swedish-strings.el
View file @
81235303
...
...
@@ -597,7 +597,9 @@ Meddelandet du f
(you-have-unreads-special . "
Du
har
%#1d
okommentera%#1?d%[t%]%[de%]
inlgg
i
%#2M\n
")
(you-have-no-unreads . "
Du
har
inget
olst
i
%#1M\n
")
(you-have-read-everything . "
Du
har
sett
alla
nyheter.\n
")
(total-unreads . "
\nDu
har
%#1d
olst%#1?d%[%]%[a%]
inlgg
i
%#2d
mte%#2?d%[%]%[n%].\n
")
(no-unreads-shown . "
Hittade
inga
mten
som
matchade
det
kriteriet.\n
")
(total-unreads . "
Du
har
totalt
%#1d
olst%#1?d%[%]%[a%]
inlgg
i
%#2d
mte%#2?d%[%]%[n%].\n
")
(shown-unreads . "
Visade
%#1d
olst%#1?d%[%]%[a%]
inlgg
i
%#2d
mte%#2?d%[%]%[n%].\n
")
(list-unread-with-n-unread . "
Visar
endast
mten
med
minst
%#1d
olsta.\n
")
(list-unread-with-at-most-n-unread . "
Visar
endast
mten
med
som
mest
%#1d
olsta.\n
")
(waiting-for-anything .
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment