aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
Diffstat (limited to 'admin')
-rwxr-xr-xadmin/merge-gnulib2
-rw-r--r--admin/unidata/unidata-gen.el94
2 files changed, 51 insertions, 45 deletions
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index d4bbf17cb3d..85921ba1ba6 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -40,7 +40,7 @@ GNULIB_MODULES='
40 sig2str socklen stat-time std-gnu11 stdalign stddef stdio 40 sig2str socklen stat-time std-gnu11 stdalign stddef stdio
41 stpcpy strftime strtoimax symlink sys_stat 41 stpcpy strftime strtoimax symlink sys_stat
42 sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub 42 sys_time time time_r time_rz timegm timer-time timespec-add timespec-sub
43 update-copyright utimens 43 update-copyright unlocked-io utimens
44 vla warnings 44 vla warnings
45' 45'
46 46
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index e1e896ce29c..478099c831a 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -1346,50 +1346,56 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
1346 (generator (unidata-prop-generator proplist)) 1346 (generator (unidata-prop-generator proplist))
1347 (default-value (unidata-prop-default proplist)) 1347 (default-value (unidata-prop-default proplist))
1348 (val-list (unidata-prop-val-list proplist)) 1348 (val-list (unidata-prop-val-list proplist))
1349 (table (progn 1349 (check #x400)
1350 (message "Generating %S table..." prop) 1350 table decoder alist)
1351 (funcall generator prop index default-value val-list))) 1351 ;; We compare values in unidata.txt with the ones returned by various
1352 (decoder (char-table-extra-slot table 1)) 1352 ;; generator functions. However, SpecialCasing.txt is read directly by
1353 (alist (and (functionp index) 1353 ;; unidata-gen-table-special-casing--do-load and there is no other file
1354 (funcall index))) 1354 ;; to compare those values with. This is why we’re skipping the check
1355 (check #x400)) 1355 ;; for special casing properties.
1356 (dolist (e unidata-list) 1356 (unless (eq generator 'unidata-gen-table-special-casing)
1357 (let* ((char (car e)) 1357 (setq table (progn
1358 (val1 1358 (message "Generating %S table..." prop)
1359 (if alist (nth 1 (assoc char alist)) 1359 (funcall generator prop index default-value val-list))
1360 (nth index e))) 1360 decoder (char-table-extra-slot table 1))
1361 val2) 1361 (unless (integerp decoder)
1362 (if (and (stringp val1) (= (length val1) 0)) 1362 (setq alist (and (functionp index) (funcall index)))
1363 (setq val1 nil)) 1363 (dolist (e unidata-list)
1364 (unless (or (consp char) 1364 (let ((char (car e)) val1 val2)
1365 (integerp decoder)) 1365 (unless (consp char)
1366 (setq val2 1366 (setq val1 (if alist
1367 (cond ((functionp decoder) 1367 (nth 1 (assoc char alist))
1368 (funcall decoder char (aref table char) table)) 1368 (nth index e)))
1369 (t ; must be nil 1369 (and (stringp val1)
1370 (aref table char)))) 1370 (= (length val1) 0)
1371 (if val1 1371 (setq val1 nil))
1372 (cond ((eq generator 'unidata-gen-table-symbol) 1372 (if val1
1373 (setq val1 (intern val1))) 1373 (cond ((eq generator 'unidata-gen-table-symbol)
1374 ((eq generator 'unidata-gen-table-integer) 1374 (setq val1 (intern val1)))
1375 (setq val1 (string-to-number val1))) 1375 ((eq generator 'unidata-gen-table-integer)
1376 ((eq generator 'unidata-gen-table-character) 1376 (setq val1 (string-to-number val1)))
1377 (setq val1 (string-to-number val1 16))) 1377 ((eq generator 'unidata-gen-table-character)
1378 ((eq generator 'unidata-gen-table-decomposition) 1378 (setq val1 (string-to-number val1 16)))
1379 (setq val1 (unidata-split-decomposition val1)))) 1379 ((eq generator 'unidata-gen-table-decomposition)
1380 (cond ((eq prop 'decomposition) 1380 (setq val1 (unidata-split-decomposition val1))))
1381 (setq val1 (list char))) 1381 (cond ((eq prop 'decomposition)
1382 ((eq prop 'bracket-type) 1382 (setq val1 (list char)))
1383 (setq val1 'n)))) 1383 ((eq prop 'bracket-type)
1384 (when (>= char check) 1384 (setq val1 'n))))
1385 (message "%S %04X" prop check) 1385 (setq val2 (aref table char))
1386 (setq check (+ check #x400))) 1386 (when decoder
1387 (or (equal val1 val2) 1387 (setq val2 (funcall decoder char val2 table)))
1388 ;; <control> characters get a 'name' property of nil 1388 (when (>= char check)
1389 (and (eq prop 'name) (string= val1 "<control>") (null val2)) 1389 (message "%S %04X" prop check)
1390 (insert (format "> %04X %S\n< %04X %S\n" 1390 (setq check (+ check #x400)))
1391 char val1 char val2))) 1391 (or (equal val1 val2)
1392 (sit-for 0)))))))) 1392 ;; <control> characters get a 'name' property of nil
1393 (and (eq prop 'name)
1394 (string= val1 "<control>")
1395 (null val2))
1396 (insert (format "> %04X %S\n< %04X %S\n"
1397 char val1 char val2)))
1398 (sit-for 0))))))))))
1393 1399
1394;; The entry functions. They generate files described in the header 1400;; The entry functions. They generate files described in the header
1395;; comment of this file. 1401;; comment of this file.