Commit 61b846bf authored by David Byers's avatar David Byers
Browse files

Massor av fixar av olika slag...

parent 96d6afc1
Wed Sep 25 12:14:48 1996 David Byers <davby@sen2.ida.liu.se>
* english-strings.el, swedish-strings.el (lyskom-strings): Anvnd
%C i the-command.
* lyskom-rest.el (lyskom-format-aux-help): Hantera format-letter C
(fr kommandon och kbd-macros.) Hantera format-letter S (fr allt.)
* macros.el (set-keymap-parent): Ny funktion.
* review.el (lyskom-get-texts-globally): Hantera att efterskt
inlgg inte finns.
Tue Sep 24 13:23:40 1996 David Byers <davby@sen2.ida.liu.se>
* english-strings.el (lyskom-strings): Fixade mismatchande
formatstrngar.
* review.el (kom-review-next): Definiera med def-kom-command.
(kom-review-clear): Dito.
(kom-review-stack): Dito.
(kom-review-last-normally-read): Dito.
* prioritize.el (kom-prioritize-quit): Anvnd
lyskom-undisplay-buffer.
(kom-prioritize): Anvnd lyskom-associate-buffer mfl.
* edit-text.el (lyskom-dispatch-edit-text): Bufferthantering via
lyskom-display-bufffer och vnner. Anvnd lyskom-buffer, inte
lyskom-proc.
(lyskom-edit-mode): Skapa inte lyskom-proc. Det grs av
lyskom-associate-buffer.
(lyskom-dispatch-edit-text): Anvnd lyskom-buffer, inte
lyskom-proc.
(lyskom-edit-insert-miscs): Dito.
(lyskom-edit-send): Dito.
(lyskom-edit-send): Dito.
(lyskom-edit-send-check-recipients): Dito.
(kom-edit-insert-text): Dito.
(lyskom-edit-get-commented): Dito.
(lyskom-edit-add-recipient/copy): Dito.
(lyskom-create-text-handler): Dito.
Mon Sep 23 15:57:36 1996 David Byers <davby@sen2.ida.liu.se>
* parse.el (lyskom-parse-bitstring): Ny funktion.
(lyskom-parse-conf-type): Skrev om s den anvnder
parse-bitstring.
(lyskom-parse-privs): Dito.
(lyskom-parse-flags): Dito.
(lyskom-parse-session-flags): Dito.
(lyskom-maybe-parse-1-or-0): Tog bort funktionen.
Sun Sep 22 11:00:58 1996 David Byers <davby@sen2.ida.liu.se>
* review.el (lyskom-last-review-by): Ny variabel.
(lyskom-last-review-to): Dito.
(lyskom-last-review-num): Dito.
(lyskom-last-review-pmark): Dito.
(lyskom-last-review-cmark): Dito.
(lyskom-last-review-saved-result-list): Dito.
(lyskom-last-review-saved-by-list): Dito.
(lyskom-last-review-saved-to-list): Dito.
(lyskom-last-review-saved-result-size): Dito.
(lyskom-last-review-saved-smallest): Dito.
(lyskom-last-review-saved-largest): Dito.
(lyskom-have-review): Dito.
* english-strings,swedish-strings.el (lyskom-strings): Lade till
review-more-info-by-to, no-review-done och review-how-many-more.
* review.el (lyskom-get-texts-globally): Lade till parametern
again s man kan fortstta terse.
(lyskom-get-texts-by-and-to): Dito.
(lyskom-get-texts-by): Dito.
(lyskom-get-texts-to): Dito.
(lyskom-review-by-to): Hmta inte conf-stattar fr att skriva ut
vad man terser.
(kom-review-more): Ny funktion.
Thu Sep 19 09:31:44 1996 David Byers <davby@sen2.ida.liu.se>
* completing-read.el (lyskom-complete-string): Fixade s man inte
fr SPC i slutet av completion fullt s ofta.
(lyskom-completing-use-dynamic-info): Ny variabel.
(lyskom-completing-who-is-on): Anvnd
lyskom-completing-use-dynamic-info istf use-dynamic-info.
(lyskom-read-conf-get-logins): Dito.
* commands1.el (lyskom-add-member-by-no): Anvnd
blocking-do-multiple.
(lyskom-try-add-member): ndrade tillbaka (igen!) s man inte kan
bli passiv medlem nr man adderas till ett mte.
* utilities.el (lyskom-undisplay-buffer): Ny funktion.
(lyskom-associate-buffer): Ny funktion.
(lyskom-display-buffer): Ny funktion.
(lyskom-protected-variables): Ny variabel
(lyskom-default-symbol-value): Ny funktion
Mon Sep 16 16:02:23 1996 David Byers <davby@sen2.ida.liu.se>
* utilities.el (lyskom-protect-environment): Nytt makro.
(lyskom-inherited-variables): Ny variabel.
(lyskom-delete-frame-hook): Ny funktion.
(lyskom-reset-window-configuration-hook): Ny funktion.
Sun Sep 15 19:44:43 1996 David Byers <davby@sen15.ida.liu.se>
* edit-text.el (lyskom-dispatch-edit-text): Gjorde s att
new-frame fungerar
Sat Sep 14 10:15:16 1996 David Byers <davby@sen15.ida.liu.se>
* swedish-strings.el,english-strings.el (lyskom-strings): ndrade
nedre grns i priority-q till 1.
* lyskom-rest.el (lyskom-next-command): Hantera vektorer frn
lyskom-what-to-do-when-done s man kan ha vektorer som innehll i
kom-do-when-done.
Sun Sep 8 13:19:16 1996 David Byers <davby@sen2.ida.liu.se>
* vars.el.in (kom-permissive-completion): Gjorde `t' till
defaultvrde.
Fri Sep 6 10:39:56 1996 David Byers <davby@sen2.ida.liu.se>
* lyskom-rest.el (lyskom-read-extended-command): Satte
EMPTY-parametern till `t', inte `nil' i
lyskom-read-extended-command.
Fri Sep 6 20:22:53 1996 David Kgedal <kg@infovav.se>
* completing-read.el (lyskom-completing-who-is-on): Kolla bara den
......
......@@ -6,7 +6,7 @@
;;;; This file is used for checking swedish-strings.el and
;;;; english-strings.el. Run using
;;;;
;;;; emacs -batch -l check-strings.el -f lyskom-check-strings
;;;; emacs -batch -l check-strings.el -f run
;;;;
;;;;
......
......@@ -307,15 +307,14 @@ Ask for the name of the person, the conference to add him/her to."
"Fetch info to be able to add a person to a conf.
Get the conf-stat CONF-NO for the conference and the conf-stat and pers-stat
for person PERS-NO and send them into lyskom-try-add-member."
;; This could be optimized with David Byers multi-hack.
(let* ((whereto (blocking-do 'get-conf-stat conf-no))
(who (blocking-do 'get-conf-stat pers-no))
(pers-stat (blocking-do 'get-pers-stat pers-no))
(result (lyskom-try-add-member whereto who pers-stat)))
(lyskom-add-member-answer result whereto who)
(if thendo
(apply thendo data))
result))
(blocking-do-multiple ((whereto (get-conf-stat conf-no))
(who (get-conf-stat pers-no))
(pers-stat (get-pers-stat pers-no)))
(let ((result (lyskom-try-add-member whereto who pers-stat)))
(lyskom-add-member-answer result whereto who)
(if thendo
(apply thendo data))
result)))
(defun lyskom-try-add-member (conf-conf-stat pers-conf-stat pers-stat)
......@@ -337,7 +336,7 @@ Returns t if it was possible, otherwise nil."
(> kom-membership-default-priority 0))
kom-membership-default-priority
(lyskom-read-num-range
0 255 (lyskom-get-string 'priority-q)))))
1 255 (lyskom-get-string 'priority-q)))))
(where
(if (/= lyskom-pers-no (conf-stat->conf-no pers-conf-stat))
1 ; When adding someone else
......
......@@ -52,6 +52,7 @@
(defvar lyskom-completing-lookup-name-cache nil
"Temporary cache of server queries")
(defvar lyskom-completing-use-dynamic-info)
(defun lyskom-completing-clear-cache ()
(setq lyskom-completing-who-info-cache nil)
......@@ -64,7 +65,8 @@
lyskom-completing-who-info-cache
(setq lyskom-completing-who-info-cache
(listify-vector
(if (or (and (lyskom-is-in-minibuffer) use-dynamic-info)
(if (or (and (lyskom-is-in-minibuffer)
lyskom-completing-use-dynamic-info)
lyskom-dynamic-session-info-flag)
(blocking-do 'who-is-on-dynamic t t 0)
(blocking-do 'who-is-on))))))
......@@ -198,11 +200,11 @@ A string: A name that matched nothing in the database."
(defun lyskom-read-conf-get-logins ()
"Used internally by lyskom-read-conf-internal to get a list of
persons who are logged on."
(let ((use-dynamic-info
(let ((lyskom-completing-use-dynamic-info
(cdr-safe (assq 'lyskom-dynamic-session-info-flag
(buffer-local-variables
(process-buffer lyskom-blocking-process))))))
(mapcar (if use-dynamic-info
(mapcar (if lyskom-completing-use-dynamic-info
(function (lambda (el) (dynamic-session-info->person el)))
(function (lambda (el) (who-info->pers-no el))))
(lyskom-completing-who-is-on))))
......@@ -557,18 +559,25 @@ the LysKOM rules of string matching."
;;
((eq (aref next-char-state 0) 'match)
(setq last-event-worth-noting 'match)
(if (and (eq (aref next-char-state 1) ?\ )
(or (eq (symbol-value current-state) 'start-of-word)
(eq (symbol-value current-state) 'start-of-string)))
(lyskom-complete-string-advance data-list)
(if (eq (aref next-char-state 1) ?\ )
(progn
(cond ((or (eq (symbol-value current-state) 'start-of-word)
(eq (symbol-value current-state) 'start-of-string))
nil)
((eq last-event-worth-noting 'mismatch)
(lyskom-complete-string-accumulate current-accumulator
'SPC))
(t
(lyskom-complete-string-accumulate current-accumulator
?\ )))
(set current-state 'start-of-word)
(lyskom-complete-string-advance data-list))
(progn
(set current-state 'in-a-word)
(lyskom-complete-string-accumulate current-accumulator
(aref next-char-state 1))
(if (eq (aref next-char-state 1) ?\ )
(set current-state 'start-of-word)
(set current-state 'in-a-word))
(lyskom-complete-string-advance data-list))))
(aref next-char-state 1))
(lyskom-complete-string-advance data-list)))
(setq last-event-worth-noting 'match))
;;
;; Case two, a match of two open-paren expressions Increase
......@@ -638,7 +647,7 @@ the LysKOM rules of string matching."
((and (eq (aref next-char-state 0) 'space-mismatch)
(or (eq (symbol-value current-state) 'start-of-string)
(eq (symbol-value current-state) 'start-of-word)))
(setq last-event-worth-noting 'nil)
(setq last-event-worth-noting nil)
(lyskom-complete-string-skip-whitespace data-list))
;;
......@@ -649,6 +658,7 @@ the LysKOM rules of string matching."
((and (or (eq (aref next-char-state 0) 'mismatch)
(eq (aref next-char-state 0) 'space-mismatch))
(zerop paren-depth))
(setq last-event-worth-noting 'mismatch)
(if (or (eq (symbol-value current-state) 'start-of-word)
(eq (symbol-value current-state) 'start-of-string))
(setq done t)
......@@ -658,7 +668,6 @@ the LysKOM rules of string matching."
(lyskom-complete-string-accumulate current-accumulator
'HERE)
(setq have-here t)))
(setq last-event-worth-noting 'mismatch)
(lyskom-complete-string-advance-to-end-of-word data-list)
(set current-state 'in-a-word))))
......@@ -689,10 +698,8 @@ the LysKOM rules of string matching."
;; string out of it.
;;
(if (eq last-event-worth-noting 'mismatch)
(while (and main-accumulator
(eq (car main-accumulator) ?\ ))
(setq main-accumulator (cdr main-accumulator))))
(if (eq (car main-accumulator) 'SPC)
(setq main-accumulator (cdr main-accumulator)))
(setq main-accumulator (nreverse main-accumulator))
......@@ -708,7 +715,7 @@ the LysKOM rules of string matching."
(index 0))
(lyskom-traverse
el main-accumulator
(aset tmp index el)
(aset tmp index (if (eq el 'SPC) 32 el))
(setq index (1+ index)))
tmp)))
......
......@@ -95,26 +95,35 @@ Does lyskom-end-of-command."
(config (current-window-configuration)))
(setq lyskom-list-of-edit-buffers (cons buffer
lyskom-list-of-edit-buffers))
(process-kill-without-query (get-buffer-process (current-buffer)) t)
(cond
((and (or (bufferp kom-write-texts-in-window)
(stringp kom-write-texts-in-window))
(get-buffer-window kom-write-texts-in-window))
(select-window (get-buffer-window kom-write-texts-in-window))
(switch-to-buffer buffer))
((eq kom-write-texts-in-window 'other)
(switch-to-buffer-other-window buffer))
((and (eq kom-write-texts-in-window 'other-frame)
(not (eq (selected-frame) (next-frame))))
(select-frame (next-frame)))
((eq kom-write-texts-in-window 'new-frame)
(make-local-variable 'lyskom-is-dedicated-edit-window)
(setq lyskom-is-dedicated-edit-window t)
(switch-to-buffer-other-frame buffer))
(t
(switch-to-buffer buffer)))
(lyskom-edit-mode)
(setq lyskom-proc proc)
(process-kill-without-query (get-buffer-process (current-buffer)) t)
(lyskom-associate-buffer buffer)
(lyskom-display-buffer buffer
'kom-write-texts-in-window
'kom-dont-restore-window-after-editing)
;;; (cond
;;; ((and (or (bufferp kom-write-texts-in-window)
;;; (stringp kom-write-texts-in-window))
;;; (get-buffer-window kom-write-texts-in-window))
;;; (select-window (get-buffer-window kom-write-texts-in-window))
;;; (switch-to-buffer buffer))
;;; ((eq kom-write-texts-in-window 'other)
;;; (switch-to-buffer-other-window buffer))
;;; ((and (eq kom-write-texts-in-window 'other-frame)
;;; (not (eq (selected-frame) (next-frame))))
;;; (select-frame (next-frame))
;;; (switch-to-buffer buffer))
;;; ((eq kom-write-texts-in-window 'new-frame)
;;; (switch-to-buffer-other-frame buffer)
;;; (make-local-variable 'lyskom-is-dedicated-edit-window)
;;; (setq lyskom-is-dedicated-edit-window t))
;;; (t
;;; (switch-to-buffer buffer)))
(lyskom-protect-environment
(lyskom-edit-mode))
(make-local-variable 'lyskom-edit-handler)
(make-local-variable 'lyskom-edit-handler-data)
(make-local-variable 'lyskom-edit-return-to-configuration)
......@@ -131,7 +140,7 @@ Does lyskom-end-of-command."
(if (not (looking-at "\\s-*$"))
(goto-char (point-max)))
(lyskom-message "%s" (lyskom-get-string 'press-C-c-C-c)))
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
)
......@@ -143,7 +152,7 @@ comm-to -> Kommentar till text %d.
footn-to -> Fotnot till text %d."
(let ((edit-buffer (current-buffer))
(where-put-misc (point-min-marker))
(main-buffer (process-buffer lyskom-proc)))
(main-buffer lyskom-buffer))
(set-buffer main-buffer)
(setq misc-list (cdr misc-list))
(while (not (null misc-list))
......@@ -313,7 +322,6 @@ Entry to this mode runs lyskom-edit-mode-hook."
(auto-fill-mode 1)
(make-local-variable 'paragraph-start)
(make-local-variable 'paragraph-separate)
(make-local-variable 'lyskom-proc)
(setq paragraph-start (concat "^"
(regexp-quote
lyskom-header-separator)
......@@ -394,7 +402,7 @@ Entry to this mode runs lyskom-edit-mode-hook."
(setq mode-name "LysKOM sending")
(save-excursion
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
;; Don't change the prompt if we won't see our own text
(if kom-created-texts-are-read
(setq lyskom-dont-change-prompt t))
......@@ -406,16 +414,18 @@ Entry to this mode runs lyskom-edit-mode-hook."
(concat subject "\n" message)
misc-list
buffer)))
(if kom-dont-restore-window-after-editing
(bury-buffer)
(save-excursion
(if (and (boundp 'lyskom-is-dedicated-edit-window)
lyskom-is-dedicated-edit-window)
(condition-case error
(delete-frame)
(error))))
(set-window-configuration lyskom-edit-return-to-configuration)
(set-buffer (window-buffer (selected-window))))
(lyskom-undisplay-buffer)
;;; (if kom-dont-restore-window-after-editing
;;; (bury-buffer)
;;; (save-excursion
;;; (if (and (boundp 'lyskom-is-dedicated-edit-window)
;;; lyskom-is-dedicated-edit-window)
;;; (condition-case error
;;; (delete-frame)
;;; (error))))
;;; (set-window-configuration lyskom-edit-return-to-configuration)
;;; (set-buffer (window-buffer (selected-window))))
(goto-char (point-max))))
;;
;; Catch no-subject and other things
......@@ -431,7 +441,7 @@ Entry to this mode runs lyskom-edit-mode-hook."
(condition-case arg
(let ((text ""))
(save-excursion
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
(if (and (string= "kom.lysator.liu.se" lyskom-server-name)
(eq lyskom-pers-no 698))
(setq text "rende, IDI!")))
......@@ -451,7 +461,7 @@ text is a member of some recipient of this text."
(author-is-member nil)
(collector (make-collector))
(extra-headers nil)
(me (save-excursion (set-buffer (process-buffer lyskom-proc))
(me (save-excursion (set-buffer lyskom-buffer)
lyskom-pers-no))
(num-me 0))
......@@ -523,7 +533,7 @@ text is a member of some recipient of this text."
;;
(save-excursion
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
(mapcar (function
(lambda (author-number)
(lyskom-collect 'sending)
......@@ -634,7 +644,7 @@ text is a member of some recipient of this text."
(format "%s" (lyskom-get-string 'which-text-include)))))
((prefix-numeric-value current-prefix-arg)))))
(let ((buffer (current-buffer)))
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
(initiate-get-text 'edit 'lyskom-edit-insert-commented no buffer)
(set-buffer buffer)
(sit-for 0)))
......@@ -658,7 +668,7 @@ text is a member of some recipient of this text."
(cond
(no
(goto-char p)
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
(initiate-get-text 'edit thendo no buffer)
(set-buffer buffer))
(t
......@@ -695,7 +705,7 @@ text is a member of some recipient of this text."
(conf-stat (lyskom-read-conf-stat prompt '(all) nil "" t)))
(lyskom-save-excursion
;;(save-excursion
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
;; +++ The information about msg-of-day might be old. We should
;; make sure it is up-to-date.
(let ((text-no (conf-stat->msg-of-day conf-stat)))
......@@ -863,7 +873,7 @@ Point must be located on the line where the subject is."
;; Apply handler.
(set-buffer (process-buffer lyskom-proc))
(set-buffer lyskom-buffer)
(if hnd
(apply hnd text-no dta)))
......
......@@ -107,7 +107,7 @@ Help: \\[describe-mode] ---")
(defvar lyskom-swascii-header-subject nil
"The swascii version of lyskom-header-subject.")
(defconst lyskom-missing-strings
(defconst lyskom-strings-missing
'(cgdag sixjune holdnose))
(defconst lyskom-strings
......@@ -213,7 +213,6 @@ Be ashamed of being You! You have a very good reason.\n\n")
(have-to-read . "You must read an article first.\n")
(review-text-no . "Review article %#1n.\n")
(no-comment-to . "There is no commented article.\n")
(who-letter-to . "Send a letter to whom: ")
......@@ -223,7 +222,7 @@ Be ashamed of being You! You have a very good reason.\n\n")
(who-to-add . "Whom do you want to add: ")
(where-to-add . "To which conference: ")
(where-to-add-self . "Join which conference: ")
(priority-q . "Conference priority? (0 (low) - 255 (high)) ")
(priority-q . "Conference priority? (1 (low) - 255 (high)) ")
(done . "done.\n")
(nope . "didn't work.\n")
......@@ -333,7 +332,7 @@ and you have finished reading. Please come back later.
(not-member-of-conf . "You are not a member of %#1M.\n")
(about-to-change-name-from . "%#1M\n")
(change-name-done . "Done. New name: %[%#2@%#1:M%].\n")
(change-name-nope . "You could't change the name to %#1s.\nError code %#3d. %#2s.\n")
(change-name-nope . "Couldn't change name to %#1s. Error code %#3d. %#2s.\n")
(change-supervisor-from-to . "Change supervisor of %#1M to %#2P...")
(change-supervisor-nope .
"\nDidn't work. Perhaps you are not allowed to change the supervisor of %#1M?\n")
......@@ -570,7 +569,9 @@ Mark the envelope with \"LysKOM bug report\"\n\n")
(set-session-priority . "Set reading level:")
; From review.el:
(no-review-done . "You need to review something before you can review more.\n")
(review-how-many . "Review how many: ")
(review-how-many-more . "Review how many more: ")
(latest-n . "last %#1d")
(first-n . "first %#1d")
(info-by-whom . "%#1s by whom: ")
......@@ -582,11 +583,15 @@ Mark the envelope with \"LysKOM bug report\"\n\n")
(no-review-info . "You are not allowed to review %#1s\n")
(review-info . "Review %#1s")
(review-info-by-to . "Review %#1s by %#2P to %#3M forwards.\n")
(review-more-info-by-to . "Review %#1s by %#2P to %#3M forwards.\n")
(review-rest . "the rest")
(review-more . "%#1d more")
(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")
(review-n-texts . "Review %#1d articles.\n")
(review-marked . "Review %#1d marked articles.\n")
(review-text-no . "Review article %#1n\n")
(review-one-comment . "Review one comment to article %#1n.\n")
(review-many-comments . "Review %#2d comments to article %#1n.\n")
(read-normally-read . "How many articles to you want to review: ")
......@@ -796,7 +801,7 @@ You should set it to a better value.\n")
(go-to-conf-of-marked-prompt . "Review next marked")
(go-to-next-conf-prompt . "Go to next conference")
(go-to-your-mailbox-prompt . "Go to your mailbox")
(the-command . "Command:%#1s")
(the-command . "Command: %#1C")
(error-in-login-hook . "There was an error in your kom-login-hook: %#1s\n")
(give-a-number . "Enter a number: ")
......@@ -850,8 +855,7 @@ Error message: %#1s**************************************************")
(filter-error-bad-not . "Error in the filter specification after 'not'")
(filter-error-unknown-key . "The filter key '%S' is unknown.")
(filter-error-key-arg . "Bad filter data (%S %S)")
(filter-tree
. "Skipping article %#1n \"%#2r\" by %#3P and all its comments.\n")
(filter-tree . "Skipping article %#1n \"%#2r\" by %#3P and all its comments.\n")
(filter-text . "Skipping article %#1n \"%#2r\" by %#3P.\n")
(filter-permanent . "Permanent? ")
(filter-action . "Filter how: ")
......@@ -1019,6 +1023,7 @@ On since %#8s%#9s")
(kom-review-by-to "Review last")
(kom-review-first "Review first")
(kom-review-all "Review all")
(kom-review-more "Review more")
(kom-view-commented-text "Review (the) commented (article)")
(kom-view-previous-commented-text
"Review (the) previouls commented (article)")
......@@ -1141,7 +1146,7 @@ On since %#8s%#9s")
Cf. paragraph-start.")
(defconst lyskom-missing-bindings nil)
(defconst lyskom-keybindings-missing nil)
(if lyskom-mode-map
nil
......@@ -1248,6 +1253,7 @@ Cf. paragraph-start.")
(define-key lyskom-mode-map "rl" 'kom-review-by-to)
(define-key lyskom-mode-map "rf" 'kom-review-first)
(define-key lyskom-mode-map "rA" 'kom-review-all)
(define-key lyskom-mode-map "rM" 'kom-review-more)
(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)
......
No preview for this file type
......@@ -334,6 +334,13 @@ STRING should be given if the last search was by `string-match' on STRING."
(cdr keymap))))))
(lyskom-provide-function set-keymap-parent (keymap new-parent)
(let ((tail keymap))
(while (and tail (cdr tail) (not (eq (car (cdr tail)) 'keymap)))
(setq tail (cdr tail)))
(if tail
(setcdr tail new-parent))))
;;; Local Variables:
;;; eval: (put 'lyskom-traverse 'lisp-indent-hook 2)
;;; eval: (put 'lyskom-provide-macro 'lisp-indent-hook 2)
......
This diff is collapsed.
......@@ -57,6 +57,14 @@
(cond ((null start) "")
(t (substring string start)))))
(defun lyskom-parse-skip-rest-of-token ()
"Skip to the next whitespace"
(let ((c (lyskom-parse-char)))
(while (not (or (= c ?\ )
(= c ?\n)
(= c ?\t)
(= c ?\r)))
(setq c (lyskom-parse-char)))))
(defun lyskom-parse-nonwhite-char ()
"Get next character, skipping whitespace, from lyskom-unparsed-buffer and
......@@ -180,20 +188,37 @@ Signal lyskom-parse-incomplete if there is no nonwhite char to parse."
lyskom-parse-pos
(buffer-string)))))))
(defun lyskom-maybe-parse-1-or-0 ()
"Parse next char and return t if it was 1, nil if it was 0 or 'space if
it was whitespace. Signal lyskom-protocol-error if it was anything else.
Signal lyskom-parse-incomplete if there was nothing to parse."
(let ((char (lyskom-parse-char)))
(cond
((eq char ?0) nil)
((eq char ?1) t)
((or (eq char ? ) (eq char ?\t) (eq char ?\n) (eq char ?\r))
'space)
(t (signal 'lyskom-protocol-error
(list 'lyskom-parse-1-or-0 char
lyskom-parse-pos
(buffer-string)))))))
(defun lyskom-parse-bitstring (default)
"Parse a generic bit string"
(let ((result nil)
(char (lyskom-parse-nonwhite-char)))
(while default
(cond ((= char ?0) (setq result (cons nil result)
default (cdr default)
char (lyskom-parse-char)))
((= char ?1) (setq result (cons t result)
default (cdr default)
char (lyskom-parse-char)))
((or (= char ?\ )