comparison lisp/utils/symbol-syntax.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 0293115a14e9
children
comparison
equal deleted inserted replaced
69:804d1389bcd6 70:131b0175ea99
75 (or (syntax-table-p result) 75 (or (syntax-table-p result)
76 (error "Non-syntax-table item in alist")) 76 (error "Non-syntax-table item in alist"))
77 result)) 77 result))
78 78
79 (defun make-symbol-syntax-table (in-table) 79 (defun make-symbol-syntax-table (in-table)
80 (let ((osyn (syntax-table)) 80 (let ((out-table (copy-syntax-table in-table)))
81 (out-table (copy-syntax-table in-table)) 81 (map-syntax-table
82 (i 0) 82 #'(lambda (key value)
83 (syntax nil)) 83 (if (eq ?_ (char-syntax-from-code value))
84 (while (< i 256) 84 (put-char-table key (set-char-syntax-in-code value ?w)
85 (setq syntax (aref out-table i)) 85 out-table))
86 (if (eq 3 (logand 255 syntax)) 86 nil)
87 (aset out-table i (logior 2 (logand (lognot 255) syntax)))) 87 out-table)
88 (setq i (1+ i)))
89 out-table)) 88 out-table))
90 89
91 ;; stuff for examining contents of syntax tables 90 ;; stuff for examining contents of syntax tables
92 ;;(show-chars-with-syntax 91 ;;(show-chars-with-syntax
93 ;; '(c-mode-syntax-table 92 ;; '(c-mode-syntax-table
107 (i 0)) 106 (i 0))
108 (or (symbolp table-symbol) 107 (or (symbolp table-symbol)
109 (error "bad argument non-symbol")) 108 (error "bad argument non-symbol"))
110 (while (symbolp table) 109 (while (symbolp table)
111 (setq table (symbol-value table))) 110 (setq table (symbol-value table)))
112 (set-syntax-table table) 111 (map-syntax-table
113 (while (< i 256) 112 #'(lambda (key value)
114 (if (eq syntax (char-syntax i)) 113 (if (eq syntax (char-syntax-from-code value))
115 (setq chars (cons (format "%c" i) chars))) 114 (setq chars (cons key chars)))
116 (setq i (1+ i))) 115 nil)
117 (setq schars (cons (list table-symbol 116 table)
118 (mapconcat 'identity (nreverse chars) "")) 117 (setq schars (cons (list table-symbol (nreverse chars))
119 schars))) 118 schars)))
120 (setq tables (cdr tables))) 119 (setq tables (cdr tables))))
121 (set-syntax-table osyn))
122 (nreverse schars))) 120 (nreverse schars)))
123 121
124 (provide 'symbol-syntax) 122 (provide 'symbol-syntax)