Commit 17273b2c authored by David Byers's avatar David Byers
Browse files

Mostly bug fixes

parent f0b9e3d1
Mon Mar 25 16:22:42 1996 David Byers <byers@lysator.liu.se>
* lyskom-rest.el: Formatteringen tcker inte padding.
* Release av elispklient 0.40
* swedish-strings.el,english-strings.el: Bugfixar
* filter.el: Bugfixar
* vars.el.in, lyskom-rest.el, startup.el: Gjorde s frger stts
vid load, inte vid inloggning. Bytte ngra defaultfrger.
* Makefile: Satte versionsnummer till 0.40
Mon Mar 25 06:48:01 1996 David Kgedal <davidk@lysator.liu.se>
* parse.el (lyskom-parse-unparsed): Se till att meddelandet
......@@ -5,6 +20,15 @@ Mon Mar 25 06:48:01 1996 David K
* review.el (lyskom-review-comments): Se fotnoter frst.
Fri Mar 22 13:49:23 1996 David Byers <byers@lysator.liu.se>
* filter.el: Fixade buggar.
* edit-text.el: Fixad buggar. Lade in s man kan skicka in
enriched text om lyskom-format-experimental r satt.
* lyskom-rest.el (lyskom-format-text-body): Fixade buggar.
Fri Mar 22 12:48:06 1996 David Kgedal <davidk@lysator.liu.se>
* edit-text.el (lyskom-edit-send): Felhanteringen buggade.
......@@ -52,6 +76,12 @@ Tue Mar 19 00:03:23 1996 David K
Mon Mar 18 12:34:47 1996 David Byers <byers@lysator.liu.se>
* startup.el: Lade till s man kan lta bli att lsa user-arean
vid inloggning via variabeln lyskom-dont-read-user-area,
* view-text.el: Gjorde s text props inte hamnar i
lyskom-current-subject.
* services.el, lyskom-rest.el, lyskom-buttons.el, view-text.el,
macros.el: Lade till stllbar timeout till accept-process-output
i form av variablerna lyskom-apo-timeout-s och lyskom-apo-timeout-ms
......
......@@ -25,7 +25,7 @@
# $Id$
#
CLIENTVERSION = 0.40d
CLIENTVERSION = 0.40
GENERIC-CLEAN = *~ *.o core
GENERIC-DIST-CLEAN = TAGS
......
......@@ -154,8 +154,6 @@ otherwise: the conference is read with lyskom-completing-read."
(lyskom-format-insert 'created-by
creator
creator
(lyskom-default-button 'conf
creator)
(if (and
(lyskom-conf-stat-p creator)
(> (length (conf-stat->name creator))
......@@ -186,8 +184,6 @@ otherwise: the conference is read with lyskom-completing-read."
(lyskom-format-insert 'superconf-is-no-name
superconf
superconf
(lyskom-default-button 'conf
superconf)
(if (and
(lyskom-conf-stat-p superconf)
(> (length (conf-stat->name superconf))
......@@ -204,8 +200,6 @@ otherwise: the conference is read with lyskom-completing-read."
conf-stat))
(lyskom-get-string 'Everybody)
permitted-submitters)
(lyskom-default-button 'conf
permitted-submitters)
(cond
((zerop (conf-stat->permitted-submitters
conf-stat))
......@@ -224,8 +218,6 @@ otherwise: the conference is read with lyskom-completing-read."
(lyskom-format-insert 'supervisor-is-no-name
supervisor
supervisor
(lyskom-default-button 'conf
supervisor)
(if (and
(lyskom-conf-stat-p supervisor)
(> (length (conf-stat->name supervisor))
......@@ -357,8 +349,6 @@ otherwise: the conference is read with lyskom-completing-read."
(lyskom-format-insert 'superconf
superconf
superconf
(lyskom-default-button 'conf
superconf)
(if (and
(lyskom-conf-stat-p superconf)
(> (length (conf-stat->name superconf))
......@@ -373,8 +363,6 @@ otherwise: the conference is read with lyskom-completing-read."
(lyskom-format-insert 'supervisor
supervisor
supervisor
(lyskom-default-button 'conf
supervisor)
(if (and
(lyskom-conf-stat-p supervisor)
(> (length (conf-stat->name
......@@ -768,7 +756,7 @@ Format is 23:29 if the text is written today. Otherwise 04-01."
(txt (text->text-mass text))
(eos (string-match (regexp-quote "\n") txt))
(subject (substring txt 0 eos))
;; length of the number %%%%%% :7
;; length of the number %%%%%% :8
;; length for time is: 6
(time (text-stat->creation-time text-stat))
(time (if (and (= year (time->year time))
......@@ -779,8 +767,8 @@ Format is 23:29 if the text is written today. Otherwise 04-01."
(time->mday time))))
;; length for lines is: 4
;; We split the rest between author and subject
(namelen (/ (- (lyskom-window-width) 21) 3))
(subjlen (/ (* (- (lyskom-window-width) 21) 2) 3))
(namelen (/ (- (lyskom-window-width) 22) 3))
(subjlen (/ (* (- (lyskom-window-width) 22) 2) 3))
(author-name (lyskom-format "%#1:M" (text-stat->author text-stat))))
(lyskom-format-insert 'summary-line
text-no
......@@ -922,7 +910,7 @@ Format is 23:29 if the text is written today. Otherwise 04-01."
(interactive)
(let* ((curbuf (current-buffer))
(old-buf (condition-case ()
(or debugger-old-buffer (current-buffer))
debugger-old-buffer
(void-variable (current-buffer))))
(repname "*lyskom-bugreport*"))
(lyskom-message "%s" (lyskom-get-string 'buggreport-compilestart))
......
......@@ -376,6 +376,8 @@ Entry to this mode runs lyskom-edit-mode-hook."
(if (/= (point) old)
(signal 'lyskom-no-subject '(enter-subject-idi)))))
(setq message (lyskom-edit-extract-text))
(if (fboundp 'lyskom-send-transform-text)
(setq message (lyskom-send-transform-text message)))
(setq mode-name "LysKOM sending")
(save-excursion
(set-buffer (process-buffer lyskom-proc))
......@@ -384,8 +386,11 @@ Entry to this mode runs lyskom-edit-mode-hook."
(setq lyskom-dont-change-prompt t))
(setq lyskom-is-writing nil)
(lyskom-tell-internat 'kom-tell-send)
(funcall send-function 'sending 'lyskom-create-text-handler
(concat subject "\n" message) misc-list
(funcall send-function
'sending
'lyskom-create-text-handler
(concat subject "\n" message)
misc-list
buffer)))
(if kom-dont-restore-window-after-editing
(bury-buffer)
......@@ -398,11 +403,45 @@ Entry to this mode runs lyskom-edit-mode-hook."
(set-window-configuration lyskom-edit-return-to-configuration)
(set-buffer (window-buffer (selected-window))))
(goto-char (point-max))))
;;
;; Catch no-subject
;;
(lyskom-edit-error
(if (cdr (cdr err))
(goto-char (car (cdr (cdr err)))))
(if (cdr-safe (cdr-safe err))
(goto-char (car-safe (cdr-safe (cdr-safe err)))))
(lyskom-beep lyskom-ding-on-no-subject)
(lyskom-message (lyskom-get-string (car (cdr err)))))))
(lyskom-message (lyskom-get-string (car (cdr err))))
(condition-case arg
(let ((text ""))
(save-excursion
(set-buffer (process-buffer lyskom-proc))
(if (and (string= "kom.lysator.liu.se" lyskom-server-name)
(eq lyskom-pers-no 698))
(setq text "rende, IDI!")))
(save-excursion (insert text)))
(error nil)))))
(defun lyskom-send-transform-text (message)
(if lyskom-format-experimental
(condition-case err
(let ((buf (generate-new-buffer "lyskom-enriched")))
(unwind-protect
(save-excursion
(set-buffer buf)
(insert message)
(goto-char (point-min))
(format-encode-buffer 'text/enriched)
(goto-char (point-min))
(search-forward "\n\n")
(if (not (string= (buffer-substring (point)
(point-max)) message))
(concat "enriched:\n" (buffer-string))
message))
(kill-buffer buf)))
(error message))
message))
(defun kom-edit-quit ()
......
This diff is collapsed.
......@@ -147,7 +147,7 @@ Returns nil if no such attribute is present."
(defun lyskom-filter-text-p-2 (text-stat)
(if (null text-stat)
nil
(setq lyskom-filter-hack nil)
(progn
;;
;; Collect information from the server
......@@ -574,7 +574,7 @@ the current text"
(list (cons 'action 'skip-tree)
(cons 'expire t))))
(lyskom-format-insert 'super-jump
lyskom-current-subject
(copy-sequence lyskom-current-subject)
conf-stat))))))
(lyskom-end-of-command)))
......
No preview for this file type
......@@ -225,7 +225,8 @@ See lyskom-mode for details."
(zerop (conf-stat->presentation conf-stat))
(not (zerop (conf-stat->no-of-texts conf-stat))))
(lyskom-insert-string 'presentation-encouragement)))
(lyskom-read-options)
(if (not lyskom-dont-read-user-area)
(lyskom-read-options))
(lyskom-refetch)
;; (cache-initiate-who-info-buffer (blocking-do 'who-is-on))
(cache-set-marked-texts (blocking-do 'get-marks))
......
......@@ -357,7 +357,7 @@ du har l\344st klart allting. Kom tillbaks senare.
(no-comments . "original")
(closed . "slutet")
(created-by . "%[%#3@Skapat av person %25#1:p%] %#4s(%#2P)\n")
(created-by . "Skapat av person %25#1p %#3s(%#2P)\n")
(created-at . "Skapad:%35#1s\n")
(members . "Antal medlemmar: %25#1d\n")
(garb-nice . "Livsl\344ngd p\345 inl\344gg (dagar):%14#1d\n")
......@@ -366,9 +366,9 @@ du har l\344st klart allting. Kom tillbaks senare.
(last-text-time .
"Tid f\366r senaste inl\344gg: %18#1s (st\345r det i din cache)\n")
(no-of-motd . "Lapp p\345 d\366rren i text nummer: %12#1n\n")
(superconf-is-no-name . "%[%#3@Superm\366te: %25#1:m%] %#4s(%#2M)\n")
(permitted-submitters-no-name . "%[%#3@Till\345tna f\366rfattare:%22#1:m%] %#4s(%#2M)\n")
(supervisor-is-no-name . "%[%#3@Organisat\366r: %25#1:p%] %#4s(%#2P)\n")
(superconf-is-no-name . "Superm\366te: %25#1m %#3s(%#2M)\n")
(permitted-submitters-no-name . "Till\345tna f\366rfattare:%22#1m %#3s(%#2M)\n")
(supervisor-is-no-name . "Organisat\366r: %25#1p %#3s(%#2P)\n")
(presentation-no . "Presentation: %25#1n\n")
(conf-has-motd . "\n%#1M har en lapp p\345 d\366rren:\n")
......@@ -395,8 +395,8 @@ du har l\344st klart allting. Kom tillbaks senare.
(read-texts . "L\344sta texter:%28#1d\n")
(marked-texts . "Markerade texter:%24#1d\n")
(time-for-last-letter . "Tid f\366r senaste brev:%20#1s (st\345r det i din cache)\n")
(superconf . "%[%#3@Superm\366te:%31#1:m%] %#4s(%#2M)\n")
(supervisor . "%[%#3@Organisat\366r:%29#1:p%] %#4s(%#2P)\n")
(superconf . "Superm\366te:%31#1m %#3s(%#2M)\n")
(supervisor . "Organisat\366r:%29#1p %#3s(%#2P)\n")
(member-of-confs . "Medlem i (antal m\366ten):%18#1d\n")
(presentation . "Presentation: %24#1n\n")
(show-membership-list-also-q . "Vill du se vilka m\366ten personen \344r medlem i ocks\345? ")
......@@ -450,7 +450,7 @@ Meddelandet du f\366rs\366kte s\344nda till %#1M var:
(could-not-read . "Du fick inte l\344sa denna text (%#1n).\n")
(multiple-choice . "Flera alternativ finns.")
(does-not-exist . "Detta kommando finns inte.")
(summary-line . "%=-7#1n%#2s%4#3d %[%#4@%#5:P%] %[%#6@%#7r%]\n")
(summary-line . "%=-8#1n%#2s%4#3d %[%#4@%#5:P%] %[%#6@%#7r%]\n")
(what-mark-to-list . "Vilken markering vill du lista? ")
(you-have-marks . "Du har %#1d inl\344gg markerade markerade med %#2d.\n")
......@@ -815,7 +815,7 @@ Felmeddelande: %#1s**************************************************")
(ansaphone-new-message . "Nytt automatsvar: ")
(ansaphone-message . "Svarsmeddelande:
----------------------------------------------------------------------
%#1s
%#1t
----------------------------------------------------------------------
")
(ansaphone-state . "Automatsvar \344r nu %#1s.")
......@@ -829,7 +829,7 @@ Felmeddelande: %#1s**************************************************")
(remote-erase-messages . "Fj\344rrstyrning (%#1P %#2s): Sparade meddelanden raderade\n")
(remote-set-message . "Fj\344rrstyrning (%#1P %#2s): Svarsmeddelande:
----------------------------------------------------------------------
%#3s
%#3t
----------------------------------------------------------------------
")
(remote-set-ansaphone . "Fj\344rrstyrning (%#1P %#2s): Automatsvar \344r nu %#3s\n")
......@@ -1005,8 +1005,8 @@ Text:
"A list of legal filter conditions and their textual representation.")
(defvar lyskom-filter-actions
'((dontshow . "Visa inte")
(skip-text . "Hoppa \366ver")
'((skip-text . "Hoppa \366ver")
(dontshow . "Visa inte")
(skip-tree . "Hoppa \366ver kommentarer"))
"A list of legal filter actions an their textual representation.")
......@@ -1066,8 +1066,8 @@ Cf. paragraph-start.")
(define-key lyskom-mode-map [down-mouse-3] 'kom-mouse-3)
(define-key lyskom-mode-map [mouse-3] 'kom-mouse-null)
(define-key lyskom-mode-map "*" 'kom-key-mouse-2)
(define-key lyskom-mode-map "\M-f" 'kom-next-link)
(define-key lyskom-mode-map "\M-b" 'kom-previous-link)
(define-key lyskom-mode-map "\C-i" 'kom-next-link)
(define-key lyskom-mode-map "\M-\C-i" 'kom-previous-link)
))
;;(define-key lyskom-mode-map "vi" 'vilka)
......@@ -1280,6 +1280,77 @@ Cf. paragraph-start.")
This variable is stored in the LysKOM server.")
;;;; ============================================================
;;;; Text buttom menuse go here. This will probably be moved back
;;;; to vars.el.in when the strings have been replaced by
;;;; symbols, but for now they'll stay here.
(defvar lyskom-button-actions
'((text
text-text
lyskom-button-view-text
(("terse texten" . lyskom-button-view-text)
("terse trd" . lyskom-button-review-tree)
("terse urinlgget" . lyskom-button-find-root)
("Kommentera texten" . lyskom-button-comment-text)
("Personligt svar" . lyskom-button-private-comment-text)
("Markera texten" . lyskom-button-mark-text)
("Avmarkera texten" . lyskom-button-unmark-text))
nil)
(conf
conf-text
lyskom-button-view-conf-presentation
(("Visa presentation" . lyskom-button-view-conf-presentation)
("Visa mtesstatus" . lyskom-button-view-conf-status)
("G till mtet" . lyskom-button-goto-conf)
("Skicka gruppmeddelande" . lyskom-button-send-message)
("Bli medlem i mtet" . lyskom-button-add-self)
("Uttrd ur mtet" . lyskom-button-sub-self))
((kom-list-news . lyskom-button-goto-conf)))
(pers
pers-text
lyskom-button-view-pers-presentation
(("Visa presentation" .
lyskom-button-view-pers-presentation)
("Visa personstatus" . lyskom-button-view-pers-status)
("Skicka brev" . lyskom-button-mail)
("Snd meddelande" . lyskom-button-send-message))
nil)
(url
url-text
lyskom-button-open-url
(("ppna" . lyskom-button-open-url)
("Kopiera" . lyskom-button-copy-url))
nil))
"This variable defines valid button types in LysKOM. Each element is a
list consisting of (TYPE LABEL DEFAULT ACTIONS HINTS).
TYPE is the button type the entry defines
LABEL is a textual representation for the button type, used in menu titles. If
it is a symbol, that symbol will be looked up using lyskom-get-string.
DEFAULT is the default action to take on a click. It must be a function.
ACTIONS are other possible actions. The format of this entry is described
below.
HINTS is a list of hints to override the default action. This is described
below.
The ACTIONS entry is used to construct a pop-up menu. It is a list consisting
of lists with the format (STRING . FUNCTION). STRING is the menu label and
FUNCTION is the function to call when the menu item is selected.
The HINTS entry is used to generate hints that the default action should be
overridden. It is a list containing elements (COMMAND . HINT) where COMMAND is
as interactive LysKOM command and HINT is a function to call. When a button
is generated while the command COMMAND is being executed, HINT is used as a
hint for a new default action. The user has the option to ignore or used the
hint.
Also see the function \"kom-add-button-action\".
This variable is not saved in the LysKOM server.")
;;;; ================================================================
;;;; Tell phrases should really be configured with the default
;;;; language used at the server and not for person reading if they
......
......@@ -288,6 +288,11 @@ This variable is not saved in the LysKOM server.")
This variable is stored in the LysKOM server.")
(defvar kom-default-face-scheme 'default
"*Face scheme to use per default for new logins.
This variable is not saved in the LysKOM server.")
(defvar kom-text-properties t
"*Non-nil means to insert text properties in the Emacs buffer for
various LysKOM elements.
......@@ -299,69 +304,10 @@ This variable is not saved in the LysKOM server.")
This variable is not saved in the LysKOM server.")
(defvar lyskom-button-actions
'((text
text-text
lyskom-button-view-text
(("Återse texten" . lyskom-button-view-text)
("Återse träd" . lyskom-button-review-tree)
("Återse urinlägget" . lyskom-button-find-root)
("Kommentera texten" . lyskom-button-comment-text)
("Personligt svar" . lyskom-button-private-comment-text)
("Markera texten" . lyskom-button-mark-text)
("Avmarkera texten" . lyskom-button-unmark-text))
nil)
(conf
conf-text
lyskom-button-view-conf-presentation
(("Visa presentation" . lyskom-button-view-conf-presentation)
("Visa mötesstatus" . lyskom-button-view-conf-status)
("Gå till mötet" . lyskom-button-goto-conf)
("Skicka gruppmeddelande" . lyskom-button-send-message)
("Bli medlem i mötet" . lyskom-button-add-self)
("Utträd ur mötet" . lyskom-button-sub-self))
((kom-list-news . lyskom-button-goto-conf)))
(pers
pers-text
lyskom-button-view-pers-presentation
(("Visa presentation" .
lyskom-button-view-pers-presentation)
("Visa personstatus" . lyskom-button-view-pers-status)
("Skicka brev" . lyskom-button-mail)
("Sänd meddelande" . lyskom-button-send-message))
nil)
(url
url-text
lyskom-button-open-url
(("Öppna" . lyskom-button-open-url)
("Kopiera" . lyskom-button-copy-url))
nil))
"This variable defines valid button types in LysKOM. Each element is a
list consisting of (TYPE LABEL DEFAULT ACTIONS HINTS).
TYPE is the button type the entry defines
LABEL is a textual representation for the button type, used in menu titles. If
it is a symbol, that symbol will be looked up using lyskom-get-string.
DEFAULT is the default action to take on a click. It must be a function.
ACTIONS are other possible actions. The format of this entry is described
below.
HINTS is a list of hints to override the default action. This is described
below.
The ACTIONS entry is used to construct a pop-up menu. It is a list consisting
of lists with the format (STRING . FUNCTION). STRING is the menu label and
FUNCTION is the function to call when the menu item is selected.
The HINTS entry is used to generate hints that the default action should be
overridden. It is a list containing elements (COMMAND . HINT) where COMMAND is
as interactive LysKOM command and HINT is a function to call. When a button
is generated while the command COMMAND is being executed, HINT is used as a
hint for a new default action. The user has the option to ignore or used the
hint.
Also see the function \"kom-add-button-action\".
This variable is not saved in the LysKOM server.")
;;;
;;; lyskom-button-actions has been moved to swedish-strings.el on account
;;; of there being a bunch of language-dependent strings in it.
;;;
(defvar lyskom-text-buttons
......@@ -989,11 +935,15 @@ unread texts in list-unread.")
(defvar lyskom-is-new-user nil
"An internal variable used in kom-start-anew")
(defvar lyskom-apo-timeout-s nil
(defvar lyskom-apo-timeout-s 1
"Seconds timeout for accept-process-output")
(defvar lyskom-apo-timeout-ms nil
"Microseconds timeout for accept-process-output")
(defvar lyskom-dont-read-user-area nil
"If non-nil the user area will not be read on login.")
;;;; lyskom-tell-phrases-validation-keyword-list
;;; This is a list of keywords for kom-tell-phrases.
......@@ -1067,6 +1017,93 @@ the value of kom-tell-phrases for fun.")
nil
(,@ body))))
(put 'lyskom-make-face 'lisp-indent-function 1)
(defmacro when (expr &rest body)
"Execute BODY if EXPR evaluates to non-nil"
(list 'if expr (cons 'progn body)))
(put 'when lisp-indent-function 1)
(put 'when 'edebug-form-spec t)
;;
;; Set up default faces in case no face scheme is selected
;;
(defvar lyskom-face-schemes
'((default
(kom-active-face default "blue4" nil)
(kom-url-face default "BlueViolet" nil)
(kom-me-face bold "blue3" "lavender")
(kom-highlight-face highlight nil)
(kom-text-face default nil nil)
(kom-subject-face default nil nil)
(kom-text-no-face kom-active-face nil nil)
(kom-friends-face default "blue3" "lavender")
(kom-presence-face italic "dim gray" nil)
(kom-first-line-face default nil nil))
(inverse
(kom-active-face default "lightblue" nil)
(kom-url-face default "Moccasin" nil)
(kom-me-face bold "gold" "black")
(kom-highlight-face highlight nil nil)
(kom-text-face default nil nil)
(kom-subject-face default "Khaki" nil)
(kom-text-no-face kom-active-face nil nil)
(kom-friends-face default nil "cornsilk")
(kom-presence-face italic "grey" nil)
(kom-first-line-face default nil nil))
(monochrome
(kom-active-face default nil nil)
(kom-url-face default nil nil)
(kom-me-face bold nil nil)
(kom-highlight-face highlight nil nil)
(kom-text-face default nil nil)
(kom-subject-face default nil nil)
(kom-text-no-face kom-active-face nil nil)
(kom-friends-face underline nil nil)
(kom-presence-face italic nil nil)
(kom-first-line-face default nil nil))
(minimal
(kom-active-face default nil nil)
(kom-url-face default nil nil)
(kom-me-face default nil "lavender")
(kom-highlight-face highlight nil nil)
(kom-text-face default nil nil)
(kom-subject-face default nil nil)
(kom-text-no-face default nil nil)
(kom-friends-face default nil "alice blue")
(kom-presence-face italic "dim gray" nil)
(kom-first-line-face default nil nil))
(highlight
(kom-active-face default nil nil)
(kom-url-face default nil "LemonChiffon1")
(kom-me-face default nil "thistle")
(kom-highlight-face highlight nil nil)
(kom-text-face default nil nil)
(kom-text-no-face default nil nil)
(kom-friends-face default nil "misty rose")
(kom-subject-face default nil nil)
(kom-presence-face italic "dim gray" nil)
(kom-first-line-face default nil "lavender")))
"Face schemes for LysKOM.
This variable is an association list that defines the face and color
schemes in LysKOM. The car of each element is the scheme key, a
symbol, and the cdr is a list of face definitions. Each face
definition in tur, is a list of four elements: the face name, the base
face, foreground color and background color. When LysKOM defines a
face from such a specification, the base face is first copied and then
the foreground and background colors are set. If it permissible to
substitute nil for any element except the face name.
For instance, (kom-me-face bold \"yellow\" \"red\") will cause kom-me-face
to be bold with yellow text on a red background."
)
(defun lyskom-set-face-foreground (face color)
(condition-case error
(set-face-foreground face color)
......@@ -1078,75 +1115,22 @@ the value of kom-tell-phrases for fun.")
(error nil)))
(defmacro when (expr &rest body)
"Execute BODY if EXPR evaluates to non-nil"
(list 'if expr (cons 'progn body)))
(put 'when lisp-indent-function 1)
(put 'when 'edebug-form-spec t)
(put 'lyskom-make-face 'lisp-indent-function 1)
(when (eq window-system 'x)
(if (x-display-color-p)
(let* ((bgmode (cdr (assq 'background-mode (frame-parameters))))
(dark-bg (eq bgmode 'dark)))
;; Face for text buttons and other KOM buttons
(lyskom-make-face 'kom-active-face
(copy-face 'default 'kom-active-face)
(lyskom-set-face-foreground 'kom-active-face
(if dark-bg "lightblue" "blue4")))
;; Face for URL buttons
(lyskom-make-face 'kom-url-face
(copy-face 'default 'kom-url-face)
(lyskom-set-face-foreground 'kom-url-face
(if dark-bg "Moccasin" "BlueViolet")))
;; Face for highlighting you own name
(lyskom-make-face 'kom-me-face
(copy-face