Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Peter Liljenberg
lyskom-elisp-client
Commits
7dfc7774
Commit
7dfc7774
authored
Oct 24, 1996
by
David Byers
Browse files
Massor av ändringar. Se ChangeLogen.
parent
694c37e2
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
src/ChangeLog
View file @
7dfc7774
Thu Oct 24 10:38:06 1996 David Byers <davby@sen2.ida.liu.se>
* english-strings.el,swedish-strings.el (lyskom-message): ndra
comment-to-by, by
(lyskom-sv-edit-mode-map): Lade till bindningar av musknappar.
* edit-text.el (lyskom-edit-insert-misc-conf): Stt properties p
mtesnumret. (lyskom-edit-insert-commented-author): Dito.
Tue Oct 22 02:47:55 1996 Niels Mller <nisse@lysator.liu.se>
* language.el: Tog bort lyskom-language-symbols.
Mon Oct 21 12:41:46 1996 David Byers <davby@sen2.ida.liu.se>
* utilities.el (lyskom-display-buffer): Lgg till en
kill-buffer-hoom ven om man gr display i samma fnster.
* english-strings.el (lyskom-button-actions): Lade till email som
action.
Mon Oct 21 00:54:00 1996 David Kgedal <davidk@lysator.liu.se>
* swedish-strings.el (lyskom-language-sv): Rensade bort
...
...
@@ -74,6 +91,21 @@ Sun Oct 20 03:46:22 1996 David K
(lyskom-language-var-internal): Ny funktion.
(lyskom-language-vars): Ny variabel.
Thu Oct 17 16:28:54 1996 David Byers <davby@sen2.ida.liu.se>
* english-strings.el (lyskom-custom-strings): Lade in i
english-strings.el
(lyskom-customize-map): Dito.
Wed Oct 16 11:24:41 1996 David Byers <davby@sen2.ida.liu.se>
* async.el (lyskom-show-logged-out-person): Gjorde s att
kom-presence-messages kan vara en lista av vilka som skall visas.
(lyskom-show-logged-in-person): Dito.
(lyskom-show-changed-person): Dito.
(lyskom-show-presence): Ny funktion.
Tue Oct 15 03:30:31 1996 David Kgedal <davidk@lysator.liu.se>
* commands1.el (lyskom-do-go-to-conf): Tog bort specialhacket fr
...
...
@@ -237,6 +269,13 @@ Wed Oct 9 15:59:06 1996 Niels M
* swedish-strings.el (menu): Lade till nya menynamn
Tue Oct 8 18:06:02 1996 David Byers <davby@sen2.ida.liu.se>
* lyskom-buttons.el (lyskom-default-button): Frsk stta
lyskom-button-text ven om argumentet inte anger det genom att
gra cache-get-* p personer och mten. Lev med att man kanske
inte alltid fr tag p texten.
Tue Oct 8 14:33:24 1996 Niels Mller <nisse@lysator.liu.se>
* vars.el.in (lyskom-inherited-variables): Lade till
...
...
@@ -269,6 +308,18 @@ Tue Oct 8 14:33:24 1996 Niels M
swedish-strings.el
swedish-strings.el: Anpassad till lyskom-get-string
Tue Oct 8 04:44:29 1996 David Kgedal <davidk@lysator.liu.se>
* lyskom-rest.el: Anropa lyskom-build-menus p toppnivn.
* menus.el (lyskom-background-menu): Ny funktion.
Tue Oct 8 03:55:40 1996 David Kgedal <kg@infovav.se>
* lyskom-buttons.el (lyskom-make-button-menu): Ny funktion.
(lyskom-mouse-3): Anvnd en keymap som meny.
(lyskom-button-menu): Bytte namn frn lyskom-mouse-3.
Tue Oct 8 04:44:29 1996 David Kgedal <davidk@lysator.liu.se>
* lyskom-buttons.el (lyskom-make-button-menu): Kopiera listorna.
...
...
@@ -277,6 +328,10 @@ Tue Oct 8 04:44:29 1996 David K
* menus.el (lyskom-background-menu): Ny funktion.
Tue Oct 8 02:10:10 1996 Niels Mller <nisse@lysator.liu.se>
* menus.el : Ny fil. Menyer i lyskom-mode.
Tue Oct 8 03:55:40 1996 David Kgedal <kg@infovav.se>
* lyskom-buttons.el (lyskom-make-button-menu): Ny funktion.
...
...
@@ -287,6 +342,40 @@ Tue Oct 8 02:10:10 1996 Niels M
* menus.el : Ny fil. Menyer i lyskom-mode.
Mon Oct 7 12:10:01 1996 David Byers <davby@sen2.ida.liu.se>
* option-edit.el (lyskom-custom-variables): Lade till
kom-ding-on-new-letter.
(lyskom-customize-buffer-format): Dito.
* swedish-strings.el (lyskom-custom-strings): Lade till
kom-ding-on-new-letter.
* async.el (lyskom-async-new-text): Pip vid brev.
* vars.el.in (kom-ding-on-new-letter): Ny variabel.
(lyskom-elisp-variables): Lade till den.
* completing-read.el (lyskom-read-conf-internal): Bugfix. Hantera
TAB p namn som inte finns med vissa predikatkombinationer.
Sun Oct 6 16:28:13 1996 David Byers <davby@sen2.ida.liu.se>
* compatibility.el (compiled-function-p): Definiera
compiled-function-p, inte byte-code-function-p s klagar XEmacs
mindre.
* utilities.el (functionp): Anvnd compiled-function-p.
* lyskom-buttons.el (lyskom-button-transform-text): Hantera
email-urler ocks.
* swedish-strings.el (lyskom-strings): Lade till
email-popup-title.
* vars.el.in (lyskom-text-buttons): Lade till regexp fr
mail-adresser.
Sun Oct 6 10:11:25 1996 David Kgedal <kg@infovav.se>
* utilities.el (lyskom-setup-faces): Anvnd device-class istllet
...
...
@@ -348,6 +437,41 @@ Sat Oct 5 19:23:13 1996 David K
* lyskom-rest.el (lyskom-trim-buffer): Stt inhibit-read-only.
Sat Oct 5 14:58:44 1996 David Byers <davby@sen2.ida.liu.se>
* utilities.el (lyskom-set-partial-window-configuration): Hantera
att fnster byter buffert p rtt stt.
* vars.el.in (lyskom-elisp-variables): Lade till
kom-customize-format.
* swedish-strings.el (lyskom-customize-map): Flyttade hit
variabeln.
(lyskom-custom-strings): Dito.
(lyskom-commands): Lade till kom-customize.
* prioritize.el (kom-prioritize): Anvnda
kom-dont-restore-window-after-prioritize
Thu Oct 3 09:49:37 1996 David Byers <davby@sen2.ida.liu.se>
* commands1.el (lyskom-who-is-on-9): Hantera prefixargumentet - p
Rtt Stt.
* commands2.el (kom-set-unread): Stt in strng med \n p slutet.
* startup.el (lyskom-clear-vars): Use lyskom-protect-environment.
(kom-start-anew): Set lyskom-current-conf to nil.
* compatibility.el: Flyttade kompatibilitetsfunktioner hit.
* utilities.el: Flyttade kompatiibilitetsfunktioner till
compatibility.el.
* macros.el: Dito
* vars.el.in (lyskom-prefetch-limit): Stt default till 10.
Thu Oct 3 01:30:03 1996 David Kgedal <davidk@lysator.liu.se>
* lyskom-rest.el (lyskom-binsearch-internal): Tro inte att tv
...
...
@@ -375,6 +499,28 @@ Wed Oct 2 16:41:53 1996 David K
(lyskom-binsearch): Ny funktion.
(lyskom-binsearch-internal): Ny funktion.
Wed Oct 2 16:37:31 1996 David Byers <davby@sen2.ida.liu.se>
* parse.el (lyskom-parse-bitstring): Mikrooptimeringar i
parse-koden fr mindre consning och mindre bytekod.
(Mnga funktioner) Testa inte TAB och RET som whitespace.
Tue Oct 1 15:27:12 1996 David Byers <davby@sen2.ida.liu.se>
* utilities.el (lyskom-set-partial-window-configuration): Ny
funktion.
(lyskom-reset-window-configuration-hook): Anvnd den.
(buffer-live-p): Ny kompatibilitetsfunktion. Jag r trtt p Emacs
19.28.
Mon Sep 30 11:03:07 1996 David Byers <davby@sen2.ida.liu.se>
* swedish-strings.el,english-strings.el (lyskom-strings): Lade
till formatkod fr att f in tiden ocks.
* lyskom-rest.el (lyskom-sentinel): Lade till current-time-string
i argumentlistan vid onormalt stng session.
Mon Sep 30 01:25:23 1996 David Kgedal <kg@infovav.se>
* commands1.el (lyskom-quit): Ta bort rtt sak ur listorna.
...
...
@@ -445,6 +591,12 @@ Fri Sep 27 01:47:13 1996 David K
* commands1.el (lyskom-add-membership): Anvnd prefetch fr att
hmta mappen istllet.
Thu Sep 26 10:19:11 1996 David Byers <davby@sen2.ida.liu.se>
* option-edit.el (lyskom-widget-kbd-macro-action): Stt buffert
via property istf hrdkodat namn.
(lyskom-kbd-macro-widget): Stt :macro-buffer propery p widgeten.
Thu Sep 26 00:08:32 1996 David Kgedal <davidk@lysator.liu.se>
* lyskom-rest.el (lyskom-end-of-command): Se till att de saker som
...
...
src/Makefile
View file @
7dfc7774
...
...
@@ -56,9 +56,10 @@ PARTS-EL = komtypes.el clienttypes.el deferred-insert.el utilities.el \
prioritize.el flags.el messages.el ansaphone.el remote-control.el
\
menus.el slow.el
\
elib-string.el
\
option-edit.el
\
lyskom-rest.el
HEADER-EL
=
vars.el macros.el language.el
HEADER-ELC
=
vars.elc macros.elc
deferred-insert
.elc
HEADER-EL
=
vars.el macros.el
compatibility.el
language.el
HEADER-ELC
=
vars.elc macros.elc
compatibility.elc language
.elc
SWEDISH-EL
=
swedish-strings.el
SWEDISH-ELC
=
swedish-strings.elc
ENGLISH-EL
=
english-strings.el
...
...
@@ -76,6 +77,7 @@ SRC-ELC = komtypes.elc clienttypes.elc deferred-insert.elc utilities.elc \
view-text.elc async.elc completing-read.elc
\
prioritize.elc flags.elc messages.elc ansaphone.elc
\
remote-control.elc menus.elc slow.elc elib-string.elc
\
option-edit.elc
\
lyskom-rest.elc
PARTS-ELC
=
$
(
SRC-ELC
)
...
...
@@ -97,7 +99,7 @@ lyskom.el: $(HEADER-EL) $(SWEDISH-EL) $(ENGLISH-EL) $(PARTS-EL)
cat
$
(
HEADER-EL
)
$
(
SWEDISH-EL
)
$
(
ENGLISH-EL
)
$
(
PARTS-EL
)
>
lyskom.el
lyskom.elc
:
lyskom.el
$
(
EMACS-BATCH
)
-f
batch-byte-compile lyskom.el
$
(
EMACS-BATCH
)
-l
./lpath.el
-f
batch-byte-compile lyskom.el
.PHONY
:
check
check
:
...
...
src/TODO
View file @
7dfc7774
...
...
@@ -3,21 +3,34 @@ Att g
-------- Buggar
prefix-kommandon änndras inte vid språkbyten
.
Långsamma kommandon buggar, eftersom bufferten är skrivskyddad
.
Långsamma kommandon buggar, eftersom bufferten är skrivskyddad
.
prefix-kommandon änndras inte vid språkbyten
.
Dubbla prefetcher kan vara väldigt förvirrande. Om man t.ex. gör
endast i ett möte (säg IÅM) innan det prefetchas får man två
parallella prefetcher på samma möte.
Dubbla prefetcher kan vara väldigt förvirrande. Om man t.ex. gör
endast i ett möte (säg IÅM) innan det prefetchas får man två
parallella prefetcher på samma möte.
I vilkalistan borde nog hemliga personer skrivas ut med någon
annan text än "Ej närvarande i något möte"
Gå med i möten startar inte prefetch på mötet.
Gå ur mötet man prefetchar genererar en bug.
kom-recover (antagligen lyskom-refetch) är en no-op.
Dubbla prefetcher kan vara väldigt förvirrande. Om man t.ex. gör
endast i ett möte (säg IÅM) innan det prefetchas får man två
parallella prefetcher på samma möte.
Om man går till ett möte som inte prefetchats och inte har några
inlägg blir promten fel, och man får ett felmeddelande.
Lista nyheter visar fel innan prefetchen har hämtat alla mappar.
Efter återse senaste fick jag fel prompt. Jag vill ha återse
nästa-prompten direkt om det finns texter som matchar villkoret.
Efter återse senaste fick jag fel prompt. Jag vill ha återse
nästa-prompten direkt om det finns texter som matchar villkoret.
lyskom-read-session-no hanterar inte att man anger specifikt
sessionsnummer om samma person har flera sessioner, tror jag.
...
...
@@ -29,8 +42,6 @@ n
rekursiv. Man överskrider ibland max-specpdl-size eller något
sådant.
Bygga Ändra Variabler mha widget.el.
Fixa så LysKOM och complete.el fungerar ihop genom att sätta om
samma mappar som complete.el gör, till wrappers runt complete.el
som kollar om completion är LysKOM-completion eller något annat.
...
...
@@ -171,3 +182,5 @@ n
vore det bra om bufferten scrollades upp så att man fick se dem...
[FIXAT]
Bygga Ändra Variabler mha widget.el. [FIXAT]
src/async.el
View file @
7dfc7774
...
...
@@ -137,8 +137,7 @@ this function shall be with current-buffer the BUFFER."
(
set-buffer
buffer
)
(
if
(
and
lyskom-pers-no
(
not
(
zerop
lyskom-pers-no
))
(
/=
pers-no
lyskom-pers-no
))
; Don't show myself.
(
/=
pers-no
lyskom-pers-no
))
; Don't show myself.
(
initiate-get-conf-stat
'follow
'lyskom-show-logged-in-person
pers-no
))
...
...
@@ -202,17 +201,29 @@ this function shall be with current-buffer the BUFFER."
(
lyskom-skip-tokens
tokens
)))))
(
defsubst
lyskom-show-presence
(
num
flag
)
"Returns non-nil if presence messages for NUM should be displayed
according to the value of FLAG."
(
cond
((
null
flag
)
nil
)
((
and
(
listp
flag
)
(
memq
num
flag
))
t
)
((
not
(
listp
flag
))
t
)))
(
defun
lyskom-show-logged-in-person
(
conf-stat
)
"Visa p} kommandoraden vem som loggat in."
(
cond
((
lyskom-is-in-minibuffer
))
(
kom-presence-messages
((
lyskom-show-presence
(
conf-stat->conf-no
conf-stat
)
kom-presence-messages
)
(
lyskom-message
"%s"
(
lyskom-format
'has-entered
(
or
conf-stat
(
lyskom-get-string
'secret-person
))))))
(
cond
(
kom-presence-messages-in-buffer
((
lyskom-show-presence
(
conf-stat->conf-no
conf-stat
)
kom-presence-messages-in-buffer
)
(
if
conf-stat
(
lyskom-format-insert-before-prompt
'has-entered-r
conf-stat
(
and
kom-text-properties
...
...
@@ -227,13 +238,15 @@ this function shall be with current-buffer the BUFFER."
"Visa p} kommandoraden vem som loggat ut."
(
cond
((
lyskom-is-in-minibuffer
))
(
kom-presence-messages
((
lyskom-show-presence
(
conf-stat->conf-no
conf-stat
)
kom-presence-messages
)
(
lyskom-message
"%s"
(
lyskom-format
'has-left
(
or
conf-stat
(
lyskom-get-string
'secret-person
))))))
(
cond
(
kom-presence-messages-in-buffer
((
lyskom-show-presence
(
conf-stat->conf-no
conf-stat
)
kom-presence-messages-in-buffer
)
(
if
conf-stat
(
lyskom-format-insert-before-prompt
'has-left-r
conf-stat
(
and
kom-text-properties
...
...
@@ -244,13 +257,14 @@ this function shall be with current-buffer the BUFFER."
'
(
face
kom-presence-face
)))))))
(
defun
lyskom-show-changed-person
(
personconfstat
conf-num
doing
)
"Tells the user what another person is doing."
(
if
personconfstat
;+++ Annan felhantering
(
progn
(
cond
((
lyskom-
is-in-minibuffer
)
)
((
and
kom-presence-messages
(
(
and
(
lyskom-
show-presence
(
conf-stat->conf-no
personconfstat
)
kom-presence-messages
)
(
or
(
=
0
conf-num
)
(
eq
conf-num
lyskom-current-conf
))
(
/=
0
(
length
doing
)))
...
...
@@ -261,7 +275,8 @@ this function shall be with current-buffer the BUFFER."
(
substring
doing
1
))))
string
))))
(
cond
((
and
(
eq
kom-presence-messages-in-buffer
t
)
((
and
(
lyskom-show-presence
(
conf-stat->conf-no
personconfstat
)
kom-presence-messages-in-buffer
)
(
or
(
=
0
conf-num
)
(
eq
conf-num
lyskom-current-conf
))
(
/=
0
(
length
doing
)))
...
...
@@ -429,7 +444,12 @@ converted, before insertion."
(
eq
type
'CC-RECPT
))
;; add on lyskom-reading-list and lyskom-to-do-list if
;; this recipient is a recipient that has been checked.
(
initiate-get-conf-stat
'async
'lyskom-add-new-text
(
if
(
and
(
eq
(
misc-info->recipient-no
misc-info
)
lyskom-pers-no
)
(
not
(
eq
(
text-stat->author
text-stat
)
lyskom-pers-no
)))
(
lyskom-beep
kom-ding-on-new-letter
))
(
initiate-get-conf-stat
'async
'lyskom-add-new-text
(
misc-info->recipient-no
misc-info
)
(
text-stat->text-no
text-stat
)
(
misc-info->local-no
misc-info
)))
...
...
src/commands1.el
View file @
7dfc7774
...
...
@@ -1551,8 +1551,8 @@ Uses Protocol A version 9 calls"
(
let*
((
wants-invisibles
(
or
(
and
(
numberp
arg
)
(
<
arg
0
))
(
and
(
symbolp
arg
)
(
eq
'-
arg
))))
(
idle-hide
(
if
(
numberp
arg
)
(
abs
arg
)
(
cond
((
numberp
kom-idle-hide
)
kom-idle-hide
)
((
eq
'-
arg
)
0
)
(
cond
((
eq
'-
arg
)
0
)
((
numberp
kom-idle-hide
)
kom-idle-hide
)
(
kom-idle-hide
30
)
(
t
0
))))
(
who-info-list
(
blocking-do
'who-is-on-dynamic
...
...
src/commands2.el
View file @
7dfc7774
...
...
@@ -610,7 +610,9 @@ send. If DONTSHOW is non-nil, don't display the sent message."
(
interactive
"P"
)
(
setq
conf-no
(
or
conf-no
lyskom-current-conf
))
(
if
(
and
(
zerop
lyskom-current-conf
)
(
null
conf-no
))
(
lyskom-insert-string
'not-present-anywhere
)
(
progn
(
lyskom-insert-string
'not-present-anywhere
)
(
lyskom-insert-string
"\n"
))
(
let
((
conf-stat
(
blocking-do
'get-conf-stat
conf-no
)))
(
if
(
null
conf-stat
)
;+++ annan errorhantering
(
lyskom-insert
"Error!\n"
)
;+++ Hrrrmmmmffff????
...
...
src/compatibility.el
View file @
7dfc7774
(
setq
byte-compile-compatibility
t
)
;;;;; -*- emacs-lisp -*-
;;;;; $Id$
;;;;; Copyright (C) 1996 Lysator Academic Computer Association.
;;;;;
;;;;; This file is part of the LysKOM server.
;;;;;
;;;;; LysKOM is free software; you can redistribute it and/or modify it
;;;;; under the terms of the GNU General Public License as published by
;;;;; the Free Software Foundation; either version 2, or (at your option)
;;;;; any later version.
;;;;;
;;;;; LysKOM is distributed in the hope that it will be useful, but WITHOUT
;;;;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
;;;;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
;;;;; for more details.
;;;;;
;;;;; You should have received a copy of the GNU General Public License
;;;;; along with LysKOM; see the file COPYING. If not, write to
;;;;; Lysator, c/o ISY, Linkoping University, S-581 83 Linkoping, SWEDEN,
;;;;; or the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
;;;;; MA 02139, USA.
;;;;;
;;;;; Please mail bug reports to bug-lyskom@lysator.liu.se.
;;;;;
;;;; ================================================================
;;;; ================================================================
;;;;
;;;; File: compatibility.el
;;;;
;;;; This file contains functions that may not exist in all supported
;;;; versions of Gnu Emacs. XEmacs-specific and Emacs 18-specific code
;;;; should go in some other file.
;;;;
(
setq
lyskom-clientversion-long
(
concat
lyskom-clientversion-long
"$Id$\n"
))
;;; ======================================================================
;;; Use lyskom-provide to supply a definition that is only to be used
;;; if no definition already exists. The definition will be evaluated at
;;; both compile and run time.
;;;
;;; lyskom-provide-macros behaves like defmacro
;;; lyskom-provide-function behaves like defun
;;; lyskom-provide-subst behaves like defsubst
;;;
(
eval-and-compile
(
defvar
lyskom-compatibility-definitions
nil
"Functions defined or redefined because they are incompatible with
LysKOM"
))
;;; ============================================================
;;; lyskom-compatibility-forms
;;; lyskom-compatibility-definition
;;;
(
defmacro
lyskom-compatibility-forms
(
predicate
&rest
forms
)
"If PREDICATE is nil, evaluate FORMS at compile and run time"
(
`
(
eval-and-compile
(
if
(
not
(
,
predicate
))
(
progn
(
,@
forms
))))))
(
defmacro
lyskom-compatibility-definition
(
predicate
definition
)
"If PREDICATE is nil, evaluate DEFINITION at compile and run time.
Definition should be a function definition of some kind, with syntax
similar to defun or defmacro.
To simply define a function if it is not already defined, used one
of the lyskom-provide-* functions instead."
(
`
(
progn
(
eval-when-compile
(
if
(
not
(
,
predicate
))
(
message
"Compatibility %S for %S"
(
quote
(
,
(
car
definition
)))
(
quote
(
,
(
car
(
cdr
definition
))))))
(
eval-and-compile
(
if
(
not
(
,
predicate
))
(
progn
(
,
definition
)
(
setq
lyskom-compatibility-definitions
(
cons
(
quote
(
,
(
car
(
cdr
definition
))))
lyskom-compatibility-definitions
)))))))))
;;; ============================================================
;;; lyskom-provide
;;; lyskom-provide-macro
;;; lyskom-provide-function
;;; lyskom-provide-subst
;;;
;;; Define functions if they are not already defined
;;;
(
defmacro
lyskom-provide
(
definer
name
rest
)
(
`
(
progn
(
eval-when-compile
(
if
(
not
(
fboundp
(
quote
(
,
name
))))
(
message
"Compatibility %S for %S"
(
quote
(
,
definer
))
(
quote
(
,
name
)))))
(
eval-and-compile
(
if
(
not
(
fboundp
(
quote
(
,
name
))))
(
progn
(
setq
lyskom-compatibility-definitions
(
cons
(
quote
(
,
name
))
lyskom-compatibility-definitions
))
((
,
definer
)
(
,
name
)
(
,@
rest
))))))))
(
defmacro
lyskom-provide-macro
(
name
&rest
rest
)
"If NAME is not already defined, define it as a macro."
(
`
(
lyskom-provide
defmacro
(
,
name
)
(
,
rest
))))
(
defmacro
lyskom-provide-function
(
name
&rest
rest
)
"If NAME is not already defined, define it as a function."
(
`
(
lyskom-provide
defun
(
,
name
)
(
,
rest
))))
(
defmacro
lyskom-provide-subst
(
name
&rest
rest
)
"If NAME is not already defined, define it as a defsubst."
(
`
(
lyskom-provide
defsubst
(
,
name
)
(
,
rest
))))
;;; ======================================================================
;;; ======================================================================
;;; ======================================================================
;;;
;;; Dummy definitions
;;;
(
defun
add-hook-org
(
x
y
z
))
(
defun
remove-hook-org
(
x
y
))
;;;
;;; Real functions
;;;
(
lyskom-provide-function
rassoc
(
key
list
)
"Return non-nil if KEY is `equal' to the cdr of an element of LIST.
The value is actually the element of LIST whose cdr is KEY."
(
catch
'rassoc
(
while
list
(
if
(
equal
key
(
cdr
(
car
list
)))
(
throw
'rassoc
(
car
list
))
(
setq
list
(
cdr
list
))))
(
throw
'rassoc
nil
)))
(
lyskom-provide-function
rassq
(
key
list
)
"Return non-nil if KEY is `eq' to the cdr of an element of LIST.
The value is actually the element of LIST whose cdr is KEY."
(
catch
'rassq
(
while
list
(
if
(
eq
key
(
cdr
(
car
list
)))
(
throw
'rassq
(
car
list
))
(
setq
list
(
cdr
list
))))
(
throw
'rassq
nil
)))
;;;
;;; Functions for limited simulation of local hooks
;;;
(
lyskom-compatibility-forms
(
fboundp
'make-local-hook
)
(
fset
'add-hook-org
(
symbol-function
'add-hook
))
(
fset
'remove-hook-org
(
symbol-function
'remove-hook
)))
(
lyskom-compatibility-definition
(
fboundp
'make-local-hook
)
(
defun
add-hook
(
hook
function
&optional
append
local
)
(
add-hook-org
hook
function
append
)))
(
lyskom-compatibility-definition
(
fboundp
'make-local-hook
)
(
defun
remove-hook
(
hook
function
&optional
local
)
(
remove-hook-org
hook
function
)))
(
lyskom-provide-function
make-local-hook
(
hook
)
"Poor man's definition of make-local-hook. Better'n nothing..."
(
make-variable-buffer-local
hook
))
(
lyskom-provide-function
buffer-live-p
(
buf
)
(
and
(
bufferp
buf
)
(
buffer-name
buf
)))
(
lyskom-provide-function
get-buffer-window-list
(
buffer
&optional
minibuf
frame
)
"Return windows currently displaying BUFFER, or nil if none.
See `walk-windows' for the meaning of MINIBUF and FRAME."
(
let
((
buffer
(
if
(
bufferp
buffer
)
buffer
(
get-buffer
buffer
)))
windows
)
(
walk-windows
(
function
(
lambda
(
window
)
(
if
(
eq
(
window-buffer
window
)
buffer
)
(
setq
windows
(
cons
window
windows
)))))
minibuf
frame
)
windows
))
(
lyskom-provide-macro
byte-code-function-p
(
obj
)
(
`
(
compiled-function-p
(
,
obj
))))
(
lyskom-provide-subst
internal-facep
(
x
)
(
and
(
vectorp
x
)
(
=
(
length
x
)
8
)
(
eq
(
aref
x
0
)
'face
)))
(
lyskom-provide-function
facep
(
x
)
"Return t if X is a face name or an internal face vector."
(
and
(
or
(
and
(
fboundp
'internal-facep
)
(
internal-facep
x
))
(
and
(
symbolp
x
)
(
boundp
'global-face-data
)
(
assq
x
global-face-data
)))
t
))
(
lyskom-provide-macro
save-selected-window
(
&rest
body
)
"Execute BODY, then select the window that was selected before BODY."
(
list
'let
'
((
save-selected-window-window
(
selected-window
)))
(
list
'unwind-protect
(
cons
'progn
body
)
(
list
'select-window
'save-selected-window-window
))))