(edmacro-parse-keys): Catch events with spaces in their names.
This commit is contained in:
parent
edfbf712e5
commit
bf2e3fa7a9
1 changed files with 13 additions and 5 deletions
|
@ -686,14 +686,22 @@ This function assumes that the events can be stored in a string."
|
|||
|
||||
(defun edmacro-parse-keys (string &optional need-vector)
|
||||
(let ((case-fold-search nil)
|
||||
(len (length string)) ; We won't alter string in the loop below.
|
||||
(pos 0)
|
||||
(res []))
|
||||
(while (and (< pos (length string))
|
||||
(while (and (< pos len)
|
||||
(string-match "[^ \t\n\f]+" string pos))
|
||||
(let ((word (substring string (match-beginning 0) (match-end 0)))
|
||||
(key nil)
|
||||
(times 1))
|
||||
(setq pos (match-end 0))
|
||||
(let* ((word-beg (match-beginning 0))
|
||||
(word-end (match-end 0))
|
||||
(word (substring string word-beg len))
|
||||
(times 1)
|
||||
key)
|
||||
;; Try to catch events of the form "<as df>".
|
||||
(if (string-match "^<[^ >\t\n\f][^>\t\n\f]*>" word)
|
||||
(setq word (match-string 0 word)
|
||||
pos (+ word-beg (match-end 0)))
|
||||
(setq word (substring string word-beg word-end)
|
||||
pos word-end))
|
||||
(when (string-match "\\([0-9]+\\)\\*." word)
|
||||
(setq times (string-to-number (substring word 0 (match-end 1))))
|
||||
(setq word (substring word (1+ (match-end 1)))))
|
||||
|
|
Loading…
Add table
Reference in a new issue