Commit 3c5c4b07 authored by David Byers's avatar David Byers
Browse files

Add unread indicator in the title bar

parent c7a48955
2000-05-26 David Byers <davby@ida.liu.se>
Unread marker in title bar
* vars.el.in (kom-show-unread-in-frame-title): New variable.
* lyskom-rest.el (lyskom-is-loaded): Set
lyskom-unread-title-format, frame-title-format and
frame-icon-title-format.
(lyskom-unread-title-format): New variable.
* buffers.el (lyskom-traverse-buffer-hierarchy): New function.
(lyskom-remove-unread-buffer): Clear flags in the buffer saying
that the buffer has unreads.
(lyskom-add-unread-buffer): Set flags in the buffer saying that
the buffer has unreads.
* commands1.el (lyskom-quit): Use lyskom-remove-unread-buffer.
Bind lyskom-executing-command in interactive forms
* command.el (lyskom-fix-interactive-decl): New function puts a
let around evaluated arguments to interactive that binds
lyskom-executing-command to the current command.
......
......@@ -8,50 +8,49 @@ Att g
Använd lyskom-read-text-no-prefix arg i alla funktioner där det är
meningsfullt. Följande är relevanta:
Radera inlägg
Återse inlägg
Återse omodifierat
Återse urinlägget
Återse det kommenterade
Återse det föregående kommenterade
Kommentera inlägget
Kommentera föregående inlägg
Fotnot till inlägg
Personligt svar
Personligt svar på föregående inlägg
Markera (inlägg)
Avmarkera (inlägg)
Addera mottagare
Addera extra kopiemottagare
Addera för kännedom
Subtrahera mottagare
Flytta inlägg
Addera kommentar
Subtrahera kommentar
Arkivera inlägg (till fil)
Spara inläggstext (på fil)
Sätt loginmeddelande
Kort replik
Hålla med
Addera FAQ
Addera fotnot
Subtrahera fotnot
Förhindra kommentarer
Begär personligt svar
Begär läsbekräftelse
Återse brevhuvud
Kommando Default Prompt
------------------------------------------------------
Radera inlägg ? Alltid
Återse inlägg Inget Ja
Återse omodifierat SL Nej
Återse urinlägget SL Nej
Återse det kommenterade SL Nej
Återse det föregående kommen NSL Nej
Kommentera inlägget SL Nej
Kommentera föregående inlägg NSL Nej
Fotnot till inlägg SS ?
Personligt svar SL Nej
Personligt svar på föregåend NSL Nej
Markera (inlägg) SL ?
Avmarkera (inlägg) ? ?
Addera mottagare SL ?
Addera extra kopiemottagare SL ?
Addera för kännedom SL ?
Subtrahera mottagare SL ?
Flytta inlägg SL Ja
Addera kommentar SL ?
Subtrahera kommentar SL ?
Arkivera inlägg (till fil) SL ?
Spara inläggstext (på fil) SL ?
Sätt loginmeddelande SS Ja
Kort replik SL Nej
Hålla med SL Nej
Addera FAQ SS Ja
Addera fotnot SS ?
Subtrahera fotnot SS ?
Förhindra kommentarer SS ?
Begär personligt svar SS ?
Begär läsbekräftelse SS ?
Återse brevhuvud SL Ja
------------------------------------------------------
SL Senast lästa
NSL Näst senast lästa
SS Senast skrivna/eget läst
Bestäm vettig default och om kommandot skall fråga efter nummer eller
bara anta default om man inte ger prefixargument.
Gör så att lyskom-read-text-no-prefix-arg vet vilket kommando som
håller på köras. Ge det ett extra argument för kommandot och fixa
def-kom-command så att den patchar interactive-specen om den
innehåller ett anrop till lyskom-read-text-no-arg.
Det vore trevligt om "Arkivera inlägg (till fil)" fanns i kontextmenyn
för inläggsnummer också, samt om man kunde ställa in en defaultpath
till funktionen, helst också per KOM.
......
......@@ -127,6 +127,21 @@ a child of some buffer, reparent it."
(setq buffer buffer-parent))
buffer))
(defun lyskom-traverse-buffer-hierarchy (function buffer)
"Apply FUNCTION to each descendent of BUFFER. Results are discarded."
(let ((queue (list buffer))
(done nil)
(current nil))
(while queue
(setq current (car queue))
(setq queue (cdr queue))
(unless (or (memq current done)
(not (buffer-live-p buffer)))
(setq done (cons current done))
(setq queue (append queue (lyskom-get-buffer-children current)))
(funcall function current)))))
(defun lyskom-map-buffer-children (function buffer)
"Apply FUNCTION to each child of BUFFER and make a list of the results."
(cond ((null buffer) nil)
......@@ -189,8 +204,11 @@ the children object"
"Remove all dead buffers from BUFFERS"
(let ((result nil))
(while buffers
(when (lyskom-buffer-p (car buffers))
(setq result (cons (car buffers) result)))
(if (lyskom-buffer-p (car buffers))
(setq result (cons (car buffers) result))
(save-excursion (set-buffer (car buffers))
(setq lyskom-session-has-unread-letters nil)
(setq lyskom-session-has-unreads nil)))
(setq buffers (cdr buffers)))
(nreverse result)))
......@@ -205,8 +223,18 @@ If BUFFER is not specified, assume the current buffer"
(defun lyskom-remove-unread-buffer (buffer &optional letters-only)
(unless letters-only
(lyskom-traverse-buffer-hierarchy
(lambda (x)
(save-excursion (set-buffer x)
(setq lyskom-session-has-unreads nil)))
buffer)
(setq lyskom-sessions-with-unread
(delq buffer lyskom-sessions-with-unread)))
(lyskom-traverse-buffer-hierarchy
(lambda (x)
(save-excursion (set-buffer x)
(setq lyskom-session-has-unread-letters nil)))
buffer)
(setq lyskom-sessions-with-unread-letters
(delq buffer lyskom-sessions-with-unread-letters))
(lyskom-set-default 'lyskom-need-prompt-update t))
......@@ -214,10 +242,20 @@ If BUFFER is not specified, assume the current buffer"
(defun lyskom-add-unread-buffer (buffer &optional letters)
(unless (memq buffer lyskom-sessions-with-unread)
(lyskom-traverse-buffer-hierarchy
(lambda (x)
(save-excursion (set-buffer x)
(setq lyskom-session-has-unreads t)))
buffer)
(setq lyskom-sessions-with-unread
(cons buffer lyskom-sessions-with-unread)))
(unless (or (null letters)
(memq buffer lyskom-sessions-with-unread-letters))
(lyskom-traverse-buffer-hierarchy
(lambda (x)
(save-excursion (set-buffer x)
(setq lyskom-session-has-unread-letters t)))
buffer)
(setq lyskom-sessions-with-unread-letters
(cons buffer lyskom-sessions-with-unread-letters)))
(lyskom-set-default 'lyskom-need-prompt-update t))
......
......@@ -1071,10 +1071,7 @@ If optional argument is non-nil then dont ask for confirmation."
"Quit a session. Kill process and buffer-local variables.
Don't ask for confirmation."
(initiate-logout 'main nil)
(setq lyskom-sessions-with-unread
(delq lyskom-buffer lyskom-sessions-with-unread))
(setq lyskom-sessions-with-unread-letters
(delq lyskom-buffer lyskom-sessions-with-unread-letters))
(lyskom-remove-unread-buffer lyskom-buffer)
(set-process-sentinel lyskom-proc nil)
(delete-process lyskom-proc)
(lyskom-insert-string (lyskom-get-string-sol 'session-ended))
......
......@@ -973,6 +973,8 @@ Send a bug report.\n")
(mode-line-unread . " Unread ")
(mode-line-letters . "letters ")
(frame-title-unread . "Unread")
(frame-title-letters . " letters")
(sessions-with-unreads . "Sessions with unread texts")
(unread-letters . "unread letters")
......
......@@ -113,6 +113,7 @@
;;;
(defvar lyskom-unread-mode-line nil)
(defvar lyskom-unread-title-format nil)
;;; ================================================================
;;; Error reporting from a number of commands.
......@@ -3510,12 +3511,28 @@ One parameter - the prompt string."
global-mode-string)))
(setq global-mode-string
(append '("" lyskom-unread-mode-line) global-mode-string))))
(setq frame-title-format (list ""
frame-title-format
'lyskom-unread-title-format))
(setq frame-icon-title-format (list ""
frame-icon-title-format
'lyskom-unread-title-format))
(setq lyskom-unread-mode-line
(list (list 'lyskom-sessions-with-unread
(lyskom-get-string 'mode-line-unread))
(list 'lyskom-sessions-with-unread-letters
(lyskom-get-string 'mode-line-letters))
" "))
(setq lyskom-unread-title-format
`(kom-show-unread-in-frame-title
(lyskom-session-has-unreads
(" ("
((lyskom-session-has-unreads ,(lyskom-get-string 'frame-title-unread))
(lyskom-session-has-unread-letters ,(lyskom-get-string 'frame-title-letters)))
")"))))
(add-hook 'kill-buffer-hook 'lyskom-remove-buffer-from-lists)
......
......@@ -979,6 +979,8 @@ Skicka en bugrapport.\n")
(mode-line-unread . " Olsta ")
(mode-line-letters . "brev ")
(frame-title-unread . "Olsta")
(frame-title-letters . " brev")
(sessions-with-unreads . "Sessioner med olsta")
(unread-letters . "olsta brev")
......
......@@ -302,6 +302,11 @@ used."
entering a conference."
server)
(def-kom-var kom-show-unread-in-frame-title t
"*If non-nil, then show an unread indicator in the frame title of each
LysKOM session."
server)
(def-kom-var kom-presence-messages t
"*If non-nil, lyskom prints continuous info about what other people are doing.
Info is printed on the message line and never in the buffer. If minibuffer is
......@@ -1368,6 +1373,18 @@ This is not buffer-local.")
"List of lyskom-sessions with unread letters.
This is not buffer-local.")
(def-kom-var lyskom-session-has-unread-letters nil
"Non-nil if this session has unread letters."
local
protected
inherited)
(def-kom-var lyskom-session-has-unreads nil
"Non-nil if this session has unread texts."
local
protected
inherited)
(def-kom-var lyskom-buffer nil
"What is the lyskom-buffer we are connected to."
inherited
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment